{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ui/node_modules/react/index.js","webpack:///./src/ui/src/core/setDisplayMode.js","webpack:///./src/ui/src/core/getAnnotationManager.js","webpack:///./src/ui/src/core/setActiveSearchResult.js","webpack:///./src/ui/src/core/eventListener.js","webpack:///./src/ui/src/core/mergeDocument.js","webpack:///./src/ui/src/core/documentViewers.js","webpack:///./src/ui/src/core/index.js","webpack:///./src/ui/src/core/getSemanticDiffAnnotations.js","webpack:///./src/ui/src/core/setToolMode.js","webpack:///./src/ui/src/core/getToolMode.js","webpack:///./src/ui/src/core/getTool.js","webpack:///./src/ui/src/core/getToolsFromAllDocumentViewers.js","webpack:///./src/ui/src/core/getDisplayMode.js","webpack:///./src/ui/src/core/rotateClockwise.js","webpack:///./src/ui/src/core/rotateCounterClockwise.js","webpack:///./src/ui/src/core/rotatePages.js","webpack:///./src/ui/src/core/movePages.js","webpack:///./src/ui/src/core/removePages.js","webpack:///./src/ui/src/core/getFitMode.js","webpack:///./src/ui/src/core/fitToPage.js","webpack:///./src/ui/src/core/fitToWidth.js","webpack:///./src/ui/src/core/fitToHeight.js","webpack:///./src/ui/src/core/fitToZoom.js","webpack:///./src/ui/src/core/zoomToMouse.js","webpack:///./src/ui/src/core/getZoom.js","webpack:///./src/ui/src/core/zoomTo.js","webpack:///./src/ui/src/core/getTotalPages.js","webpack:///./src/ui/src/core/getCurrentPage.js","webpack:///./src/ui/src/core/setCurrentPage.js","webpack:///./src/ui/src/core/getType.js","webpack:///./src/ui/src/core/getScales.js","webpack:///./src/ui/src/core/isWebViewerServerDocument.js","webpack:///./src/ui/src/core/getSelectedText.js","webpack:///./src/ui/src/core/clearSelection.js","webpack:///./src/ui/src/core/closeDocument.js","webpack:///./src/ui/src/core/getToolModeMap.js","webpack:///./src/ui/src/core/getCurrentUser.js","webpack:///./src/ui/src/core/getIsAdminUser.js","webpack:///./src/ui/src/core/setIsAdminUser.js","webpack:///./src/ui/src/core/exportAnnotations.js","webpack:///./src/ui/src/core/setCurrentUser.js","webpack:///./src/ui/src/core/setReadOnly.js","webpack:///./src/ui/src/core/setScrollViewElement.js","webpack:///./src/ui/src/core/setViewerElement.js","webpack:///./src/ui/src/core/isContinuousDisplayMode.js","webpack:///./src/ui/src/core/isScrollableDisplayMode.js","webpack:///./src/ui/src/core/isSearchResultEqual.js","webpack:///./src/ui/src/core/scrollViewUpdated.js","webpack:///./src/ui/src/core/canModify.js","webpack:///./src/ui/src/core/canModifyContents.js","webpack:///./src/ui/src/core/deleteAnnotations.js","webpack:///./src/ui/src/core/getDisplayAuthor.js","webpack:///./src/ui/src/core/getDocument.js","webpack:///./src/ui/src/core/getCompleteRotation.js","webpack:///./src/ui/src/core/getRotation.js","webpack:///./src/ui/src/core/getPageInfo.js","webpack:///./src/ui/src/core/clearSearchResults.js","webpack:///./src/ui/src/core/getPageSearchResults.js","webpack:///./src/ui/src/core/displayAdditionalSearchResult.js","webpack:///./src/ui/src/core/displayAdditionalSearchResults.js","webpack:///./src/ui/src/core/getActiveSearchResult.js","webpack:///./src/ui/src/core/textSearchInit.js","webpack:///./src/ui/src/core/displaySearchResult.js","webpack:///./src/ui/src/core/getSearchMode.js","webpack:///./src/ui/src/core/getResultCode.js","webpack:///./src/ui/src/core/getPageWidth.js","webpack:///./src/ui/src/core/getPageHeight.js","webpack:///./src/ui/src/core/drawAnnotations.js","webpack:///./src/ui/src/core/getOutlines.js","webpack:///./src/ui/src/core/getSelectedAnnotations.js","webpack:///./src/ui/src/core/updateCopiedAnnotations.js","webpack:///./src/ui/src/core/pasteCopiedAnnotations.js","webpack:///./src/ui/src/core/selectAnnotation.js","webpack:///./src/ui/src/core/selectAnnotations.js","webpack:///./src/ui/src/core/addAnnotations.js","webpack:///./src/ui/src/core/applyRedactions.js","webpack:///./src/ui/src/core/isCreateRedactionEnabled.js","webpack:///./src/ui/src/core/isApplyRedactionEnabled.js","webpack:///./src/ui/src/core/isAnnotationRedactable.js","webpack:///./src/ui/src/core/enableRedaction.js","webpack:///./src/ui/src/core/drawAnnotationsFromList.js","webpack:///./src/ui/src/core/setInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/setPagesUpdatedInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/loadThumbnailAsync.js","webpack:///./src/ui/src/core/loadDocument.js","webpack:///./src/ui/src/core/getSelectedTextQuads.js","webpack:///./src/ui/src/core/getDisplayModeObject.js","webpack:///./src/ui/src/core/getScrollViewElement.js","webpack:///./src/ui/src/core/getAnnotationById.js","webpack:///./src/ui/src/core/isFullPDFEnabled.js","webpack:///./src/ui/src/core/isBlendModeSupported.js","webpack:///./src/ui/src/core/isAnnotationSelected.js","webpack:///./src/ui/src/core/setAnnotationStyles.js","webpack:///./src/ui/src/core/deselectAnnotation.js","webpack:///./src/ui/src/core/deselectAnnotations.js","webpack:///./src/ui/src/core/deselectAllAnnotations.js","webpack:///./src/ui/src/core/jumpToAnnotation.js","webpack:///./src/ui/src/core/insertBlankPages.js","webpack:///./src/ui/src/core/createAnnotationReply.js","webpack:///./src/ui/src/core/setNoteContents.js","webpack:///./src/ui/src/core/setAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/updateAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/getAnnotationsList.js","webpack:///./src/ui/src/core/getAnnotationsLoadedPromise.js","webpack:///./src/ui/src/core/getPrintablePDF.js","webpack:///./src/ui/src/core/getIsReadOnly.js","webpack:///./src/ui/src/core/cancelLoadThumbnail.js","webpack:///./src/ui/src/core/showAnnotations.js","webpack:///./src/ui/src/core/hideAnnotations.js","webpack:///./src/ui/src/core/goToOutline.js","webpack:///./src/ui/src/core/getViewerElement.js","webpack:///./src/ui/src/core/setAnnotationCanvasTransform.js","webpack:///./src/ui/src/core/getAnnotationCopy.js","webpack:///./src/ui/src/core/setWatermark.js","webpack:///./src/ui/src/core/getWatermark.js","webpack:///./src/ui/src/core/getAnnotationByMouseEvent.js","webpack:///./src/ui/src/core/groupAnnotations.js","webpack:///./src/ui/src/core/ungroupAnnotations.js","webpack:///./src/ui/src/core/getNumberOfGroups.js","webpack:///./src/ui/src/core/getGroupAnnotations.js","webpack:///./src/ui/src/core/undo.js","webpack:///./src/ui/src/core/redo.js","webpack:///./src/ui/src/core/updateAnnotationState.js","webpack:///./src/ui/src/core/getFontStyles.js","webpack:///./src/ui/src/core/getFormFieldCreationManager.js","webpack:///./src/ui/src/core/syncNamespaces.js","webpack:///./src/ui/src/core/createDocument.js","webpack:///./src/ui/src/core/getContentEditManager.js","webpack:///./src/ui/src/core/setUserBookmarks.js","webpack:///./src/ui/src/core/setBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/core/setBookmarkShortcutToggleOnFunction.js","webpack:///./src/ui/src/core/setBookmarkShortcutToggleOffFunction.js","webpack:///./src/ui/src/core/createAndApplyScale.js","webpack:///./src/ui/src/core/replaceScales.js","webpack:///./src/ui/src/core/deleteScale.js","webpack:///./src/ui/src/core/getScalePrecision.js","webpack:///./src/ui/src/core/enableAnnotationNumbering.js","webpack:///./src/ui/src/core/getOfficeEditor.js","webpack:///./src/ui/src/core/loadBlankOfficeEditorDocument.js","webpack:///./src/ui/src/core/isValidURI.js","webpack:///./src/ui/src/redux/actions/index.js","webpack:///./src/ui/src/redux/selectors/index.js","webpack:///./src/ui/node_modules/prop-types/index.js","webpack:///./src/ui/src/constants/dataElement.js","webpack:///./src/ui/node_modules/react-redux/es/components/Context.js","webpack:///./src/ui/node_modules/react-redux/es/utils/batch.js","webpack:///./src/ui/node_modules/react-redux/es/utils/Subscription.js","webpack:///./src/ui/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./src/ui/node_modules/react-redux/es/components/Provider.js","webpack:///./src/ui/node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./src/ui/node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./src/ui/node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./src/ui/node_modules/react-redux/es/utils/bindActionCreators.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mergeProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./src/ui/node_modules/react-redux/es/connect/connect.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useStore.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useSelector.js","webpack:///./src/ui/node_modules/react-redux/es/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.description.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.name.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.slice.js","webpack:///./src/ui/node_modules/classnames/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.exec.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.is-array.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.from.js","webpack:///./src/ui/src/components/Button/Button.js","webpack:///./src/ui/src/components/Button/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-property.js","webpack:///./src/ui/src/helpers/getRootNode.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.for-each.js","webpack:///./src/ui/src/constants/customizationVariables.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./src/ui/src/constants/feature.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.concat.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.filter.js","webpack:///./src/ui/src/helpers/getHashParameters.js","webpack:///./src/ui/src/components/Icon/Icon.js","webpack:///./src/ui/src/components/Icon/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.keys.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-primitive.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./src/ui/node_modules/i18next/dist/esm/i18next.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.map.js","webpack:///./src/ui/src/helpers/device.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.create.js","webpack:///./src/ui/node_modules/core-js/internals/global.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./src/ui/src/constants/events.js","webpack:///../src/index.ts","webpack:///./src/ui/node_modules/core-js/internals/export.js","webpack:///./src/ui/src/helpers/fireEvent.js","webpack:///./src/ui/src/helpers/isFocusingElement.js","webpack:///./src/ui/src/helpers/hotkeysManager.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.bind.js","webpack:///./src/ui/src/components/DataElementWrapper/DataElementWrapper.js","webpack:///./src/ui/src/components/DataElementWrapper/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.js","webpack:///./src/ui/src/helpers/getDeviceSize.js","webpack:///./src/ui/src/constants/actionPriority.js","webpack:///./src/ui/node_modules/core-js/internals/function-uncurry-this.js","webpack:///./src/ui/src/constants/map.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.includes.js","webpack:///./src/ui/node_modules/core-js/internals/fails.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.assign.js","webpack:///./src/ui/src/constants/types.js","webpack:///./src/ui/node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-properties.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./src/ui/src/constants/defaultTool.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/node_modules/tslib/tslib.es6.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./src/ui/src/constants/zoomFactors.js","webpack:///./src/ui/node_modules/react-select/dist/index-75b02bac.browser.esm.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.index-of.js","webpack:///./src/ui/src/apis/disableFeatures.js","webpack:///./src/ui/node_modules/core-js/modules/web.timers.js","webpack:///./src/ui/src/helpers/zoom.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/is-callable.js","webpack:///./src/ui/node_modules/react-dom/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/inherits.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.construct.js","webpack:///./src/ui/node_modules/core-js/internals/descriptors.js","webpack:///./src/ui/src/constants/redactionTypes.js","webpack:///./src/ui/node_modules/core-js/internals/function-call.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.join.js","webpack:///./src/ui/src/apis/enableFeatures.js","webpack:///./src/ui/src/constants/panel.js","webpack:///./src/ui/node_modules/core-js/internals/has-own-property.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-string.js","webpack:///./src/ui/node_modules/core-js/internals/to-string.js","webpack:///./src/ui/node_modules/core-js/internals/an-object.js","webpack:///./src/ui/node_modules/core-js/internals/is-object.js","webpack:///./src/ui/src/helpers/officeEditor.js","webpack:///./src/ui/src/helpers/pageManipulationFunctions.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-property.js","webpack:///./src/ui/node_modules/dayjs/dayjs.min.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in.js","webpack:///./src/ui/src/helpers/TouchEventManager.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./src/ui/src/helpers/setToolModeAndGroup.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.some.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.values.js","webpack:///./src/ui/src/helpers/loadDocument.js","webpack:///./src/ui/node_modules/clsx/dist/clsx.m.js","webpack:///./src/ui/src/constants/deviceSizes.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/ui/node_modules/core-js/internals/to-object.js","webpack:///./src/ui/src/constants/signatureModes.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/extends.js","webpack:///./src/ui/src/helpers/portfolio.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.replace.js","webpack:///./src/ui/node_modules/core-js/internals/length-of-array-like.js","webpack:///./src/ui/src/components/Dropdown/Dropdown.js","webpack:///./src/ui/src/components/Dropdown/index.js","webpack:///./src/ui/node_modules/core-js/internals/array-iteration.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-int.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.splice.js","webpack:///./src/ui/node_modules/react-measure/dist/index.esm.js","webpack:///./src/ui/node_modules/core-js/internals/require-object-coercible.js","webpack:///./src/ui/node_modules/core-js/internals/get-built-in.js","webpack:///./src/ui/src/helpers/printCurrentViewHelper.js","webpack:///./src/ui/src/helpers/print.js","webpack:///./src/ui/src/components/ToggleElementButton/ToggleElementButton.js","webpack:///./src/ui/src/components/ToggleElementButton/index.js","webpack:///./src/ui/src/helpers/localStorageManager.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find-index.js","webpack:///./src/ui/node_modules/core-js/internals/to-indexed-object.js","webpack:///./src/ui/node_modules/core-js/internals/is-pure.js","webpack:///./src/ui/node_modules/lodash/debounce.js","webpack:///./src/ui/src/components/Tabs/Tabs.js","webpack:///./src/ui/node_modules/lodash/throttle.js","webpack:///./src/ui/src/helpers/getNumberOfPagesToNavigate.js","webpack:///./src/ui/src/helpers/setCurrentPage.js","webpack:///./src/ui/src/hooks/useOnClickOutside.js","webpack:///./src/ui/node_modules/core-js/internals/internal-state.js","webpack:///./src/ui/node_modules/core-js/internals/to-length.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./src/ui/node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./src/ui/node_modules/core-js/internals/a-callable.js","webpack:///./src/ui/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./src/ui/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./src/ui/node_modules/file-saver/dist/FileSaver.min.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./src/ui/node_modules/redux/es/redux.js","webpack:///./src/ui/src/components/Choice/index.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/object-create.js","webpack:///./src/ui/src/helpers/rotate.js","webpack:///./src/ui/src/constants/sortStrategies.js","webpack:///./src/ui/node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./src/ui/src/helpers/search.js","webpack:///./src/ui/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/index.js","webpack:///./src/ui/src/helpers/getToolStyles.js","webpack:///./src/ui/node_modules/hotkeys-js/dist/hotkeys.esm.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./src/ui/src/components/Tooltip/Tooltip.js","webpack:///./src/ui/src/components/Tooltip/index.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-context.js","webpack:///./src/ui/node_modules/core-js/internals/engine-user-agent.js","webpack:///./src/ui/node_modules/core-js/internals/function-apply.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabsContainer.scss?1596","webpack:///./src/ui/src/helpers/getElements.js","webpack:///./src/ui/src/helpers/getColor.js","webpack:///./src/ui/src/helpers/clickTracker.js","webpack:///./src/ui/node_modules/react-swipeable/es/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-float.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/cjs.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.match.js","webpack:///./src/ui/node_modules/core-js/internals/classof-raw.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/internals/to-absolute-index.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/ui/src/helpers/getLatestActivityDate.js","webpack:///./src/ui/src/helpers/downloadPdf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./src/ui/node_modules/react-select/dist/Select-e1cf49ae.browser.esm.js","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.js","webpack:///./src/ui/src/components/HorizontalDivider/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./src/ui/src/components/ToolButton/ToolButton.js","webpack:///./src/ui/src/components/ToolButton/index.js","webpack:///./src/ui/src/apis/enableTools.js","webpack:///./src/ui/src/apis/disableTools.js","webpack:///./src/ui/src/helpers/getFileAttachments.js","webpack:///./src/ui/src/constants/slider.js","webpack:///./src/ui/node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./src/ui/src/helpers/getFilteredDataElements.js","webpack:///./src/ui/src/redux/actions/internalActions.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/utils.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/utils.js","webpack:///./src/ui/src/constants/theme.js","webpack:///./src/ui/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/engine-v8-version.js","webpack:///./src/ui/node_modules/core-js/internals/get-method.js","webpack:///./src/ui/node_modules/core-js/internals/classof.js","webpack:///./src/ui/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/an-instance.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./src/ui/node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./src/ui/src/helpers/toolStylesExist.js","webpack:///./src/ui/src/helpers/extractPagesWithAnnotations.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/context.js","webpack:///./src/ui/src/hooks/useMedia.js","webpack:///./src/ui/src/constants/languageRules.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.js","webpack:///./src/ui/src/components/CustomElement/CustomElement.js","webpack:///./src/ui/src/components/CustomElement/index.js","webpack:///./src/ui/node_modules/core-js/internals/is-array.js","webpack:///./src/ui/src/helpers/color.js","webpack:///./src/ui/src/helpers/getOverlayPositionBasedOn.js","webpack:///./src/ui/node_modules/core-js/internals/is-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/try-to-string.js","webpack:///./src/ui/node_modules/core-js/internals/shared.js","webpack:///./src/ui/node_modules/core-js/internals/function-name.js","webpack:///./src/ui/node_modules/core-js/internals/promise-native-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/create-property.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.every.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/process/browser.js","webpack:///./src/ui/src/helpers/setToolStyles.js","webpack:///./src/ui/src/helpers/TabManager.js","webpack:///./src/ui/src/apis/setLanguage.js","webpack:///./src/ui/src/helpers/getMeasurementTools.js","webpack:///./src/ui/node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/interfaces.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/predicates.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/offsets.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/supportsPassive.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/OptionsReader.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/TouchBackend.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/math.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/index.js","webpack:///./src/ui/src/constants/defaultTimeFormat.js","webpack:///./src/ui/src/helpers/getAnnotationClass.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./src/ui/src/components/ActionButton/ActionButton.js","webpack:///./src/ui/src/components/ActionButton/index.js","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.starts-with.js","webpack:///./src/ui/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/buffer/index.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-native.js","webpack:///./src/ui/node_modules/core-js/internals/indexed-object.js","webpack:///./src/ui/node_modules/core-js/internals/to-property-key.js","webpack:///./src/ui/node_modules/core-js/internals/uid.js","webpack:///./src/ui/node_modules/core-js/internals/hidden-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-includes.js","webpack:///./src/ui/node_modules/core-js/internals/is-forced.js","webpack:///./src/ui/node_modules/core-js/internals/set-species.js","webpack:///./src/ui/node_modules/core-js/internals/species-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/promise-constructor-detection.js","webpack:///./src/ui/node_modules/core-js/internals/new-promise-capability.js","webpack:///./src/ui/node_modules/core-js/internals/iterators.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./src/ui/node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice-simple.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./src/ui/node_modules/source-map/lib/util.js","webpack:///./src/ui/src/constants/pageNumberPlaceholder.js","webpack:///./src/ui/src/helpers/accessibility.js","webpack:///./src/ui/src/helpers/getPageArrayFromString.js","webpack:///./src/ui/src/components/Spinner/Spinner.js","webpack:///./src/ui/src/components/Spinner/index.js","webpack:///./src/ui/node_modules/dom-helpers/esm/canUseDOM.js","webpack:///./src/ui/node_modules/dom-helpers/esm/scrollbarSize.js","webpack:///./src/ui/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/ui/src/redux/selectors/exposedSelectors.js","webpack:///./src/ui/src/helpers/createTextAnnotationAndSelect.js","webpack:///./src/ui/node_modules/react/jsx-runtime.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/isRef.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./src/ui/src/apis/hotkeys.js","webpack:///./src/ui/src/hooks/useDidUpdate.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.bold.js","webpack:///./src/ui/src/helpers/getPopupPosition.js","webpack:///./src/ui/src/components/Choice/Choice.js","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.js","webpack:///./src/ui/src/components/ColorPalette/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.entries.js","webpack:///./src/ui/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./src/ui/node_modules/core-js/internals/document-create-element.js","webpack:///./src/ui/node_modules/core-js/internals/inspect-source.js","webpack:///./src/ui/node_modules/core-js/internals/shared-key.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-node.js","webpack:///./src/ui/node_modules/core-js/internals/is-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/validate-arguments-length.js","webpack:///./src/ui/node_modules/core-js/internals/iterate.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec.js","webpack:///./src/ui/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./src/ui/node_modules/core-js/internals/inherit-if-required.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim.js","webpack:///./src/ui/node_modules/core-js/internals/whitespaces.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.now.js","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.every.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.join.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.map.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.set.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.some.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/ui/src/components/Button/Button.scss?b814","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/shims.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./src/ui/node_modules/lodash/isString.js","webpack:///./src/ui/src/constants/bookmarksOutlinesShared.scss?470d","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.js","webpack:///./src/ui/src/components/ColorPaletteHeader/index.js","webpack:///./src/ui/src/constants/strokeStyleIcons.js","webpack:///./src/ui/src/components/StyleOption/StyleOption.js","webpack:///./src/ui/src/components/StyleOption/index.js","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.js","webpack:///./src/ui/src/components/LabelTextEditor/index.js","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.js","webpack:///./src/ui/src/components/LineStyleOptions/index.js","webpack:///./src/ui/src/components/StylePopup/StylePopup.js","webpack:///./src/ui/src/components/StylePopup/index.js","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePickerRedux.js","webpack:///./src/ui/src/components/ColorPalettePicker/index.js","webpack:///./src/ui/src/helpers/applyRedactions.js","webpack:///./src/ui/node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///./src/ui/src/apis/searchTextFull.js","webpack:///./src/ui/src/constants/languages.js","webpack:///./src/ui/src/helpers/setVerificationResult.js","webpack:///./src/ui/src/components/SignaturePanel/Spinner/index.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetLocator/WidgetLocator.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetLocator/index.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/WidgetInfo.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/index.js","webpack:///./src/ui/src/components/SignaturePanel/SignaturePanel.js","webpack:///./src/ui/src/components/SignaturePanel/index.js","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.js","webpack:///./src/ui/src/components/TextStylePicker/index.js","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.js","webpack:///./src/ui/src/components/ToolGroupButton/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./src/ui/src/hooks/useArrowFocus.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/wrapConnectorHooks.js","webpack:///./src/ui/node_modules/fast-deep-equal/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./src/ui/node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./src/ui/node_modules/react-select/dist/stateManager-2f2b6f5b.browser.esm.js","webpack:///./src/ui/src/helpers/createFeatureAPI.js","webpack:///./src/ui/src/apis/setToolMode.js","webpack:///./src/ui/src/helpers/isFullscreen.js","webpack:///./src/ui/src/helpers/isDataElementLeftPanel.js","webpack:///./src/ui/src/redux/actions/exposedActions.js","webpack:///./src/ui/src/helpers/headers.js","webpack:///./src/ui/src/helpers/createToolAPI.js","webpack:///./src/ui/src/helpers/getAnnotationCreateToolNames.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/idUtils.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useID.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/useTranslation.js","webpack:///./src/ui/node_modules/blob-stream/index.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/getFetch.cjs","webpack:///./src/ui/src/helpers/MentionsManager.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.italics.js","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.js","webpack:///./src/ui/src/components/ModalWrapper/index.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.js","webpack:///./src/ui/src/constants/measurementScale.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/index.js","webpack:///./src/ui/node_modules/lodash/isObject.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-create.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./src/ui/node_modules/react-select/dist/react-select.browser.esm.js","webpack:///./src/ui/node_modules/core-js/internals/shared-store.js","webpack:///./src/ui/node_modules/core-js/internals/set-global.js","webpack:///./src/ui/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./src/ui/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./src/ui/node_modules/core-js/internals/a-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/perform.js","webpack:///./src/ui/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-properties.js","webpack:///./src/ui/node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/is-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-flags.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./src/ui/node_modules/core-js/internals/advance-string-index.js","webpack:///./src/ui/node_modules/core-js/internals/string-multibyte.js","webpack:///./src/ui/node_modules/object-assign/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.search.js","webpack:///./src/ui/node_modules/core-js/internals/define-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-ins.js","webpack:///./src/ui/node_modules/core-js/internals/array-reduce.js","webpack:///./src/ui/node_modules/core-js/internals/array-sort.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer.js","webpack:///./src/ui/node_modules/core-js/internals/array-fill.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructor.js","webpack:///./src/ui/assets/icons sync ^\\.\\/.*\\.svg$","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/domFns.js","webpack:///./node_modules/node-libs-browser/node_modules/events/events.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./src/ui/node_modules/postcss/lib/declaration.js","webpack:///./src/ui/node_modules/postcss/lib/node.js","webpack:///./src/ui/node_modules/postcss/lib/stringify.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./src/ui/node_modules/postcss/lib/parse.js","webpack:///./src/ui/node_modules/postcss/lib/comment.js","webpack:///./src/ui/node_modules/postcss/lib/at-rule.js","webpack:///./src/ui/node_modules/postcss/lib/container.js","webpack:///./src/ui/node_modules/postcss/lib/rule.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./src/ui/src/helpers/readerMode.js","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.js","webpack:///./src/ui/src/components/OverlayItem/index.js","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.js","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/SignatureIcon.js","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/index.js","webpack:///./src/ui/src/components/Selector/Selector.js","webpack:///./src/ui/src/components/Selector/index.js","webpack:///./src/ui/node_modules/lodash/isUndefined.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/index.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndContext.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useIsomorphicLayoutEffect.js","webpack:///./src/ui/node_modules/lodash/isArray.js","webpack:///./src/ui/node_modules/core-js/internals/create-html.js","webpack:///./src/ui/node_modules/core-js/internals/string-html-forced.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/FilePickerPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/index.js","webpack:///./src/ui/node_modules/dayjs/plugin/localizedFormat.js","webpack:///./src/ui/src/components/Header/Header.scss?48ce","webpack:///./src/ui/node_modules/core-js/modules/es.string.split.js","webpack:///./src/ui/src/components/NoteTextPreview/NoteTextPreview.js","webpack:///./src/ui/src/helpers/toggleFullscreen.js","webpack:///./src/ui/src/components/ReactSelectWebComponentProvider/ReactSelectWebComponentProvider.js","webpack:///./src/ui/src/components/ReactSelectWebComponentProvider/index.js","webpack:///./src/ui/node_modules/core-js/internals/to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./src/ui/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./src/ui/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./src/ui/node_modules/core-js/internals/make-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./src/ui/node_modules/core-js/internals/own-keys.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys-internal.js","webpack:///./src/ui/node_modules/core-js/internals/array-last-index-of.js","webpack:///./src/ui/node_modules/core-js/internals/task.js","webpack:///./src/ui/node_modules/core-js/internals/html.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios.js","webpack:///./src/ui/node_modules/core-js/internals/iterator-close.js","webpack:///./src/ui/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/promise-resolve.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./src/ui/node_modules/core-js/internals/array-for-each.js","webpack:///./src/ui/node_modules/core-js/internals/dom-iterables.js","webpack:///./src/ui/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./src/ui/node_modules/core-js/internals/array-from.js","webpack:///./src/ui/node_modules/core-js/internals/schedulers-fix.js","webpack:///./src/ui/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/iterators-core.js","webpack:///./src/ui/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./src/ui/node_modules/core-js/internals/collection.js","webpack:///./src/ui/node_modules/core-js/internals/internal-metadata.js","webpack:///./src/ui/node_modules/core-js/internals/collection-strong.js","webpack:///./src/ui/node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol-registry.js","webpack:///./src/ui/node_modules/core-js/internals/this-number-value.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-array.js","webpack:///./src/ui/node_modules/core-js/internals/engine-ff-version.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///./src/ui/node_modules/core-js/internals/engine-webkit-version.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-get-flags.js","webpack:///./src/ui/node_modules/core-js/internals/object-assign.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind.js","webpack:///./src/ui/src/helpers/openFilePicker.js","webpack:///./src/ui/src/helpers/copyText.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-float.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-native.js","webpack:///./src/ui/node_modules/core-js/internals/to-index.js","webpack:///./src/ui/node_modules/core-js/internals/to-offset.js","webpack:///./src/ui/node_modules/core-js/internals/native-url.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/string-repeat.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./src/ui/src/components/ToolButton/ToolButton.scss?782e","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.scss?6076","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.js","webpack:///./src/ui/node_modules/lodash/_castPath.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.scss?7156","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/log.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useCollector.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./src/ui/node_modules/lodash/range.js","webpack:///../../src/AsapQueue.ts","webpack:///../../src/TaskFactory.ts","webpack:///./src/ui/node_modules/core-js/modules/es.array.fill.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./src/ui/node_modules/react-select/creatable/dist/react-select.browser.esm.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.scss?e684","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.scss?7421","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.scss?3c74","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.scss?c501","webpack:///./src/ui/src/helpers/getGroupedLinkAnnotations.js","webpack:///./src/ui/src/constants/layoutMode.js","webpack:///./src/ui/node_modules/postcss/lib/css-syntax-error.js","webpack:///./src/ui/node_modules/postcss/lib/stringifier.js","webpack:///./src/ui/node_modules/postcss/lib/processor.js","webpack:///./src/ui/node_modules/postcss/lib/lazy-result.js","webpack:///./src/ui/node_modules/source-map/source-map.js","webpack:///./src/ui/node_modules/source-map/lib/source-map-generator.js","webpack:///./src/ui/node_modules/source-map/lib/base64-vlq.js","webpack:///./src/ui/node_modules/source-map/lib/array-set.js","webpack:///./src/ui/node_modules/postcss/lib/list.js","webpack:///./src/ui/node_modules/postcss/lib/root.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/animationFrame.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/Grid.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/CollectionView.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/Section.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/SectionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/Collection.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ColumnSizer/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/List/List.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/intervalTree.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/Masonry.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/SortDirection.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/SortIndicator.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/Column.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/Table.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","webpack:///./src/ui/src/components/FontSizeDropdown/pdfEditHelper.js","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.js","webpack:///./src/ui/src/components/FontSizeDropdown/index.js","webpack:///./src/ui/src/components/Element/Element.js","webpack:///./src/ui/src/components/Element/index.js","webpack:///./src/ui/src/components/FilePicker/FilePicker.js","webpack:///./src/ui/src/components/FilePicker/index.js","webpack:///./src/ui/src/components/StatefulButton/StatefulButton.js","webpack:///./src/ui/src/components/StatefulButton/index.js","webpack:///./src/ui/src/components/Slider/Slider.js","webpack:///./src/ui/src/components/Slider/index.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/lodash/pickBy.js","webpack:///./src/ui/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///../../src/index.ts","webpack:///./src/ui/node_modules/react-hot-loader/root.js","webpack:///./src/ui/node_modules/postcss/lib/postcss.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/request.js","webpack:///./src/ui/node_modules/react-shadow-dom-retarget-events/index.js","webpack:///./src/ui/src/components/DocumentCropPopup/DimensionsInput.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/useOnCropAnnotationChangedOrSelected.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopupContainer.js","webpack:///./src/ui/src/components/DocumentCropPopup/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/useOnClickPrepareSoundAnnotation.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopupContainer.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/index.js","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.js","webpack:///./src/ui/src/components/ProgressModal/index.js","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.js","webpack:///./src/ui/src/components/PasswordModal/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./src/ui/node_modules/lodash/_assignValue.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.flags.js","webpack:///./src/ui/node_modules/lodash/isObjectLike.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-int.js","webpack:///./src/ui/node_modules/core-js/internals/is-integral-number.js","webpack:///./src/ui/node_modules/lodash/_root.js","webpack:///./src/ui/node_modules/lodash/_baseAssignValue.js","webpack:///./src/ui/node_modules/lodash/eq.js","webpack:///./src/ui/node_modules/lodash/_getAllKeysIn.js","webpack:///./src/ui/node_modules/lodash/_baseGetTag.js","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.scss?6fea","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/internals/native-weak-map.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/microtask.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./src/ui/node_modules/core-js/internals/host-report-errors.js","webpack:///./src/ui/node_modules/core-js/internals/queue.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-browser.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.all.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.catch.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.race.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.reject.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.resolve.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-constructor.js","webpack:///./src/ui/node_modules/react/cjs/react.production.min.js","webpack:///./src/ui/node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./src/ui/node_modules/scheduler/index.js","webpack:///./src/ui/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./src/ui/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/node_modules/core-js/internals/same-value.js","webpack:///./src/ui/node_modules/core-js/internals/path.js","webpack:///./src/ui/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-interval.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-timeout.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/freezing.js","webpack:///./src/ui/node_modules/core-js/internals/date-to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.for.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.stringify.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/get-substitution.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim-forced.js","webpack:///./src/ui/node_modules/core-js/internals/ieee754.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./src/ui/node_modules/core-js/internals/to-positive-integer.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from.js","webpack:///./src/ui/node_modules/core-js/internals/array-copy-within.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///./src/ui/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./src/ui/assets/icons/apryse-logo.svg","webpack:///./src/ui/assets/icons/calibrate.svg","webpack:///./src/ui/assets/icons/digital_signature_error.svg","webpack:///./src/ui/assets/icons/digital_signature_valid.svg","webpack:///./src/ui/assets/icons/digital_signature_warning.svg","webpack:///./src/ui/assets/icons/group-annotations-icon.svg","webpack:///./src/ui/assets/icons/ic-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-calibrate.svg","webpack:///./src/ui/assets/icons/ic-delete.svg","webpack:///./src/ui/assets/icons/ic-file-cad.svg","webpack:///./src/ui/assets/icons/ic-file-doc.svg","webpack:///./src/ui/assets/icons/ic-file-etc.svg","webpack:///./src/ui/assets/icons/ic-file-img.svg","webpack:///./src/ui/assets/icons/ic-file-pdf.svg","webpack:///./src/ui/assets/icons/ic-file-ppt.svg","webpack:///./src/ui/assets/icons/ic-file-xls.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-and-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-redact.svg","webpack:///./src/ui/assets/icons/ic-hamburger-menu.svg","webpack:///./src/ui/assets/icons/ic-indent-decrease.svg","webpack:///./src/ui/assets/icons/ic-indent-increase.svg","webpack:///./src/ui/assets/icons/ic-insert text.svg","webpack:///./src/ui/assets/icons/ic-paragraph.svg","webpack:///./src/ui/assets/icons/ic-replace text.svg","webpack:///./src/ui/assets/icons/ic-wv3d-properties-panel-menu.svg","webpack:///./src/ui/assets/icons/ic_annotation_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_cloudy_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_ellipse_area_black.svg","webpack:///./src/ui/assets/icons/ic_annotation_eraser_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_signature_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_strikeout_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_underline_black_24px.svg","webpack:///./src/ui/assets/icons/ic_bookmarks_black_24px.svg","webpack:///./src/ui/assets/icons/ic_check_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_down_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_left_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_right_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_up_black_24px.svg","webpack:///./src/ui/assets/icons/ic_close_black_24px.svg","webpack:///./src/ui/assets/icons/ic_copy_black_24px.svg","webpack:///./src/ui/assets/icons/ic_crop_black_24px.svg","webpack:///./src/ui/assets/icons/ic_edit_page_24px.svg","webpack:///./src/ui/assets/icons/ic_fileattachment_24px.svg","webpack:///./src/ui/assets/icons/ic_layers_24px.svg","webpack:///./src/ui/assets/icons/ic_pause_24px.svg","webpack:///./src/ui/assets/icons/ic_play_24px.svg","webpack:///./src/ui/assets/icons/ic_select_black_24px.svg","webpack:///./src/ui/assets/icons/ic_snipping_black_24px.svg","webpack:///./src/ui/assets/icons/ic_sound_24px.svg","webpack:///./src/ui/assets/icons/ic_thumbnails_grid_black_24px.svg","webpack:///./src/ui/assets/icons/icon-action-redo.svg","webpack:///./src/ui/assets/icons/icon-action-undo.svg","webpack:///./src/ui/assets/icons/icon-add-file.svg","webpack:///./src/ui/assets/icons/icon-add-folder.svg","webpack:///./src/ui/assets/icons/icon-annotation-select-multiple.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-accepted.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-cancelled.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-completed.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-marked.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-none.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-rejected.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-unmarked.svg","webpack:///./src/ui/assets/icons/icon-arrow-back.svg","webpack:///./src/ui/assets/icons/icon-arrow-down.svg","webpack:///./src/ui/assets/icons/icon-arrow-left.svg","webpack:///./src/ui/assets/icons/icon-arrow-right.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-bottom.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-middle.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-top.svg","webpack:///./src/ui/assets/icons/icon-arrow-up.svg","webpack:///./src/ui/assets/icons/icon-chat-bubble.svg","webpack:///./src/ui/assets/icons/icon-chevron-down.svg","webpack:///./src/ui/assets/icons/icon-chevron-left.svg","webpack:///./src/ui/assets/icons/icon-chevron-right.svg","webpack:///./src/ui/assets/icons/icon-chevron-up.svg","webpack:///./src/ui/assets/icons/icon-close.svg","webpack:///./src/ui/assets/icons/icon-comments-filter.svg","webpack:///./src/ui/assets/icons/icon-compare-change.svg","webpack:///./src/ui/assets/icons/icon-compare-file-open.svg","webpack:///./src/ui/assets/icons/icon-copy.svg","webpack:///./src/ui/assets/icons/icon-cut.svg","webpack:///./src/ui/assets/icons/icon-dark-mode-option.svg","webpack:///./src/ui/assets/icons/icon-delete-line.svg","webpack:///./src/ui/assets/icons/icon-detach-toolbar.svg","webpack:///./src/ui/assets/icons/icon-download.svg","webpack:///./src/ui/assets/icons/icon-drag-handle.svg","webpack:///./src/ui/assets/icons/icon-edit-form-field.svg","webpack:///./src/ui/assets/icons/icon-folder.svg","webpack:///./src/ui/assets/icons/icon-form-field-checkbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-combobox.svg","webpack:///./src/ui/assets/icons/icon-form-field-listbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-radiobutton.svg","webpack:///./src/ui/assets/icons/icon-form-field-signature.svg","webpack:///./src/ui/assets/icons/icon-form-field-text.svg","webpack:///./src/ui/assets/icons/icon-header-chat-line.svg","webpack:///./src/ui/assets/icons/icon-header-compare.svg","webpack:///./src/ui/assets/icons/icon-header-file-picker-line.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen-exit.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-insert-above.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-cover-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-double-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-single-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-clockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-counterclockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-continuous-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-page-by-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-reader.svg","webpack:///./src/ui/assets/icons/icon-header-pan.svg","webpack:///./src/ui/assets/icons/icon-header-print-line.svg","webpack:///./src/ui/assets/icons/icon-header-search.svg","webpack:///./src/ui/assets/icons/icon-header-select-line.svg","webpack:///./src/ui/assets/icons/icon-header-settings-line.svg","webpack:///./src/ui/assets/icons/icon-header-sidebar-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-page.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-width.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-in-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-marquee.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-out-line.svg","webpack:///./src/ui/assets/icons/icon-image-green.svg","webpack:///./src/ui/assets/icons/icon-info.svg","webpack:///./src/ui/assets/icons/icon-keyboard.svg","webpack:///./src/ui/assets/icons/icon-light-mode-option.svg","webpack:///./src/ui/assets/icons/icon-linestyle-cloudy-line.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-1-4-8-4.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-2-2.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-3-6-10-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-4-4.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-4-6-10-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-6-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-square.svg","webpack:///./src/ui/assets/icons/icon-linestyle-none.svg","webpack:///./src/ui/assets/icons/icon-linestyle-solid-line.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-square.svg","webpack:///./src/ui/assets/icons/icon-lock.svg","webpack:///./src/ui/assets/icons/icon-magnifying-glass.svg","webpack:///./src/ui/assets/icons/icon-menu-add.svg","webpack:///./src/ui/assets/icons/icon-menu-align-centre.svg","webpack:///./src/ui/assets/icons/icon-menu-align-left.svg","webpack:///./src/ui/assets/icons/icon-menu-align-right.svg","webpack:///./src/ui/assets/icons/icon-menu-bold.svg","webpack:///./src/ui/assets/icons/icon-menu-both-align.svg","webpack:///./src/ui/assets/icons/icon-menu-centre-align.svg","webpack:///./src/ui/assets/icons/icon-menu-checkmark.svg","webpack:///./src/ui/assets/icons/icon-menu-italic.svg","webpack:///./src/ui/assets/icons/icon-menu-left-align.svg","webpack:///./src/ui/assets/icons/icon-menu-right-align.svg","webpack:///./src/ui/assets/icons/icon-menu-style-line.svg","webpack:///./src/ui/assets/icons/icon-menu-text-underline.svg","webpack:///./src/ui/assets/icons/icon-no-marked-redactions.svg","webpack:///./src/ui/assets/icons/icon-office-editor-bullet-list.svg","webpack:///./src/ui/assets/icons/icon-office-editor-circle.svg","webpack:///./src/ui/assets/icons/icon-office-editor-line-spacing.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-arrow.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-bullet.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-check.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-diamond.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-latin-roman.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-decimal.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-latin-1.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-latin-2.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-roman-latin.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-square-bullet.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-square.svg","webpack:///./src/ui/assets/icons/icon-office-number-list.svg","webpack:///./src/ui/assets/icons/icon-open-folder.svg","webpack:///./src/ui/assets/icons/icon-operation-eraser.svg","webpack:///./src/ui/assets/icons/icon-operation-redo.svg","webpack:///./src/ui/assets/icons/icon-operation-undo.svg","webpack:///./src/ui/assets/icons/icon-page-insertion-insert.svg","webpack:///./src/ui/assets/icons/icon-page-manipulation-extract.svg","webpack:///./src/ui/assets/icons/icon-page-move-down.svg","webpack:///./src/ui/assets/icons/icon-page-move-up.svg","webpack:///./src/ui/assets/icons/icon-page-replacement.svg","webpack:///./src/ui/assets/icons/icon-panel-outlines.svg","webpack:///./src/ui/assets/icons/icon-panel-thumbnail-line.svg","webpack:///./src/ui/assets/icons/icon-paste-without-formatting.svg","webpack:///./src/ui/assets/icons/icon-paste.svg","webpack:///./src/ui/assets/icons/icon-pdf-portfolio.svg","webpack:///./src/ui/assets/icons/icon-pencil-line.svg","webpack:///./src/ui/assets/icons/icon-plus-sign.svg","webpack:///./src/ui/assets/icons/icon-portfolio-file.svg","webpack:///./src/ui/assets/icons/icon-portfolio-folder.svg","webpack:///./src/ui/assets/icons/icon-post-reply.svg","webpack:///./src/ui/assets/icons/icon-redact-panel.svg","webpack:///./src/ui/assets/icons/icon-save.svg","webpack:///./src/ui/assets/icons/icon-signature-plus-disabled.svg","webpack:///./src/ui/assets/icons/icon-signature-plus-sign.svg","webpack:///./src/ui/assets/icons/icon-sync.svg","webpack:///./src/ui/assets/icons/icon-text-bold.svg","webpack:///./src/ui/assets/icons/icon-text-italic.svg","webpack:///./src/ui/assets/icons/icon-text-justify-center.svg","webpack:///./src/ui/assets/icons/icon-text-underline.svg","webpack:///./src/ui/assets/icons/icon-thumbtack.svg","webpack:///./src/ui/assets/icons/icon-tool-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-callout-line.svg","webpack:///./src/ui/assets/icons/icon-tool-changeview.svg","webpack:///./src/ui/assets/icons/icon-tool-check-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-comment-line.svg","webpack:///./src/ui/assets/icons/icon-tool-cross-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-dot-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-fill-and-sign-calendar.svg","webpack:///./src/ui/assets/icons/icon-tool-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-image-line.svg","webpack:///./src/ui/assets/icons/icon-tool-link.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-ellipse-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-polygon-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-cloud-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-distance-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-perimeter.svg","webpack:///./src/ui/assets/icons/icon-tool-model3d.svg","webpack:///./src/ui/assets/icons/icon-tool-more.svg","webpack:///./src/ui/assets/icons/icon-tool-page-redact.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-line.svg","webpack:///./src/ui/assets/icons/icon-tool-redaction-area.svg","webpack:///./src/ui/assets/icons/icon-tool-select-area-redaction.svg","webpack:///./src/ui/assets/icons/icon-tool-select-pages.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-arrow.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-cloud.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-line.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-oval.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polygon.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polyline.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-rectangle.svg","webpack:///./src/ui/assets/icons/icon-tool-signature.svg","webpack:///./src/ui/assets/icons/icon-tool-stamp-line.svg","webpack:///./src/ui/assets/icons/icon-tool-text-free-text.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-squiggly.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-strikethrough.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-underline.svg","webpack:///./src/ui/assets/icons/icon-tool-unlink.svg","webpack:///./src/ui/assets/icons/icon-tools-more-active.svg","webpack:///./src/ui/assets/icons/icon-tools-more-vertical.svg","webpack:///./src/ui/assets/icons/icon-tools-more.svg","webpack:///./src/ui/assets/icons/icon-unposted-comment.svg","webpack:///./src/ui/assets/icons/icon-view.svg","webpack:///./src/ui/assets/icons/icon-watermark-panel.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-in.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-out.svg","webpack:///./src/ui/assets/icons/illustration - empty state - outlines.svg","webpack:///./src/ui/assets/icons/multi select.svg","webpack:///./src/ui/assets/icons/redact-icons-credit-card.svg","webpack:///./src/ui/assets/icons/redact-icons-email.svg","webpack:///./src/ui/assets/icons/redact-icons-image.svg","webpack:///./src/ui/assets/icons/redact-icons-phone-number.svg","webpack:///./src/ui/assets/icons/textselect_cursor.svg","webpack:///./src/ui/assets/icons/ungroup-annotations-icon.svg","webpack:///./src/ui/src/components/Tooltip/Tooltip.scss?f56e","webpack:///./src/ui/src/components/Tooltip/Tooltip.scss","webpack:///./src/ui/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./src/ui/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./src/ui/src/components/Icon/Icon.scss?9b77","webpack:///./src/ui/src/components/Icon/Icon.scss","webpack:///./src/ui/src/components/Button/Button.scss","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.scss?395b","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.scss","webpack:///./src/ui/src/components/ToolButton/ToolButton.scss","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.scss?d050","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.scss","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.scss?b371","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.scss","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.scss","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.scss?a265","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.scss","webpack:///./src/ui/src/components/Slider/Slider.scss?ea05","webpack:///./src/ui/src/components/Slider/Slider.scss","webpack:///./src/ui/src/components/Dropdown/Dropdown.scss?9dbb","webpack:///./src/ui/src/components/Dropdown/Dropdown.scss","webpack:///./src/ui/src/components/StyleOption/StyleOption.scss?17a6","webpack:///./src/ui/src/components/StyleOption/StyleOption.scss","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.scss?ec24","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.scss","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.scss?83c7","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.scss","webpack:///./src/ui/node_modules/lodash/now.js","webpack:///./src/ui/node_modules/lodash/_freeGlobal.js","webpack:///./src/ui/node_modules/lodash/toNumber.js","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.scss?3683","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.scss","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.scss?15d5","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.scss","webpack:///./src/ui/src/components/Choice/Choice.scss?f185","webpack:///./src/ui/src/components/Choice/Choice.scss","webpack:///./src/ui/node_modules/lodash/_arrayMap.js","webpack:///./src/ui/node_modules/lodash/_baseIteratee.js","webpack:///./src/ui/node_modules/lodash/_basePickBy.js","webpack:///./src/ui/node_modules/lodash/_baseGet.js","webpack:///./src/ui/node_modules/lodash/_baseSet.js","webpack:///./src/ui/node_modules/lodash/_defineProperty.js","webpack:///./src/ui/node_modules/lodash/_getNative.js","webpack:///./src/ui/node_modules/lodash/_isIndex.js","webpack:///./src/ui/node_modules/lodash/_toKey.js","webpack:///./src/ui/src/components/StylePopup/StylePopup.scss?fa63","webpack:///./src/ui/src/components/StylePopup/StylePopup.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.scss?5cbb","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.scss","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.scss?adfb","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.scss","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.scss?7ab9","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.scss","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.scss?0df5","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.scss?7472","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.scss","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.scss?f922","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.scss","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.scss?051a","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.scss","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.scss?710e","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.scss","webpack:///./src/ui/src/components/Ribbons/Ribbons.scss?3123","webpack:///./src/ui/src/components/Ribbons/Ribbons.scss","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.scss?199e","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.scss","webpack:///./src/ui/node_modules/redux-persist/lib/storage/createWebStorage.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/getStorage.js","webpack:///./src/ui/src/components/LogoBar/LogoBar.scss?3666","webpack:///./src/ui/src/components/LogoBar/LogoBar.scss","webpack:///./src/ui/src/components/Accessibility/Accessibility.scss?cec5","webpack:///./src/ui/src/components/Accessibility/Accessibility.scss","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.scss?1ba5","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.scss","webpack:///./src/ui/src/components/CustomElement/CustomElement.scss?4b3a","webpack:///./src/ui/src/components/CustomElement/CustomElement.scss","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.scss?1222","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.scss","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.scss?00b5","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.scss","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.scss?ee60","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.scss","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.scss?188d","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.scss","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.scss?a011","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.scss","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.scss?3ff3","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.scss","webpack:///./src/ui/src/components/Header/Header.scss","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.scss?3cc8","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.scss","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.scss?0d94","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.scss","webpack:///./src/ui/node_modules/core-js/modules/es.math.hypot.js","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.scss?0aec","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.scss","webpack:///./src/ui/node_modules/core-js/modules/es.number.parse-float.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/Draggable.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/DraggableCore.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.scss?95de","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.scss","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.scss?8114","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.scss","webpack:///./src/ui/src/components/Element/Element.scss?a607","webpack:///./src/ui/src/components/Element/Element.scss","webpack:///./src/ui/src/components/LeftPanelTabs/LeftPanelTabs.scss?a3dd","webpack:///./src/ui/src/components/LeftPanelTabs/LeftPanelTabs.scss","webpack:///./src/ui/src/components/MoreOptionsContextMenuPopup/MoreOptionsContextMenuPopup.scss?afd1","webpack:///./src/ui/src/components/MoreOptionsContextMenuPopup/MoreOptionsContextMenuPopup.scss","webpack:///./src/ui/src/components/PortfolioItemContent/PortfolioItemContent.scss?eb5b","webpack:///./src/ui/src/components/PortfolioItemContent/PortfolioItemContent.scss","webpack:///./src/ui/src/components/PortfolioItem/PortfolioItem.scss?1371","webpack:///./src/ui/src/components/PortfolioItem/PortfolioItem.scss","webpack:///./src/ui/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./src/ui/node_modules/blob/index.js","webpack:///./src/ui/node_modules/lodash/_createRange.js","webpack:///./src/ui/node_modules/lodash/_baseRange.js","webpack:///./src/ui/node_modules/lodash/_isIterateeCall.js","webpack:///./src/ui/node_modules/lodash/toFinite.js","webpack:///./src/ui/src/constants/bookmarksOutlinesShared.scss","webpack:///./src/ui/src/components/PortfolioPanel/PortfolioPanel.scss?2eaf","webpack:///./src/ui/src/components/PortfolioPanel/PortfolioPanel.scss","webpack:///../../src/asap.ts","webpack:///../../src/makeRequestCall.ts","webpack:///../../src/RawTask.ts","webpack:///../../src/types.ts","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./src/ui/src/components/ThumbnailControls/ThumbnailControls.scss?b6c7","webpack:///./src/ui/src/components/ThumbnailControls/ThumbnailControls.scss","webpack:///./src/ui/src/components/Thumbnail/Thumbnail.scss?24bb","webpack:///./src/ui/src/components/Thumbnail/Thumbnail.scss","webpack:///./src/ui/src/components/DocumentControls/DocumentControls.scss?a520","webpack:///./src/ui/src/components/DocumentControls/DocumentControls.scss","webpack:///./src/ui/src/components/ThumbnailsPanel/ThumbnailsPanel.scss?1157","webpack:///./src/ui/src/components/ThumbnailsPanel/ThumbnailsPanel.scss","webpack:///./src/ui/src/components/OutlineControls/OutlineControls.scss?c5fd","webpack:///./src/ui/src/components/OutlineControls/OutlineControls.scss","webpack:///./src/ui/src/components/OutlineContent/OutlineContent.scss?b097","webpack:///./src/ui/src/components/OutlineContent/OutlineContent.scss","webpack:///./src/ui/src/components/Outline/Outline.scss?faae","webpack:///./src/ui/src/components/Outline/Outline.scss","webpack:///./src/ui/src/components/OutlinesPanel/OutlinesPanel.scss?e27f","webpack:///./src/ui/src/components/OutlinesPanel/OutlinesPanel.scss","webpack:///./src/ui/src/components/BookmarksPanel/BookmarksPanel.scss?a5f6","webpack:///./src/ui/src/components/BookmarksPanel/BookmarksPanel.scss","webpack:///./src/ui/src/components/Layer/Layer.scss?eb0b","webpack:///./src/ui/src/components/Layer/Layer.scss","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.scss?a263","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.scss","webpack:///./src/ui/node_modules/core-js/modules/es.promise.finally.js","webpack:///./src/ui/src/components/Spinner/Spinner.scss?fedb","webpack:///./src/ui/src/components/Spinner/Spinner.scss","webpack:///./src/ui/src/components/FileAttachmentPanel/FileAttachmentPanel.scss?5dbc","webpack:///./src/ui/src/components/FileAttachmentPanel/FileAttachmentPanel.scss","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.int8-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack:///./src/ui/src/components/SignaturePanel/Spinner/Spinner.scss?3b3b","webpack:///./src/ui/src/components/SignaturePanel/Spinner/Spinner.scss","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/SignatureIcon.scss?9d30","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/SignatureIcon.scss","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/WidgetInfo.scss?6bdb","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/WidgetInfo.scss","webpack:///./src/ui/src/components/SignaturePanel/SignaturePanel.scss?5781","webpack:///./src/ui/src/components/SignaturePanel/SignaturePanel.scss","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.scss?298e","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.scss","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabsContainer.scss","webpack:///./src/ui/src/components/LeftPanel/LeftPanel.scss?e1e9","webpack:///./src/ui/src/components/LeftPanel/LeftPanel.scss","webpack:///./src/ui/src/components/RightPanel/RightPanel.scss?670a","webpack:///./src/ui/src/components/RightPanel/RightPanel.scss","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.scss","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.scss?c2df","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.scss","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.scss?eb36","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.scss","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanel.scss?784f","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanel.scss","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItem.scss?7b3a","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItem.scss","webpack:///./src/ui/src/components/NoteTextPreview/NoteTextPreview.scss?f53d","webpack:///./src/ui/src/components/NoteTextPreview/NoteTextPreview.scss","webpack:///./src/ui/src/components/CollapsiblePanelGroup/CollapsiblePanelGroup.scss?491c","webpack:///./src/ui/src/components/CollapsiblePanelGroup/CollapsiblePanelGroup.scss","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroup.scss?0a09","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroup.scss","webpack:///./src/ui/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlay.scss?042b","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlay.scss","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResult.scss?aaaf","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResult.scss","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResultGroup.scss?d79d","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResultGroup.scss","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResults.scss?b882","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResults.scss","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.scss?5626","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.scss?a938","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.scss?9e1e","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.scss?2d07","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.scss?538d","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.scss","webpack:///./src/ui/node_modules/core-js/modules/es.string.pad-start.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.scss?520f","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.scss","webpack:///./src/ui/src/components/Selector/Selector.scss?79eb","webpack:///./src/ui/src/components/Selector/Selector.scss","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.scss?72ab","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.scss","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.scss","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.scss","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.scss","webpack:///./src/ui/src/components/FilePicker/FilePicker.scss?b498","webpack:///./src/ui/src/components/FilePicker/FilePicker.scss","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.scss?9de1","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.scss","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.scss?0c4a","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.scss","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.scss?d656","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.scss","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.scss?016f","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.scss","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.scss?d8fd","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.scss","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.scss?e085","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.scss","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.scss?d052","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.scss","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.scss?165e","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.scss","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.scss?c8af","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.scss","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.scss?94e7","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.scss","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.scss?2acf","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.scss","webpack:///./src/ui/src/components/Panel/Panel.scss?7989","webpack:///./src/ui/src/components/Panel/Panel.scss","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.scss?1ea7","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.scss","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.scss?9f39","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.scss","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.scss?728a","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.scss","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.scss?7318","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.scss","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.scss?4e55","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.scss?0258","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.scss","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.scss?0c65","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.scss","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.scss?8690","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.scss?2bf0","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.scss","webpack:///./src/ui/src/components/ModularComponents/ToolGroupButton/ToolGroupButton.scss?37ab","webpack:///./src/ui/src/components/ModularComponents/ToolGroupButton/ToolGroupButton.scss","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.scss?0e12","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.scss","webpack:///./src/ui/src/components/ModularComponents/GroupedTools/GroupedTools.scss?857d","webpack:///./src/ui/src/components/ModularComponents/GroupedTools/GroupedTools.scss","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.scss?3ee2","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.scss","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.scss?bb43","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.scss","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.scss","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeader.scss?1b41","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeader.scss","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeader.scss?544e","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeader.scss","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeader.scss?e790","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeader.scss","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeader.scss?4f29","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeader.scss","webpack:///./src/ui/src/components/ModularComponents/GenericOutlinesPanel/GenericOutlinesPanel.scss?7276","webpack:///./src/ui/src/components/ModularComponents/GenericOutlinesPanel/GenericOutlinesPanel.scss","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.scss?4fd8","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.scss","webpack:///./src/ui/src/components/ModularComponents/Helpers/ZoomText.scss?bd1a","webpack:///./src/ui/src/components/ModularComponents/Helpers/ZoomText.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.scss?2b60","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.scss","webpack:///./src/ui/src/components/ModularComponents/GroupedToolsOverflowFlyout/GroupedToolsOverflowFlyout.scss?f8b0","webpack:///./src/ui/src/components/ModularComponents/GroupedToolsOverflowFlyout/GroupedToolsOverflowFlyout.scss","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.scss?c60a","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.scss","webpack:///./src/ui/node_modules/dayjs/locale lazy ^\\.\\/.*\\.js$ namespace object","webpack:///./src/ui/src/components/App/App.scss?6285","webpack:///./src/ui/src/components/App/App.scss","webpack:///./node_modules/css-loader/lib/url/escape.js","webpack:///./src/ui/assets/fonts/Lato-Regular.woff","webpack:///./src/ui/assets/fonts/Lato-Italic.woff","webpack:///./src/ui/assets/fonts/Lato-Bold.woff","webpack:///./src/ui/assets/fonts/Lato-BoldItalic.woff","webpack:///./src/ui/assets/fonts/GreatVibes-Regular.woff2","webpack:///./src/ui/assets/fonts/GreatVibes-Regular.woff","webpack:///./src/ui/assets/fonts/Satisfy.woff","webpack:///./src/ui/assets/fonts/Nothing-You-Could-Do.woff","webpack:///./src/ui/assets/fonts/La-Belle-Aurore.woff","webpack:///./src/ui/assets/fonts/Whisper.woff","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.scss?0e84","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.scss","webpack:///./src/ui/node_modules/picocolors/picocolors.browser.js","webpack:///./src/ui/node_modules/postcss/lib/map-generator.js","webpack:///./src/ui/node_modules/source-map/lib/base64.js","webpack:///./src/ui/node_modules/source-map/lib/mapping-list.js","webpack:///./src/ui/node_modules/source-map/lib/source-map-consumer.js","webpack:///./src/ui/node_modules/source-map/lib/binary-search.js","webpack:///./src/ui/node_modules/source-map/lib/quick-sort.js","webpack:///./src/ui/node_modules/source-map/lib/source-node.js","webpack:///./src/ui/node_modules/postcss/lib/warn-once.js","webpack:///./src/ui/node_modules/postcss/lib/result.js","webpack:///./src/ui/node_modules/postcss/lib/warning.js","webpack:///./src/ui/node_modules/postcss/lib/parser.js","webpack:///./src/ui/node_modules/postcss/lib/tokenize.js","webpack:///./src/ui/node_modules/postcss/lib/input.js","webpack:///./src/ui/node_modules/postcss/lib/previous-map.js","webpack:///./src/ui/node_modules/postcss/lib/vendor.js","webpack:///./src/ui/node_modules/core-js/internals/proxy-accessor.js","webpack:///./src/ui/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./src/ui/src/index.scss?47af","webpack:///./src/ui/src/index.scss","webpack:///./src/ui/node_modules/react-i18next/dist/es/I18nextProvider.js","webpack:///./src/ui/node_modules/redux-thunk/es/index.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/index.js","webpack:///./src/ui/src/components/ToolButton/PresetButton.js","webpack:///./src/ui/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureAddBtn.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.js","webpack:///./src/ui/src/components/SignatureStylePopup/index.js","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.js","webpack:///./src/ui/src/components/RubberStampOverlay/index.js","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.js","webpack:///./src/ui/src/helpers/getTextDecoration.js","webpack:///./src/ui/src/components/ToolStylePopup/index.js","webpack:///./src/ui/src/components/ToolsDropdown/index.js","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.js","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.js","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.js","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.js","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.js","webpack:///./src/ui/src/components/ToolsOverlay/index.js","webpack:///./src/ui/src/constants/multiViewerContants.js","webpack:///./src/ui/src/components/Ribbons/Ribbons.js","webpack:///./src/ui/src/components/Ribbons/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.js","webpack:///./src/ui/src/helpers/commonToolbarElements.js","webpack:///./src/ui/src/constants/webFonts.js","webpack:///./src/ui/src/helpers/isContentEditWarningHidden.js","webpack:///./src/ui/src/constants/defaultToolsWithInlineCommentOnAnnotationSelected.js","webpack:///./src/ui/src/redux/initialState.js","webpack:///./src/ui/src/constants/defaultFonts.js","webpack:///./src/ui/src/constants/presetCropDimensions.js","webpack:///./src/ui/src/constants/presetNewPageDimensions.js","webpack:///./src/ui/src/constants/defaultDateTimeFormats.js","webpack:///./src/ui/src/constants/officeEditorFonts.js","webpack:///./src/ui/src/redux/reducers/featureFlagsReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/constants.js","webpack:///./src/ui/node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack:///./src/ui/node_modules/redux-persist/es/createPersistoid.js","webpack:///./src/ui/node_modules/redux-persist/es/getStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/purgeStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/persistReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/persistStore.js","webpack:///./src/ui/src/redux/reducers/viewerReducer.js","webpack:///./src/ui/src/redux/reducers/rootReducer.js","webpack:///./src/ui/src/redux/reducers/searchReducer.js","webpack:///./src/ui/src/redux/reducers/userReducer.js","webpack:///./src/ui/src/redux/reducers/documentReducer.js","webpack:///./src/ui/src/redux/reducers/wv3dPropertiesPanelReducer.js","webpack:///./src/ui/src/redux/reducers/officeEditorReducer.js","webpack:///./src/ui/src/redux/reducers/digitalSignatureValidationReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/integration/react.js","webpack:///./src/ui/src/components/LogoBar/LogoBar.js","webpack:///./src/ui/src/components/LogoBar/index.js","webpack:///./src/ui/src/components/Accessibility/Accessibility.js","webpack:///./src/ui/src/components/Accessibility/index.js","webpack:///./src/ui/src/components/HeaderItems/ScrollGroup.js","webpack:///./src/ui/src/components/HeaderItems/ToolGroupButtonsScroll.js","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.js","webpack:///./src/ui/src/components/HeaderItems/index.js","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.js","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.js","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.js","webpack:///./src/ui/src/helpers/useWindowsDimensions.js","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.js","webpack:///./src/ui/src/components/TabsHeader/index.js","webpack:///./src/ui/src/components/Header/Header.js","webpack:///./src/ui/src/components/Header/ToolsHeader.js","webpack:///./src/ui/src/components/Header/HeaderContainer.js","webpack:///./src/ui/src/components/Header/index.js","webpack:///./src/ui/src/helpers/documentContainerHelper.js","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.js","webpack:///./src/ui/src/components/PageNavOverlay/index.js","webpack:///./src/ui/src/helpers/getActualZoomLevel.js","webpack:///./src/ui/src/helpers/setMaxZoomLevel.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/index.js","webpack:///./src/ui/src/components/ReaderModeViewer/ReaderModeViewer.js","webpack:///./src/ui/src/components/ReaderModeViewer/index.js","webpack:///./src/ui/src/components/LazyLoadWrapper/LazyLoadWrapper.js","webpack:///./src/ui/src/components/LazyLoadWrapper/LazyLoadComponents.js","webpack:///./src/ui/src/components/LazyLoadWrapper/index.js","webpack:///./src/ui/src/hooks/useOnMeasurementToolOrAnnotationSelected/useOnMeasurementToolOrAnnotationSelected.js","webpack:///./src/ui/src/hooks/useOnMeasurementToolOrAnnotationSelected/index.js","webpack:///./src/ui/src/hooks/useOnCountMeasurementAnnotationSelected/index.js","webpack:///./src/ui/src/hooks/useOnCountMeasurementAnnotationSelected/useOnCountMeasurementAnnotationSelected.js","webpack:///./src/ui/src/hooks/usePrevious.js","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.js","webpack:///./src/ui/src/components/DocumentContainer/index.js","webpack:///./src/ui/src/components/LeftPanelTabs/LeftPanelTabs.js","webpack:///./src/ui/src/components/LeftPanelTabs/index.js","webpack:///./src/ui/src/components/PortfolioPanel/PortfolioContext.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/utils.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/disposables.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/decorateHandler.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/DropTarget.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/DragSource.js","webpack:///./src/ui/src/constants/dnd.js","webpack:///./src/ui/src/components/MoreOptionsContextMenuPopup/MoreOptionsContextMenuPopup.js","webpack:///./src/ui/src/components/MoreOptionsContextMenuPopup/index.js","webpack:///./src/ui/src/components/PortfolioItemContent/PortfolioItemContent.js","webpack:///./src/ui/src/components/PortfolioItemContent/index.js","webpack:///./src/ui/src/components/PortfolioItem/PortfolioItem.js","webpack:///./src/ui/src/components/PortfolioItem/index.js","webpack:///./src/ui/src/components/PortfolioPanel/PortfolioDragLayer.js","webpack:///./src/ui/src/components/PortfolioPanel/PortfolioPanel.js","webpack:///./src/ui/src/components/PortfolioPanel/index.js","webpack:///./src/ui/src/components/PageManipulationOverlayButton/PageManipulationOverlayButtonContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlayButton/index.js","webpack:///./src/ui/src/components/ThumbnailControls/ThumbnailControls.js","webpack:///./src/ui/src/components/ThumbnailControls/index.js","webpack:///./src/ui/src/constants/thumbnailSelectionModes.js","webpack:///./src/ui/src/components/Thumbnail/Thumbnail.js","webpack:///./src/ui/src/components/Thumbnail/ThumbnailRedux.js","webpack:///./src/ui/src/components/Thumbnail/index.js","webpack:///./src/ui/src/components/DocumentControls/DocumentControls.js","webpack:///./src/ui/src/components/DocumentControls/index.js","webpack:///./src/ui/src/helpers/pageManipulation.js","webpack:///./src/ui/src/components/ThumbnailsPanel/ThumbnailsPanel.js","webpack:///./src/ui/src/components/ThumbnailsPanel/index.js","webpack:///./src/ui/src/components/Outline/Context.js","webpack:///./src/ui/src/helpers/OutlineUtils.js","webpack:///./src/ui/src/components/OutlineControls/OutlineControls.js","webpack:///./src/ui/src/components/OutlineControls/index.js","webpack:///./src/ui/src/components/OutlineContent/OutlineContent.js","webpack:///./src/ui/src/components/OutlineContent/index.js","webpack:///./src/ui/src/components/Outline/Outline.js","webpack:///./src/ui/src/components/Outline/index.js","webpack:///./src/ui/src/components/OutlinesPanel/OutlinesDragLayer.js","webpack:///./src/ui/src/components/OutlinesPanel/OutlinesPanel.js","webpack:///./src/ui/src/components/OutlinesPanel/index.js","webpack:///./src/ui/src/components/Bookmark/Bookmark.js","webpack:///./src/ui/src/components/Bookmark/index.js","webpack:///./src/ui/src/components/BookmarksPanel/BookmarksPanel.js","webpack:///./src/ui/src/components/BookmarksPanel/index.js","webpack:///./src/ui/src/components/Layer/updateLayerVisibililty.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Label/Label.js","webpack:///./src/ui/src/components/Layer/Layer.js","webpack:///./src/ui/src/components/Layer/index.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.js","webpack:///./src/ui/src/components/LayersPanel/helper.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanelRedux.js","webpack:///./src/ui/src/components/LayersPanel/index.js","webpack:///./src/ui/src/components/FileAttachmentPanel/FileAttachmentPanel.js","webpack:///./src/ui/src/components/FileAttachmentPanel/index.js","webpack:///./src/ui/src/components/ResizeBar/index.js","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsMoreSmall/LeftPanelPageTabsMoreSmall.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsRotateSmall/LeftPanelPageTabsRotateSmall.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsInsertSmall/LeftPanelPageTabsInsertSmall.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/CustomLeftPanelOperations/CustomLeftPanelOperations.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsSmall/LeftPanelPageTabsSmall.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsMore/LeftPanelPageTabsMore.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsInsert/LeftPanelPageTabsInsert.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsRotate/LeftPanelPageTabsRotate.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsOperations/LeftPanelPageTabsOperations.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabs.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsMove/LeftPanelPageTabsMove.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsLarge/LeftPanelPageTabsLarge.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsContainer.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/index.js","webpack:///./src/ui/src/components/LeftPanel/LeftPanel.js","webpack:///./src/ui/src/components/LeftPanel/index.js","webpack:///./src/ui/src/components/RightPanel/RightPanel.js","webpack:///./src/ui/src/components/RightPanel/index.js","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.js","webpack:///./src/ui/src/components/FilePickerHandler/index.js","webpack:///./src/ui/src/components/CopyTextHandler/index.js","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.js","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.js","webpack:///./src/ui/src/components/PrintHandler/index.js","webpack:///./src/ui/src/components/FontHandler/index.js","webpack:///./src/ui/src/components/FontHandler/FontHandler.js","webpack:///./src/ui/node_modules/@virtuoso.dev/urx/dist/urx.esm.js","webpack:///./src/ui/node_modules/@virtuoso.dev/react-urx/dist/react-urx.esm.js","webpack:///./src/ui/node_modules/react-virtuoso/dist/index.m.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanelContext.js","webpack:///./src/ui/src/components/RedactionTextPreview/RedactionTextPreviewContainer.js","webpack:///./src/ui/src/components/RedactionTextPreview/index.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItem.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItemContainer.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/index.js","webpack:///./src/ui/src/components/CollapsiblePanelGroup/CollapsiblePanelGroup.js","webpack:///./src/ui/src/components/CollapsiblePanelGroup/index.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroup.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroupContainer.js","webpack:///./src/ui/src/components/RedactionPageGroup/index.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanel.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/index.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/useOnRedactionAnnotationChanged.js","webpack:///./src/ui/src/components/CreatableMultiSelect/CreatableMultiSelect.js","webpack:///./src/ui/src/components/CreatableMultiSelect/index.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchMultiSelect/RedactionSearchMultiSelect.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchMultiSelect/index.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlay.js","webpack:///./src/ui/src/helpers/multiSearch.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlayContainer.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/index.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResult.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/index.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResultContainer.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResultGroup.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/index.js","webpack:///./src/ui/src/constants/searchStatus.js","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResults.js","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResultsContainer.js","webpack:///./src/ui/src/components/RedactionSearchResults/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/RedactionSearchPanel.js","webpack:///./src/ui/src/hooks/useOnRedactionSearchCompleted/useOnRedactionSearchCompleted.js","webpack:///./src/ui/src/hooks/useOnRedactionSearchCompleted/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/RedactionSearchPanelContainer.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanelContainer.js","webpack:///./src/ui/src/components/RedactionPanel/index.js","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.js","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanelContainer.js","webpack:///./src/ui/src/components/TextEditingPanel/index.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/native.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/rng.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GeneralValuesSection/GeneralValuesSection.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GroupsContainer/GroupsContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertiesElement/PropertiesElement.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanelContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/index.js","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.js","webpack:///./src/ui/src/hooks/useOnSnippingAnnotationChangedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnSnippingAnnotationChangedOrSelected/useOnSnippingAnnotationChangedOrSelected.js","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopupContainer.js","webpack:///./src/ui/src/components/SnippingToolPopup/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldsChanged/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldsChanged/useOnFormFieldsChanged.js","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.js","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicatorContainer.js","webpack:///./src/ui/src/components/FormFieldIndicator/index.js","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.js","webpack:///./src/ui/src/components/MultiTabEmptyPage/index.js","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.js","webpack:///./src/ui/src/components/MultiViewer/DropArea/index.js","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.js","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/index.js","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.js","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/index.js","webpack:///./src/ui/src/components/MultiViewer/CompareZoomOverlay/CompareZoomOverlay.js","webpack:///./src/ui/src/components/MultiViewer/CompareZoomOverlay/index.js","webpack:///./src/ui/src/helpers/getDefaultPageLabels.js","webpack:///./src/ui/src/event-listeners/onBeforeDocumentLoaded.js","webpack:///./src/ui/src/event-listeners/onCheckStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onCrossStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onDisplayModeUpdated.js","webpack:///./src/ui/src/helpers/isDataElementPanel.js","webpack:///./src/ui/src/apis/setZoomLevel.js","webpack:///./src/ui/src/helpers/setUIPropertiesForLayers.js","webpack:///./src/ui/src/event-listeners/onLayersUpdated.js","webpack:///./src/ui/src/event-listeners/onDocumentLoaded.js","webpack:///./src/ui/src/constants/overlays.js","webpack:///./src/ui/src/event-listeners/onDocumentUnloaded.js","webpack:///./src/ui/src/event-listeners/onFitModeUpdated.js","webpack:///./src/ui/src/event-listeners/onRotationUpdated.js","webpack:///./src/ui/src/event-listeners/onToolUpdated.js","webpack:///./src/ui/src/event-listeners/onToolModeUpdated.js","webpack:///./src/ui/src/event-listeners/onZoomUpdated.js","webpack:///./src/ui/src/event-listeners/onPageNumberUpdated.js","webpack:///./src/ui/src/event-listeners/onStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onSignatureAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onAnnotationChanged.js","webpack:///./src/ui/src/event-listeners/onHistoryChanged.js","webpack:///./src/ui/src/event-listeners/onStickyAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onCaretAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFullScreenChange.js","webpack:///./src/ui/src/event-listeners/onUpdateAnnotationPermission.js","webpack:///./src/ui/src/event-listeners/onPagesUpdated.js","webpack:///./src/ui/src/event-listeners/onLocationSelected.js","webpack:///./src/ui/src/event-listeners/onDotStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onRubberStampAnnotationAdded.js","webpack:///./src/ui/src/apis/disableElements.js","webpack:///./src/ui/src/apis/enableElements.js","webpack:///./src/ui/src/event-listeners/onReadOnlyModeChanged.js","webpack:///./src/ui/src/event-listeners/onPageComplete.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentDataAvailable.js","webpack:///./src/ui/src/helpers/getSignatureDataToStore.js","webpack:///./src/ui/src/event-listeners/onSignatureSaved.js","webpack:///./src/ui/src/event-listeners/onSignatureDeleted.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeStarted.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeEnded.js","webpack:///./src/ui/src/event-listeners/onDigitalSignatureAvailable.js","webpack:///./src/ui/src/event-listeners/onImageContentAdded.js","webpack:///./src/ui/src/event-listeners/onInitialSaved.js","webpack:///./src/ui/src/event-listeners/onInitialDeleted.js","webpack:///./src/ui/src/event-listeners/onContentEditModeStarted.js","webpack:///./src/ui/src/event-listeners/onContentEditModeEnded.js","webpack:///./src/ui/src/event-listeners/onContentBoxEditEnded.js","webpack:///./src/ui/src/event-listeners/onContentBoxEditStarted.js","webpack:///./src/ui/src/helpers/eventHandler.js","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.js","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/index.js","webpack:///./src/ui/src/helpers/setupDocViewer.js","webpack:///./src/ui/src/constants/defaultToolStylesMap.js","webpack:///./src/ui/src/helpers/setDefaultToolStyles.js","webpack:///./src/ui/src/helpers/documentViewerHelper.js","webpack:///./src/ui/src/helpers/multiViewerHelper.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.js","webpack:///./src/ui/src/components/MultiViewer/index.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/index.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/index.js","webpack:///./src/ui/src/components/WatermarkPanel/TextWatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkList.js","webpack:///./src/ui/src/components/WatermarkPanel/ImageWatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanelContainer.js","webpack:///./src/ui/src/components/WatermarkPanel/index.js","webpack:///./src/ui/src/components/Panel/Panel.js","webpack:///./src/ui/src/components/Panel/index.js","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.js","webpack:///./src/ui/src/components/ModularComponents/CustomButton/index.js","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.js","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/index.js","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.js","webpack:///./src/ui/src/components/ModularComponents/Divider/index.js","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.js","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.js","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/index.js","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.js","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.js","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/index.js","webpack:///./src/ui/src/components/ModularComponents/Helpers/responsiveness-helper.js","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.js","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/index.js","webpack:///./src/ui/src/components/ModularComponents/ToolGroupButton/ToolGroupButton.js","webpack:///./src/ui/src/components/ModularComponents/ToolGroupButton/index.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControlsContainer.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/index.js","webpack:///./src/ui/src/components/ModularComponents/GroupedTools/GroupedTools.js","webpack:///./src/ui/src/components/ModularComponents/GroupedTools/index.js","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.js","webpack:///./src/ui/src/components/ModularComponents/ToolButton/index.js","webpack:///./src/ui/src/components/ModularComponents/InnerItem/InnerItem.js","webpack:///./src/ui/src/components/ModularComponents/InnerItem/index.js","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.js","webpack:///./src/ui/src/components/ModularHeaderItems/index.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/index.js","webpack:///./src/ui/src/hooks/useFloatingHeaderSelectors/index.js","webpack:///./src/ui/src/hooks/useFloatingHeaderSelectors/useFloatingHeaderSelectors.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/index.js","webpack:///./src/ui/src/hooks/useResizeObserver/useResizeObserver.js","webpack:///./src/ui/src/hooks/useResizeObserver/index.js","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/RightHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/TopHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/GenericOutlinesPanel/OutlinesDragLayer.js","webpack:///./src/ui/src/components/ModularComponents/GenericOutlinesPanel/GenericOutlinesPanel.js","webpack:///./src/ui/src/components/ModularComponents/GenericOutlinesPanel/index.js","webpack:///./src/ui/src/components/ModularComponents/Helpers/ZoomText.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/index.js","webpack:///./src/ui/src/helpers/flyoutHelper.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutContainer/FlyoutContainer.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutContainer/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.js","webpack:///./src/ui/src/components/ModularComponents/GroupedToolsOverflowFlyout/GroupedToolsOverflowFlyout.js","webpack:///./src/ui/src/components/ModularComponents/GroupedToolsOverflowFlyout/index.js","webpack:///./src/ui/src/hooks/useOnTextSelected/index.js","webpack:///./src/ui/src/hooks/useOnTextSelected/useOnTextSelected.js","webpack:///./src/ui/src/hooks/useOnRightClick/useOnRightClick.js","webpack:///./src/ui/src/hooks/useOnRightClick/index.js","webpack:///./src/ui/src/hooks/useOnContextMenuOpen/index.js","webpack:///./src/ui/src/hooks/useOnContextMenuOpen/useOnContextMenuOpen.js","webpack:///./src/ui/src/hooks/useOnAnnotationPopupOpen/useOnAnnotationPopupOpen.js","webpack:///./src/ui/src/hooks/useOnAnnotationPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/useOnFormFieldAnnotationAddedOrSelected.js","webpack:///./src/ui/src/hooks/useOnFreeTextEdit/index.js","webpack:///./src/ui/src/hooks/useOnFreeTextEdit/useOnFreeTextEdit.js","webpack:///./src/ui/src/hooks/useOnInlineCommentPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnInlineCommentPopupOpen/useOnInlineCommentPopupOpen.js","webpack:///./src/ui/src/hooks/useOnRightClickAnnotation/useOnRightClickAnnotation.js","webpack:///./src/ui/src/hooks/useOnRightClickAnnotation/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationContentOverlayOpen/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationContentOverlayOpen/useOnAnnotationContentOverlayOpen.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/index.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.js","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingWrapper.js","webpack:///./src/ui/src/components/App/App.js","webpack:///./src/ui/src/helpers/setDefaultDisabledElements.js","webpack:///./src/ui/src/components/App/index.js","webpack:///./src/ui/src/constants/fitMode.js","webpack:///./src/ui/src/constants/toolbar.js","webpack:///./src/ui/src/constants/redactionSearchPatterns.js","webpack:///./src/ui/src/apis/addSearchListener.js","webpack:///./src/ui/src/apis/addSortStrategy.js","webpack:///./src/ui/src/helpers/createPopupAPI.js","webpack:///./src/ui/src/apis/annotationPopup.js","webpack:///./src/ui/src/helpers/castStringToArray.js","webpack:///./src/ui/src/apis/closeElements.js","webpack:///./src/ui/src/apis/contextMenuPopup.js","webpack:///./src/ui/src/apis/disableAnnotations.js","webpack:///./src/ui/src/apis/disableDownload.js","webpack:///./src/ui/src/apis/disableElement.js","webpack:///./src/ui/src/apis/disableFilePicker.js","webpack:///./src/ui/src/apis/disableHighContrastMode.js","webpack:///./src/ui/src/apis/disableLocalStorage.js","webpack:///./src/ui/src/apis/disableMeasurement.js","webpack:///./src/ui/src/apis/disableNativeScrolling.js","webpack:///./src/ui/src/apis/disableNotesPanel.js","webpack:///./src/ui/src/apis/disableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/disablePrint.js","webpack:///./src/ui/src/apis/disableRedaction.js","webpack:///./src/ui/src/apis/disableTextSelection.js","webpack:///./src/ui/src/apis/disableTool.js","webpack:///./src/ui/src/apis/disableTouchScrollLock.js","webpack:///./src/ui/src/apis/displayErrorMessage.js","webpack:///./src/ui/src/apis/downloadPdf.js","webpack:///./src/ui/src/apis/enableAllElements.js","webpack:///./src/ui/src/apis/enableAnnotations.js","webpack:///./src/ui/src/apis/enableDownload.js","webpack:///./src/ui/src/apis/enableElement.js","webpack:///./src/ui/src/apis/enableHighContrastMode.js","webpack:///./src/ui/src/apis/enableFilePicker.js","webpack:///./src/ui/src/apis/enableLocalStorage.js","webpack:///./src/ui/src/apis/enableMeasurement.js","webpack:///./src/ui/src/apis/enableNativeScrolling.js","webpack:///./src/ui/src/apis/enableNotesPanel.js","webpack:///./src/ui/src/apis/enablePrint.js","webpack:///./src/ui/src/apis/enableRedaction.js","webpack:///./src/ui/src/apis/enableTextSelection.js","webpack:///./src/ui/src/apis/enableTool.js","webpack:///./src/ui/src/apis/enableTouchScrollLock.js","webpack:///./src/ui/src/apis/extractPagesWithAnnotations.js","webpack:///./src/ui/src/apis/focusNote.js","webpack:///./src/ui/src/apis/getAnnotationUser.js","webpack:///./src/ui/src/apis/getBBAnnotManager.js","webpack:///./src/ui/src/apis/getCurrentLanguage.js","webpack:///./src/ui/src/apis/getCurrentPageNumber.js","webpack:///./src/ui/src/apis/getFitMode.js","webpack:///./src/ui/src/apis/getLayoutMode.js","webpack:///./src/ui/src/apis/getPageCount.js","webpack:///./src/ui/src/apis/getSelectors.js","webpack:///./src/ui/src/apis/getSideWindowVisibility.js","webpack:///./src/ui/src/apis/getShowSideWindow.js","webpack:///./src/ui/src/apis/getToolMode.js","webpack:///./src/ui/src/apis/getZoomLevel.js","webpack:///./src/ui/src/apis/getMaxZoomLevel.js","webpack:///./src/ui/src/apis/getMinZoomLevel.js","webpack:///./src/ui/src/apis/goToFirstPage.js","webpack:///./src/ui/src/apis/goToLastPage.js","webpack:///./src/ui/src/apis/goToNextPage.js","webpack:///./src/ui/src/apis/goToPrevPage.js","webpack:///./src/ui/src/apis/hideOutlineControl.js","webpack:///./src/ui/src/apis/isAdminUser.js","webpack:///./src/ui/src/apis/isElementDisabled.js","webpack:///./src/ui/src/apis/isElementOpen.js","webpack:///./src/ui/src/apis/isHighContrastModeEnabled.js","webpack:///./src/ui/src/apis/isReadOnly.js","webpack:///./src/ui/src/apis/isToolDisabled.js","webpack:///./src/ui/src/apis/isFullscreen.js","webpack:///./src/ui/src/apis/loadDocument.js","webpack:///./src/ui/src/apis/mentions.js","webpack:///./src/ui/src/apis/menuOverlay.js","webpack:///./src/ui/src/apis/openElement.js","webpack:///./src/ui/src/apis/openElements.js","webpack:///./src/ui/src/apis/print.js","webpack:///./src/ui/src/apis/printInBackground.js","webpack:///./src/ui/src/apis/cancelPrint.js","webpack:///./src/ui/src/apis/registerTool.js","webpack:///./src/ui/src/apis/removeSearchListener.js","webpack:///./src/ui/src/apis/rotateClockwise.js","webpack:///./src/ui/src/apis/rotateCounterClockwise.js","webpack:///./src/ui/src/apis/saveAnnotations.js","webpack:///./src/ui/src/apis/searchText.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelModelData.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelSchema.js","webpack:///./src/ui/src/apis/setActiveHeaderGroup.js","webpack:///./src/ui/src/apis/setActiveLeftPanel.js","webpack:///./src/ui/src/apis/setTimezone.js","webpack:///./src/ui/src/apis/setAdminUser.js","webpack:///./src/ui/src/apis/setAnnotationUser.js","webpack:///./src/ui/src/constants/mapPaletteToAnnotationColorProperty.js","webpack:///./src/ui/src/constants/mapAnnotationColorPropertyToPalette.js","webpack:///./src/ui/src/apis/setActivePalette.js","webpack:///./src/ui/src/apis/setColorPalette.js","webpack:///./src/ui/src/apis/setPageReplacementModalFileList.js","webpack:///./src/ui/src/apis/setCurrentPageNumber.js","webpack:///./src/ui/src/apis/addCustomModal.js","webpack:///./src/ui/src/apis/setCustomNoteFilter.js","webpack:///./src/ui/src/apis/setInlineCommentFilter.js","webpack:///./src/ui/src/apis/setCustomPanel.js","webpack:///./src/ui/src/apis/exportBookmarks.js","webpack:///./src/ui/src/apis/importBookmarks.js","webpack:///./src/ui/src/apis/setFitMode.js","webpack:///./src/ui/src/apis/setHeaderItems.js","webpack:///./src/ui/src/apis/setIconColor.js","webpack:///./src/ui/src/apis/setTranslations.js","webpack:///./src/ui/src/apis/setLayoutMode.js","webpack:///./src/ui/src/apis/setMaxZoomLevel.js","webpack:///./src/ui/src/apis/setMinZoomLevel.js","webpack:///./src/ui/src/apis/setNoteDateFormat.js","webpack:///./src/ui/src/apis/setPrintedNoteDateFormat.js","webpack:///./src/ui/src/apis/setNotesPanelSort.js","webpack:///./src/ui/src/apis/setPageLabels.js","webpack:///./src/ui/src/apis/setPrintQuality.js","webpack:///./src/ui/src/apis/setDefaultPrintOptions.js","webpack:///./src/ui/src/apis/setSelectedTab.js","webpack:///./src/ui/src/apis/setSideWindowVisibility.js","webpack:///./src/ui/src/apis/setNotesPanelSortStrategy.js","webpack:///./src/ui/src/apis/setSwipeOrientation.js","webpack:///./src/ui/src/helpers/cssVariablesParser.js","webpack:///./src/ui/src/apis/setTheme.js","webpack:///./src/ui/src/constants/highContrastLight.scss","webpack:///./src/ui/src/constants/light.scss","webpack:///./src/ui/src/constants/highContrastDark.scss","webpack:///./src/ui/src/constants/dark.scss","webpack:///./src/ui/src/apis/setToolbarGroup.js","webpack:///./src/ui/src/apis/createToolbarGroup.js","webpack:///./src/ui/src/apis/setZoomList.js","webpack:///./src/ui/src/apis/showOutlineControl.js","webpack:///./src/ui/src/apis/showWarningMessage.js","webpack:///./src/ui/src/apis/syncNamespaces.js","webpack:///./src/ui/src/apis/textPopup.js","webpack:///./src/ui/src/apis/toggleFullScreen.js","webpack:///./src/ui/src/apis/toolDefaultStyleUpdateFromAnnotationPopup.js","webpack:///./src/ui/src/apis/unregisterTool.js","webpack:///./src/ui/src/apis/updateElement.js","webpack:///./src/ui/src/apis/updateTool.js","webpack:///./src/ui/src/apis/useEmbeddedPrint.js","webpack:///./src/ui/src/apis/setDisplayedSignaturesFilterFunction.js","webpack:///./src/ui/src/apis/setMeasurementUnits.js","webpack:///./src/ui/src/apis/setMaxSignaturesCount.js","webpack:///./src/ui/src/apis/setSignatureFonts.js","webpack:///./src/ui/src/apis/disableReplyForAnnotations.js","webpack:///./src/ui/src/apis/getCustomData.js","webpack:///./src/ui/src/apis/setCustomMeasurementOverlayInfo.js","webpack:///./src/ui/src/apis/setNoteTransformFunction.js","webpack:///./src/ui/src/apis/setCustomNoteSelectionFunction.js","webpack:///./src/ui/src/apis/setCustomApplyRedactionsHandler.js","webpack:///./src/ui/src/apis/setCustomMultiViewerSyncHandler.js","webpack:///./src/ui/src/apis/setCustomMultiViewerAcceptedFileFormats.js","webpack:///./src/ui/src/apis/setSearchResults.js","webpack:///./src/ui/src/apis/setActiveResult.js","webpack:///./src/ui/src/apis/setAnnotationContentOverlayHandler.js","webpack:///./src/ui/src/apis/overrideSearchExecution.js","webpack:///./src/ui/src/apis/reactElements.js","webpack:///./src/ui/src/apis/verificationOptions.js","webpack:///./src/ui/src/apis/notesPanel.js","webpack:///./src/ui/src/apis/thumbnailsPanel.js","webpack:///./src/ui/src/apis/toggleReaderMode.js","webpack:///./src/ui/src/apis/toggleElementVisibility.js","webpack:///./src/ui/src/apis/setAnnotationReadState.js","webpack:///./src/ui/src/apis/getAnnotationReadState.js","webpack:///./src/ui/src/apis/enableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/enableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/disablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/enablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/addEventListener.js","webpack:///./src/ui/src/apis/removeEventListener.js","webpack:///./src/ui/src/apis/enableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/disableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/isInDesktopOnlyMode.js","webpack:///./src/ui/src/apis/pageManipulationOverlay.js","webpack:///./src/ui/src/apis/multiPageManipulationControls.js","webpack:///./src/ui/src/apis/thumbnailControlMenu.js","webpack:///./src/ui/src/apis/getWatermarkModalOptions.js","webpack:///./src/ui/src/apis/enableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/willUseEmbeddedPrinting.js","webpack:///./src/ui/src/apis/reloadOutline.js","webpack:///./src/ui/src/apis/fonts.js","webpack:///./src/ui/src/apis/TabManagerAPI.js","webpack:///./src/ui/src/apis/getAvailableLanguages.js","webpack:///./src/ui/src/apis/replaceRedactionSearchPattern.js","webpack:///./src/ui/src/apis/disableApplyCropWarningModal.js","webpack:///./src/ui/src/apis/enableApplyCropWarningModal.js","webpack:///./src/ui/src/apis/disableApplySnippingWarningModal.js","webpack:///./src/ui/src/apis/enableApplySnippingWarningModal.js","webpack:///./src/ui/src/apis/setPresetCropDimensions.js","webpack:///./src/ui/src/apis/setPresetNewPageDimensions.js","webpack:///./src/ui/src/apis/addDateTimeFormat.js","webpack:///./src/ui/src/apis/addRedactionSearchPattern.js","webpack:///./src/ui/src/apis/removeRedactionSearchPattern.js","webpack:///./src/ui/src/apis/getAnnotationStylePopupTabs.js","webpack:///./src/ui/src/apis/setAnnotationStylePopupTabs.js","webpack:///./src/ui/src/apis/getZoomStepFactors.js","webpack:///./src/ui/src/apis/setZoomStepFactors.js","webpack:///./src/ui/src/apis/enableBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/apis/disableBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/apis/showFormFieldIndicators.js","webpack:///./src/ui/src/apis/hideFormFieldIndicators.js","webpack:///./src/ui/src/apis/signSignatureWidget.js","webpack:///./src/ui/src/apis/addModularHeaders.js","webpack:///./src/ui/src/apis/getModularHeader.js","webpack:///./src/ui/src/apis/getModularHeaderList.js","webpack:///./src/ui/src/apis/setGroupedItemsGap.js","webpack:///./src/ui/src/apis/setGroupedItemsJustifyContent.js","webpack:///./src/ui/src/apis/setGroupedItemsGrow.js","webpack:///./src/ui/src/apis/outlinesPanel.js","webpack:///./src/ui/src/apis/ModularComponents/item.js","webpack:///./src/ui/src/apis/ModularComponents/groupedItems.js","webpack:///./src/ui/src/apis/ModularComponents/modularHeader.js","webpack:///./src/ui/src/apis/ModularComponents/customButton.js","webpack:///./src/ui/src/apis/ModularComponents/toolButton.js","webpack:///./src/ui/src/apis/ModularComponents/ribbonItem.js","webpack:///./src/ui/src/apis/ModularComponents/ribbonGroup.js","webpack:///./src/ui/src/apis/ModularComponents/toggleElementButton.js","webpack:///./src/ui/src/apis/ModularComponents/toolGroupButton.js","webpack:///./src/ui/src/apis/ModularComponents/zoom.js","webpack:///./src/ui/src/apis/ModularComponents/flyout.js","webpack:///./src/ui/src/apis/ModularComponents/groupedTools.js","webpack:///./src/ui/src/apis/setMultiViewerSyncScrollingMode.js","webpack:///./src/ui/src/apis/setTextSignatureQuality.js","webpack:///./src/ui/src/apis/getTextSignatureQuality.js","webpack:///./src/ui/src/apis/measurementScale.js","webpack:///./src/ui/src/apis/getLocalizedText.js","webpack:///./src/ui/src/apis/getDocumentViewer.js","webpack:///./src/ui/src/apis/multiViewerSync.js","webpack:///./src/ui/src/apis/userSettings.js","webpack:///./src/ui/src/apis/addPanel.js","webpack:///./src/ui/src/apis/setGrayscaleDarknessFactor.js","webpack:///./src/ui/src/apis/FlyoutsAPI.js","webpack:///./src/ui/src/apis/setClickMiddleware.js","webpack:///./src/ui/src/constants/featureFlags.js","webpack:///./src/ui/src/apis/enableFeatureFlag.js","webpack:///./src/ui/src/apis/disableFeatureFlag.js","webpack:///./src/ui/src/apis/enterMultiViewerMode.js","webpack:///./src/ui/src/apis/exitMultiViewerMode.js","webpack:///./src/ui/src/apis/index.js","webpack:///./src/ui/src/helpers/getBackendPromise.js","webpack:///./src/ui/src/helpers/wildCardMatch.js","webpack:///./src/ui/src/helpers/loadScript.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/index.js","webpack:///./src/ui/src/helpers/setupI18n.js","webpack:///./src/ui/src/helpers/logDebugInfo.js","webpack:///./src/ui/src/index.js","webpack:///./src/ui/src/helpers/loadCustomCSS.js","webpack:///./src/ui/src/helpers/openURI.js","webpack:///./src/ui/src/apis/closeDocument.js","webpack:///./src/ui/src/helpers/setEnableAnnotationNumbering.js","webpack:///./src/ui/src/helpers/setUserPermission.js","webpack:///./src/ui/src/helpers/setAutoSwitch.js","webpack:///./src/ui/src/helpers/setupLoadAnnotationsFromServer.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/domUtils.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useFocus.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/matchesType.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropManagerImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/equality.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/registry.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOperation.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/refCount.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/dirtiness.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/stateId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/coords.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropMonitorImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/interfaces.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/contracts.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/HandlerRegistryImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/createDragDropManager.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Check.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/ChevronDown.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Circle.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Close.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Download.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Error.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Hide.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Info.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Menu.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/MultiPage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/RotateRight.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Search.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Show.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/SinglePage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Success.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Warning.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Icon/Icon.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useAccessibleFocus.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Choice/Choice.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/withTranslation.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Input/Input.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/registration.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/DropTargetMonitorImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/TargetConnector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/SourceConnector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/DragSourceMonitorImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndProvider.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useFocusTrap.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useCurrentRef.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/FocusTrap/FocusTrap.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","12","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","documentViewerKey","core","getDocumentViewer","getAnnotationManager","getEventToObjectMap","documentViewer","annotManager","contentEditManager","getContentEditManager","historyManager","getAnnotationHistoryManager","editBoxManager","getEditBoxManager","formFieldCreationManager","getFormFieldCreationManager","measurementManager","getMeasurementManager","cursorPropertiesUpdated","selectionPropertiesUpdated","officeDocumentEdited","signatureSaved","signatureDeleted","annotationsLoaded","tap","longTap","click","dblClick","displayPageLocation","keyDown","keyUp","mouseEnter","mouseLeave","mouseLeftDown","mouseLeftUp","mouseMove","mouseRightDown","mouseRightUp","pageComplete","readOnlyModeChanged","searchInProgress","activeSearchResultChanged","searchResultsChanged","textSelected","beginRendering","finishedRendering","beforeDocumentLoaded","displayModeUpdated","documentLoaded","documentUnloaded","fitModeUpdated","rotationUpdated","toolUpdated","toolModeUpdated","zoomUpdated","pageNumberUpdated","pagesUpdated","Events","COMPARE_ANNOTATIONS_LOADED","documentToMerge","position","getDocument","mergeDocument","loadDocument","doc","filename","getFilename","pages","documentViewerMap","Map","getSemanticDiffAnnotations","getDocumentViewers","Array","from","values","number","setDocumentViewer","set","deleteDocumentViewer","setToolMode","toolName","forEach","docViewer","getTool","getToolMode","getToolsFromAllDocumentViewers","map","setDisplayMode","displayModeManager","getDisplayModeManager","displayMode","isVirtualDisplayEnabled","Core","VirtualDisplayMode","DisplayMode","getDisplayMode","rotateClockwise","rotateCounterClockwise","rotatePages","arr","rotation","movePages","pageArray","newLocation","removePages","getFitMode","fitToPage","setFitMode","FitMode","FitPage","fitToWidth","FitWidth","fitToHeight","FitHeight","fitToZoom","Zoom","zoomToMouse","zoomFactor","mouseEvent","xOffset","querySelector","offsetWidth","headerHeight","offsetHeight","headerToolsHeight","yOffset","getZoom","getZoomLevel","zoomTo","x","y","getTotalPages","getPageCount","getCurrentPage","setCurrentPage","pageNumber","getType","getScales","isWebViewerServerDocument","getSelectedText","clearSelection","closeDocument","getToolModeMap","getCurrentUser","getIsAdminUser","isUserAdmin","setIsAdminUser","isAdmin","documentViewers","promoteUserToAdmin","demoteUserFromAdmin","exportAnnotations","options","setCurrentUser","userName","setReadOnly","isReadOnly","enableReadOnlyMode","disableReadOnlyMode","setScrollViewElement","element","setViewerElement","isContinuousDisplayMode","isContinuous","isScrollableDisplayMode","IsScrollable","isSearchResultEqual","resultA","resultB","Search","scrollViewUpdated","canModify","annotation","canModifyContents","deleteAnnotations","getDisplayAuthor","userId","getCompleteRotation","getRotation","getPageInfo","clearSearchResults","getPageSearchResults","displayAdditionalSearchResult","result","displayAdditionalSearchResults","results","getActiveSearchResult","setActiveSearchResult","textSearchInit","searchValue","searchMode","isFullSearch","handleSearchResult","displaySearchResult","getSearchMode","Mode","getResultCode","ResultCode","getPageWidth","getPageHeight","drawAnnotations","overrideCanvas","majorRedraw","overrideContainer","getOutlines","callback","getBookmarks","then","outlines","getSelectedAnnotations","updateCopiedAnnotations","pasteCopiedAnnotations","selectAnnotation","selectAnnotations","annotations","addAnnotations","applyRedactions","isCreateRedactionEnabled","isApplyRedactionEnabled","isAnnotationRedactable","enableRedaction","enable","disableRedaction","drawAnnotationsFromList","setInternalAnnotationsTransform","setPagesUpdatedInternalAnnotationsTransform","loadThumbnailAsync","pageNum","requestId","loadThumbnail","thumb","getSelectedTextQuads","getDisplayModeObject","getScrollViewElement","getAnnotationById","Id","isFullPDFEnabled","isBlendModeSupported","isAnnotationSelected","setAnnotationStyles","newStyles","deselectAnnotation","deselectAnnotations","deselectAllAnnotations","jumpToAnnotation","insertBlankPages","insertBeforeThesePages","width","height","createAnnotationReply","reply","setNoteContents","content","setAnnotationRichTextStyle","style","updateAnnotationRichTextStyle","getAnnotationsList","getAnnotationsLoadedPromise","getPrintablePDF","addEventListener","eventListener","eventToObjectMap","removeEventListener","getIsReadOnly","isReadOnlyModeEnabled","cancelLoadThumbnail","showAnnotations","hideAnnotations","goToOutline","outline","displayBookmark","getViewerElement","setAnnotationCanvasTransform","annotCanvasContext","zoom","getAnnotationCopy","setWatermark","watermarkOptions","getWatermark","getAnnotationByMouseEvent","groupAnnotations","primaryAnnotation","annotationsToGroup","ungroupAnnotations","getNumberOfGroups","getGroupAnnotations","undo","redo","updateAnnotationState","state","stateModel","getFontStyles","FontStyles","syncNamespaces","namespaces","createDocument","sourceDoc","docOptions","setUserBookmarks","bookmarks","setBookmarkIconShortcutVisibility","isEnabled","setBookmarkShortcutToggleOnFunction","setBookmarkShortcutToggleOffFunction","createAndApplyScale","scale","applyTo","replaceScales","originalScales","deleteScale","getScalePrecision","enableAnnotationNumbering","getOfficeEditor","loadBlankOfficeEditorDocument","isValidURI","exposedActions","internalActions","exposedSelectors","DataElements","LEGACY_RICH_TEXT_POPUP","ANNOTATION_NOTE_CONNECTOR_LINE","ANNOTATION_STYLE_POPUP","ANNOTATION_STYLE_POPUP_BACK_BUTTON","ANNOTATION_STYLE_POPUP_BACK_BUTTON_CONTAINER","INLINE_COMMENT_POPUP_EXPAND_BUTTON","INLINE_COMMENT_POPUP_CLOSE_BUTTON","LOGO_BAR","COLOR_PALETTE","OPACITY_SLIDER","STROKE_THICKNESS_SLIDER","FONT_SIZE_SLIDER","STYLE_OPTION","STYLE_POPUP","SCALE_INPUT_CONTAINER","PRECISION_INPUT_CONTAINER","STYLE_POPUP_TEXT_STYLE_CONTAINER","STYLE_POPUP_COLORS_CONTAINER","STYLE_POPUP_LABEL_TEXT_CONTAINER","REDACTION_PANEL","REDACTION_PANEL_TOGGLE","WV3D_PROPERTIES_PANEL","WV3D_PROPERTIES_PANEL_TOGGLE","LEFT_PANEL","OUTLINE_PANEL","OUTLINE_MULTI_SELECT","OUTLINE_CONTROLS","OUTLINE_ADD_NEW_BUTTON_CONTAINER","OUTLINE_ADD_NEW_BUTTON","OUTLINE_MOVE_UP_BUTTON","OUTLINE_MOVE_DOWN_BUTTON","OUTLINE_MOVE_OUTWARD_BUTTON","OUTLINE_MOVE_INWARD_BUTTON","BOOKMARK_PANEL","BOOKMARK_MULTI_SELECT","BOOKMARK_SHORTCUT_OPTION","BOOKMARK_ADD_NEW_BUTTON_CONTAINER","BOOKMARK_ADD_NEW_BUTTON","NOTES_PANEL","FORM_FIELD_INDICATOR_CONTAINER","WATERMARK_PANEL","WATERMARK_PANEL_TOGGLE","WATERMARK_PANEL_IMAGE_TAB","WATERMARK_PANEL_TEXT_TAB","SEARCH_PANEL","TEXT_EDITING_PANEL","COMPARE_PANEL","PORTFOLIO_PANEL","PORTFOLIO_PANEL_BUTTON","PORTFOLIO_ADD_FILE","PORTFOLIO_ADD_FOLDER","PORTFOLIO_ADD_NEW_BUTTON","CALIBRATION_POPUP_BUTTON","CALIBRATION_MODAL","NotesPanel","DefaultHeader","INPUT_CONTAINER","COMMENTS_COUNTER","SORT_ROW","ADD_REPLY_ATTACHMENT_BUTTON","MULTITABS_EMPTY_PAGE","SCALE_OVERLAY_CONTAINER","MEASUREMENT_OVERLAY","VIEW_CONTROLS_OVERLAY","VIEW_CONTROLS_OVERLAY_BUTTON","SEARCH_OVERLAY","MENU_OVERLAY","MENU_OVERLAY_BUTTON","ZOOM_OVERLAY","ZOOM_OVERLAY_BUTTON","PAGE_MANIPULATION_OVERLAY","PAGE_MANIPULATION_OVERLAY_BUTTON","TOOLS_OVERLAY","STAMP_OVERLAY","SIGNATURE_OVERLAY","REDACTION_OVERLAY","ANNOTATION_CONTENT_OVERLAY","THUMBNAILS_CONTROL_ROTATE_POPUP","THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER","THUMBNAILS_CONTROL_MANIPULATE_POPUP","THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER","THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL","THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER","RUBBER_STAMP_TAB_HEADER","STANDARD_STAMPS_PANEL_BUTTON","CUSTOM_STAMPS_PANEL_BUTTON","STANDARD_STAMPS_PANEL","CUSTOM_STAMPS_PANEL","CREATE_CUSTOM_STAMP_BUTTON","DELETE_CUSTOM_STAMP_BUTTON","ANNOTATION_POPUP","FORM_FIELD_EDIT_POPUP","TEXT_POPUP","CONTEXT_MENU_POPUP","INLINE_COMMENT_POPUP","TOOL_STYLE_POPUP","RICH_TEXT_POPUP","AUDIO_PLAYBACK_POPUP","DOCUMENT_CROP_POPUP","SNIPPING_TOOL_POPUP","PAGE_REDACT_MODAL","LINK_MODAL","LANGUAGE_MODAL","FILTER_MODAL","CONTENT_EDIT_LINK_MODAL","SCALE_MODAL","INSERT_PAGE_MODAL","SETTINGS_MODAL","SAVE_MODAL","PRINT_MODAL","SIGNATURE_MODAL","SIGNATURE_VALIDATION_MODAL","ERROR_MODAL","PASSWORD_MODAL","CUSTOM_STAMP_MODAL","PAGE_REPLACEMENT_MODAL","LOADING_MODAL","PROGRESS_MODAL","WARNING_MODAL","MODEL3D_MODAL","COLOR_PICKER_MODAL","OPEN_FILE_MODAL","CUSTOM_MODAL","CREATE_PORTFOLIO_MODAL","ANNOTATION_USER_FILTER_PANEL_BUTTON","ANNOTATION_COLOR_FILTER_PANEL_BUTTON","ANNOTATION_TYPE_FILTER_PANEL_BUTTON","ANNOTATION_STATUS_FILTER_PANEL_BUTTON","SETTINGS_GENERAL_BUTTON","SETTINGS_KEYBOARD_BUTTON","SETTINGS_ADVANCED_BUTTON","SETTINGS_LANGUAGE_SECTION","SETTINGS_LANGUAGE_DROPDOWN","SETTINGS_THEME_SECTION","PORTFOLIO_UPLOAD_FILES_TAB","PORTFOLIO_UPLOAD_FOLDER_TAB","PORTFOLIO_MODAL_ADD_ITEM_TRIGGER","SAVED_SIGNATURES_TAB","NOTE_MULTI_SELECT_MODE_BUTTON","NOTE_MULTI_REPLY_BUTTON","NOTE_MULTI_STATE_BUTTON","NOTE_MULTI_STYLE_BUTTON","NOTE_MULTI_GROUP_BUTTON","NOTE_MULTI_UNGROUP_BUTTON","NOTE_MULTI_DELETE_BUTTON","SAVED_SIGNATURES_PANEL_BUTTON","SAVED_INTIALS_PANEL_BUTTON","SAVED_FULL_SIGNATURES_PANEL","SAVED_INITIALS_PANEL","MULTI_VIEWER_SAVE_DOCUMENT_BUTTON","OFFICE_EDITOR_TOOLS_HEADER","OFFICE_EDITOR_TOOLS_HEADER_INSERT_IMAGE","OFFICE_EDITOR_FILE_NAME","INSERT_BLANK_PAGE_TAB","INSERT_FROM_FILE_TAB","INSERT_BLANK_PAGE_PANEL","INSERT_FROM_FILE_PANEL","VIEW_TOOLBAR_GROUP","ANNOTATE_TOOLBAR_GROUP","SHAPES_TOOLBAR_GROUP","REDACT_TOOLBAR_GROUP","INSERT_TOOLBAR_GROUP","MEASURE_TOOLBAR_GROUP","EDIT_TOOLBAR_GROUP","EDIT_TEXT_TOOLBAR_GROUP","FILL_AND_SIGN_TOOLBAR_GROUP","FORMS_TOOLBAR_GROUP","TOOLBAR_GROUPS","CREATE_PORTFOLIO_BUTTON","PRINT_QUALITY","PRINT_WATERMARK","ReactReduxContext","createContext","createListenerCollection","batch","first","last","clear","notify","listener","next","listeners","subscribe","isSubscribed","prev","nullListeners","createSubscription","store","parentSub","unsubscribe","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","Boolean","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","_ref","context","children","contextValue","previousState","getState","Context","Provider","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","action","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","apply","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","current","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","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","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","props","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","ref","Connect","memo","forwarded","is","shallowEqual","objA","objB","keysA","keys","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","arguments","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","arg","factories","strictEqual","a","b","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","TO_STRING_TAG_SUPPORT","defineBuiltIn","toString","unsafe","toIndexedObject","addToUnscopables","Iterators","InternalStateModule","f","defineIterator","IS_PURE","DESCRIPTORS","setInternalState","getInternalState","getterFor","iterated","kind","this","index","done","Arguments","charAt","String","string","point","global","DOMIterables","DOMTokenListPrototype","ArrayIteratorMethods","createNonEnumerableProperty","wellKnownSymbol","ITERATOR","TO_STRING_TAG","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","METHOD_NAME","defineWellKnownSymbol","$","uncurryThis","hasOwn","isCallable","isPrototypeOf","copyConstructorProperties","NativeSymbol","SymbolPrototype","description","EmptyStringDescriptionStore","SymbolWrapper","constructor","NATIVE_SYMBOL","symbolToString","symbolValueOf","valueOf","regexp","replace","stringSlice","configurable","symbol","desc","forced","FUNCTION_NAME_EXISTS","EXISTS","FunctionPrototype","Function","functionToString","nameRE","regExpExec","exec","isArray","isConstructor","isObject","toAbsoluteIndex","lengthOfArrayLike","createProperty","arrayMethodHasSpeciesSupport","un$Slice","HAS_SPECIES_SUPPORT","SPECIES","max","Math","proto","start","end","Constructor","O","k","fin","classNames","classes","argType","inner","join","default","stat","obj","writable","checkCorrectnessOfIteration","iterable","NOOP","stopPropagation","preventDefault","propTypes","isActive","PropTypes","bool","mediaQueryClassName","img","label","oneOfType","title","color","dataElement","className","onClick","func","onDoubleClick","onMouseUp","isSubmitType","ariaLabel","role","hideTooltipShortcut","useI18String","shouldPassActiveDocumentViewerKeyToOnClickHandler","Button","useSelector","selectors","isElementDisabled","getCustomElementOverrides","getActiveDocumentViewerKey","removeElement","customOverrides","activeDocumentViewerKey","disable","disabled","tabIndex","strokeColor","fillColor","iconClassName","forceTooltipPosition","hideOnClick","onClickAnnouncement","useTranslation","customOverrideClasses","hidden","screenSize","onClickHandler","aLabel","shortcutKey","indexOf","ariaKeyshortcuts","shortcutAria","isBase64","trim","startsWith","imgToShow","createAnnouncement","el","id","Date","now","classList","add","body","getElementById","innerText","removeChild","actuallyDisabled","getClickMiddleWare","ClickedItemTypes","BUTTON","isGlyph","includes","shouldRenderTooltip","active","data-element","aria-label","aria-keyshortcuts","Icon","glyph","Tooltip","hideShortcut","forcePosition","React","sham","rootNode","getRootNode","isApryseWebViewerWebComponent","elementList","getElementsByTagName","foundNode","shadowRoot","mounted","getInstanceID","host","getAttribute","getInstanceNode","PLACEMENT","TOP","BOTTOM","LEFT","RIGHT","POSITION","START","CENTER","END","JUSTIFY_CONTENT","SPACE_BETWEEN","SPACE_AROUND","SPACE_EVENLY","DIRECTION","ROW","COLUMN","ITEM_TYPE","STATEFUL_BUTTON","GROUPED_ITEMS","GROUPED_TOOLS","RIBBON_ITEM","DIVIDER","TOGGLE_BUTTON","RIBBON_GROUP","TOOL_GROUP_BUTTON","TOOL_BUTTON","ZOOM","FLYOUT","OPACITY_MODES","STATIC","DYANMIC","OPACITY_LEVELS","FULL","LOW","NONE","DEFAULT_STYLES","PADDING","WIDTH","BORDER_COLOR","BORDER_STYLE","DEFAULT_GAP","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","list","idCountMap","identifiers","item","base","count","concat","css","media","sourceMap","references","updater","addStyle","insertStyleElement","attributes","nonce","insert","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","splice","useSourceMap","cssMapping","sourceMapping","sourceURLs","sources","source","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","self","ReferenceError","Measurement","Ribbons","Annotations","Download","FilePicker","LocalStorage","InlineComment","RightClickAnnotationPopup","Print","Redaction","TextSelection","TouchScrollLock","Copy","MultipleViewerMerging","ThumbnailMerging","ThumbnailReordering","ThumbnailMultiselect","PageNavigation","MouseWheelZoom","MathSymbols","OutlineEditing","NotesPanelVirtualizedList","NotesShowLastUpdatedDate","MultiTab","ChangeView","ContentEdit","MultiViewerMode","SideBySideView","Initials","SavedSignaturesTab","WatermarkPanel","WatermarkPanelImageTab","Panel","LegacyRichTextPopup","ComparePages","Portfolio","fails","toObject","arraySpeciesCreate","V8_VERSION","IS_CONCAT_SPREADABLE","TypeError","IS_CONCAT_SPREADABLE_SUPPORT","array","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arity","len","E","A","isForced","inheritIfRequired","isSymbol","toPrimitive","getOwnPropertyNames","getOwnPropertyDescriptor","thisNumberValue","NativeNumber","NumberPrototype","arraySlice","charCodeAt","toNumeric","primValue","toNumber","argument","third","radix","maxCode","digits","code","it","NaN","parseInt","NumberWrapper","dummy","split","j","$filter","callbackfn","paramCorrections","paramsToStringify","param","defaultValue","correctedParam","val","getHashParameter","icon","createRef","updateSvg","prevProps","isInlineSvg","domElement","svg","DOMParser","parseFromString","svgElement","require","dangerouslySetInnerHTML","__html","PureComponent","isRequired","nativeKeys","defineSymbolToPrimitive","dateToPrimitive","TO_PRIMITIVE","DatePrototype","_objectSpread","ownKeys","getOwnPropertySymbols","sym","consoleLogger","log","args","output","warn","baseLogger","Logger","concreteLogger","init","prefix","logger","debug","_len","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","_this","cloned","observer","_cloned","defer","res","rej","makeString","getLastOfPath","path","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","prop","regexEscape","str","_entityMap","isIE10","navigator","userAgent","_EventEmitter","ResourceStore","defaultNS","keySeparator","lng","silent","addNamespaces","emit","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","process","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","interpolator","nestingRegexp","parts","lastKey","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","toLowerCase","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","fallbackValue","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","option","substring","capitalize","toUpperCase","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","deprecate","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","find","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","1","Number","2","3","4","5","6","7","8","9","10","11","13","14","15","16","17","18","19","20","21","22","createRules","rules","numbers","plurals","PluralResolver","rule","getRule","idx","noAbs","abs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","RegExp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","missingInterpolationHandler","regex","safeValue","todo","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","test","elem","reduce","v","Connector","backend","queue","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","q","_getLastOfPath2","what","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","ret","tDescription","_format","transformOptions","noop","i18next","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","changeLanguage","usedCallback","append","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","opts","rest","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","membersToCopy","$map","opera","maxthon","edge","isWebComponent","isMobile","innerWidth","MOBILE_SIZE","clientWidth","isIEEdge","isIE11","isFirefox","isIE","checkForIOS13","platform","maxTouchPoints","isIOS","isIOSFullScreenSupported","documentElement","webkitRequestFullScreen","isAndroid","isMobileDevice","isMobileDeviceFunc","isMac","appVersion","isWindows","isChrome","isSafari","isChromeOniOS","isFirefoxOniOS","check","globalThis","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","getPrototypeOf","setPrototypeOf","invariant","condition","argIndex","framesToPop","setGlobal","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","noTargetGet","fireEvent","eventName","CustomEvent","detail","bubbles","cancelable","createEvent","initEvent","dispatchEvent","fireError","LOAD_ERROR","isEditingFreetext","annot","FreeTextAnnotation","some","getEditor","hasFocus","activeElement","HTMLInputElement","HTMLTextAreaElement","tagName","Shortcuts","ROTATE_CLOCKWISE","ROTATE_COUNTER_CLOCKWISE","NUMPAD_ROTATE_CLOCKWISE","NUMPAD_ROTATE_COUNTER_CLOCKWISE","COPY","PASTE","UNDO","REDO","OPEN_FILE","SEARCH","ZOOM_IN","ZOOM_OUT","NUMPAD_ZOOM_IN","NUMPAD_ZOOM_OUT","FIT_SCREEN_WIDTH","PRINT","BOOKMARK","PREVIOUS_PAGE","NEXT_PAGE","UP","DOWN","SWITCH_PAN","SELECT","PAN","ARROW","CALLOUT","ERASER","FREEHAND","IMAGE","LINE","STICKY_NOTE","ELLIPSE","RECTANGLE","RUBBER_STAMP","FREETEXT","SIGNATURE","SQUIGGLY","HIGHLIGHT","STRIKEOUT","UNDERLINE","HOME","keyMap","shortcut","aria","Keys","CTRL_SHIFT_EQUAL","COMMAND_SHIFT_EQUAL","CTRL_SHIFT_MINUS","COMMAND_SHIFT_MINUS","CTRL_SHIFT_NUM_ADD","COMMAND_SHIFT_NUM_ADD","CTRL_SHIFT_NUM_SUBTRACT","COMMAND_SHIFT_NUM_SUBTRACT","CTRL_C","COMMAND_C","CTRL_V","COMMAND_V","CTRL_Z","COMMAND_Z","CTRL_Y","COMMAND_SHIFT_Z","CTRL_O","COMMAND_O","CTRL_F","COMMAND_F","CTRL_EQUAL","COMMAND_EQUAL","CTRL_MINUS","COMMAND_MINUS","CTRL_NUM_ADD","COMMAND_NUM_ADD","CTRL_NUM_SUBTRACT","COMMAND_NUM_SUBTRACT","CTRL_0","COMMAND_0","CTRL_P","COMMAND_P","CTRL_B","COMMAND_B","ENTER","PAGE_UP","PAGE_DOWN","SPACE","ESCAPE","P","C","F","I","L","N","R","Q","T","S","G","H","K","U","concatKeys","splitKey","ShortcutKeys","ToolNameHotkeyMap","AnnotationEdit","Pan","AnnotationCreateArrow","AnnotationCreateCallout","AnnotationEraserTool","AnnotationCreateFreeHand","AnnotationCreateStamp","AnnotationCreateLine","AnnotationCreateSticky","AnnotationCreateEllipse","AnnotationCreateRectangle","AnnotationCreateFreeText","AnnotationCreateSignature","AnnotationCreateTextSquiggly","AnnotationCreateTextHighlight","AnnotationCreateTextStrikeout","AnnotationCreateTextUnderline","AnnotationCreateRubberStamp","unbindedHotkeysMap","defaultHotkeysScope","HotkeysManager","initialize","hotkeys","keyHandlerMap","createKeyHandlerMap","prevToolName","shortcutKeyMap","getShortcutKeyMap","didInitializeAllKeys","setScope","formBuilderDisabledKeys","handler","enableHotkey","_handler","keyup","keydown","scope","currentTarget","toLocaleLowerCase","off","unbind","hotkeyName","copyText","actions","closeElement","isFocusingElement","openFilePicker","isElementOpen","toggleElement","isMultiViewerMode","zoomIn","zoomOut","print","isEmbedPrintSupported","getSortStrategy","getColorMap","openElement","setActiveLeftPanel","currentPageIndex","addBookmark","getNumberOfPagesToNavigate","scrollViewElement","scrollHeight","clientHeight","scrollTop","currentPage","createToolHotkeyHandler","setToolModeAndGroup","closeElements","setToolbarGroup","createTextAnnotationAndSelect","TextSquigglyAnnotation","TextHighlightAnnotation","TextStrikeoutAnnotation","TextUnderlineAnnotation","pageCount","openElements","getOpenElements","currentToolName","isSignatureModalOpen","Tools","ToolNames","setShortcutKey","setShortcutKeyMap","hasConflict","command","enableShortcut","disableShortcut","node","DataElementWrapper","useIsDisabledWithDefaultValue","$includes","isMobileSize","useMedia","isTabletSize","TABLET_SIZE","isTabletAndMobileSize","isDesktopSize","PRIORITY_THREE","PRIORITY_TWO","PRIORITY_ONE","NATIVE_BIND","fn","annotationMapKeys","FREE_HAND","FREE_HAND_HIGHLIGHT","FREE_TEXT","MARK_INSERT_TEXT","MARK_REPLACE_TEXT","DATE_FREE_TEXT","DISTANCE_MEASUREMENT","PERIMETER_MEASUREMENT","ARC_MEASUREMENT","RECTANGULAR_AREA_MEASUREMENT","CLOUDY_RECTANGULAR_AREA_MEASUREMENT","AREA_MEASUREMENT","ELLIPSE_MEASUREMENT","COUNT_MEASUREMENT","POLYGON","CLOUD","REDACTION","POLYLINE","STAMP","EDIT","CONTENT_EDIT_TOOL","ADD_IMAGE_CONTENT","ADD_PARAGRAPH_TOOL","TEXT_SELECT","MARQUEE_ZOOM_TOOL","MULTI_STYLE","CROP_PAGE","FILE_ATTACHMENT","SOUND","THREE_D_ANNOTATION","TEXT_FIELD","SIGNATURE_FORM_FIELD","CHECK_BOX_FORM_FIELD","RADIO_BUTTON_FORM_FIELD","LIST_BOX_FORM_FIELD","COMBO_BOX_FORM_FIELD","ARC","CHANGE_VIEW","iconColor","validStyleTabs","currentStyleTab","styleTabs","toolNames","annotationCheck","FreeHandAnnotation","Subject","getIntent","Intent","FreeText","CaretAnnotation","hasLineEndings","LineAnnotation","IT","Measure","PolylineAnnotation","ArcAnnotation","PolygonAnnotation","isRectangularPolygon","EllipseAnnotation","StickyAnnotation","getCustomData","FreeTextCallout","Style","RedactionAnnotation","RectangleAnnotation","StampAnnotation","ViewState","ToolName","ADD_PARAGRAPH","currentPalette","availablePalettes","FileAttachmentAnnotation","SoundAnnotation","Model3DAnnotation","mapToolNameToKey","mapAnnotationToKey","mapAnnotationToToolName","copyMapWithDataProperties","properties","newMap","register","tool","annotationConstructor","customAnnotCheckFunc","buttonImage","toolObject","defaults","getDataWithKey","getMap","updateAnnotationStylePopupTabs","annotationKey","newAnnotationStyleTabs","initialTab","Set","styleTab","AnnotationKeys","STICKYNOTE","AnnotationStylePopupTabs","TEXT_COLOR","STROKE_COLOR","FILL_COLOR","_extends","assign","notARegExp","requireObjectCoercible","correctIsRegExpLogic","stringIndexOf","searchString","workerTypes","PDF","OFFICE","LEGACY_OFFICE","OFFICE_EDITOR","WEBVIEWER_SERVER","XOD","CONTENT_EDIT","ALL","getRegisteredStyles","registered","registeredStyles","rawClassName","insertStyles","cache","serialized","isStringTag","styles","inserted","sheet","EmotionCacheContext","HTMLElement","ThemeContext","CacheProvider","render","typePropName","createEmotionProps","newProps","Noop","theme","cssProp","ele","possiblyStyleElement","Emotion","argsLength","createElementArgArray","insertable","anim","classnames","cls","toAdd","merge","ClassNames","cx","nativeGetOwnPropertyDescriptor","FAILS_ON_PRIMITIVES","defineProperties","getOwnPropertyDescriptorModule","getOwnPropertyDescriptors","un$Reverse","reverse","getBuiltIn","setToStringTag","instance","__assign","__rest","propertyIsEnumerable","_defineProperties","protoProps","staticProps","minZoom","maxZoom","getMinZoomLevel","getMaxZoomLevel","isOfficeEditorMode","defaultZoomList","setMinZoomLevel","setMaxZoomLevel","applyPrefixToName","isDocumentElement","getScrollTop","pageYOffset","scrollTo","top","easeOutCubic","animatedScrollTo","to","duration","change","increment","currentTime","animateScroll","requestAnimationFrame","scrollIntoView","menuEl","focusedEl","menuRect","getBoundingClientRect","focusedRect","overScroll","bottom","min","offsetTop","isTouchCapable","enumerableOnly","symbols","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","Proxy","_isNativeReflectConstruct","Super","NewTarget","getMenuPlacement","maxHeight","minHeight","placement","shouldScroll","isFixedPosition","spacing","scrollParent","getComputedStyle","excludeStaticParent","overflowRx","docEl","parent","parentElement","overflow","overflowY","overflowX","getScrollParent","defaultState","offsetParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","innerHeight","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","_ref2$theme","borderRadius","colors","alignToControl","neutral0","menuGutter","PortalPlacementContext","getPortalPlacement","_Component","MenuPlacer","_super","maxMenuHeight","getPlacement","_this$props","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","setState","getUpdatedProps","placerProps","contextType","menuListCSS","_ref4","baseUnit","paddingBottom","paddingTop","WebkitOverflowScrolling","noticeCSS","_ref5","_ref5$theme","neutral40","padding","textAlign","noOptionsMessageCSS","loadingMessageCSS","getStyles","innerProps","defaultProps","menuPortalCSS","_ref6","rect","offset","left","zIndex","_Component2","MenuPortal","_super2","_ref7","_this$props2","appendTo","controlElement","isFixed","right","getBoundingClientObj","scrollDistance","menuWrapper","keyList","hasProp","exportedEqual","equal","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","$$typeof","containerCSS","isDisabled","direction","isRtl","pointerEvents","valueContainerCSS","alignItems","display","flex","flexWrap","indicatorsContainerCSS","alignSelf","flexShrink","_templateObject","strings","raw","freeze","size","viewBox","focusable","baseCSS","isFocused","_ref3$theme","neutral60","neutral20","transition","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","indicatorSeparatorCSS","_ref4$theme","backgroundColor","neutral10","loadingDotAnimations","loadingIndicatorCSS","fontSize","lineHeight","marginRight","verticalAlign","delay","animation","marginLeft","indicator","_ref$theme","neutral5","borderColor","primary","borderStyle","borderWidth","boxShadow","cursor","justifyContent","neutral30","ownKeys$1","_objectSpread$1","groupCSS","groupHeadingCSS","fontWeight","paddingLeft","paddingRight","textTransform","ownKeys$2","_objectSpread$2","inputCSS","margin","visibility","inputStyle","isHidden","background","border","opacity","ownKeys$3","_objectSpread$3","multiValueCSS","minWidth","multiValueLabelCSS","cropWithEllipsis","textOverflow","whiteSpace","multiValueRemoveCSS","dangerLight","danger","MultiValueContainer","MultiValueLabel","components","removeProps","selectProps","Container","Label","Remove","emotionCx","optionCSS","isSelected","primary25","userSelect","WebkitTapHighlightColor","primary50","placeholderCSS","neutral50","transform","css$1","maxWidth","ownKeys$4","_objectSpread$4","ClearIndicator","Control","innerRef","menuIsOpen","control","DropdownIndicator","DownChevron","CrossIcon","Group","Heading","headingProps","group","GroupHeading","cleanProps","IndicatorsContainer","indicators","IndicatorSeparator","Input","input","inputRef","LoadingIndicator","Menu","menu","MenuList","isMulti","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueRemove","Option","Placeholder","placeholder","SelectContainer","SingleValue","ValueContainer","hasValue","defaultComponents","$IndexOf","arrayMethodIsStrict","un$IndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","fromIndex","createFeatureAPI","getStep","currentZoomFactor","zoomFactorRangesMap","zoomStepFactors","rangesMap","sort","startZoom","zoomStepFactor","nextZoomStepFactor","step","convertZoomStepFactorsToRangesMap","UI","getZoomStepFactors","zoomFactorRanges","ranges","rangeLowBound","rangeHighBound","isCurrentZoomFactorInRange","parseFloat","getViewCenterAfterScale","documentContainer","querySelectorAll","documentWrapper","clientX","clientY","scrollLeft","offsetLeft","zoomStepHistory","storedZoomFactor","zoomToInternal","newZoomFactor","resetZoomStepHistory","shared","uid","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_typeof","assertThisInitialized","_getPrototypeOf","__proto__","subClass","superClass","aConstructor","anObject","nativeConstruct","ObjectPrototype","NEW_TARGET_BUG","ARGS_BUG","FORCED","Target","newTarget","$args","redactionTypeMap","REGION","TEXT","FULL_PAGE","FULL_VIDEO_FRAME","AUDIO_REDACTION","FULL_VIDEO_FRAME_AND_AUDIO","CREDIT_CARD","PHONE","EMAIL","defaultRedactionTypes","mapAnnotationToRedactionType","IsText","NAME","Prototype","NATIVE_ARRAY_BUFFER","classof","tryToString","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","$find","SKIPS_HOLES","IndexedObject","un$Join","ES3_STRINGS","separator","panelMinWidth","RESIZE_BAR_WIDTH","panelNames","OUTLINE","BOOKMARKS","THUMBNAIL","LAYERS","TEXT_EDITING","CHANGE_LIST","_classCallCheck","_createClass","_defineProperty","un$DateToString","getNewRotation","curr","counterClockwise","PageRotation","E_0","E_90","E_180","E_270","pageNumbers","docType","currentRotations","getPageRotations","page","setRotation","getPageRotation","insertAbove","insertBelow","extractPages","confirmBtnText","secondaryBtnText","extractAnnouncement","deleteAnnouncement","warning","onConfirm","extractPagesWithAnnotations","file","saveAs","onSecondary","setSelectedPageThumbnails","showWarningMessage","deletePages","isModalEnabled","setShiftKeyThumbnailsPivotIndex","movePagesToBottom","movePagesToTop","noPagesSelectedWarning","keepOpen","exitPageInsertionWarning","closeModal","exitPageReplacementWarning","redactPages","redactionStyles","createPageRedactions","annots","pageInfo","pageRotation","redaction","PageNumber","Rect","setCustomData","Author","replacePages","sourceDocument","pagesToRemove","pagesToReplaceIntoDocument","documentLoadedInViewer","pageCountOfLoadedDocument","pagesToRemoveFromOriginal","insertPages","pagesToInsert","insertBeforeThisPage","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","Attributes","u","h","M","weekdays","months","g","z","utcOffset","floor","date","year","month","ceil","w","D","ms","_","locale","$L","utc","$u","$x","$offset","$d","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","round","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","makeBuiltIn","simple","touchType","TouchEventManager","container","allowSwipe","allowHorizontalSwipe","allowVerticalSwipe","verticalMomentum","horziontalMomentum","verticalLock","horziontalLock","enableTouchScrollLock","startingScrollLeft","startingScrollTop","_useNativeScroll","localStorage","getItem","touch","distance","horizontalDistance","verticalDistance","handleTouchStart","handleTouchMove","handleTouchEnd","handleTouchCancel","passive","terminate","touches","scrollWidth","viewerWidth","isDoubleTap","getDistance","touchStartTimeStamp","stopMomentumScroll","touchMoveCount","doubleTapTimeout","t1","t2","docX","docY","previousPinchScale","transformOrigin","axisLockThreshold","isScrollingVertically","isScrollingHorziontally","canLockScrolling","doesPagesFitOnScreen","alreadyLocked","handleScroll","useNativeScroll","panTool","isPanning","isPinching","isStylusModeDisabled","isStylusModeEnabled","isUsingAnnotationToolsAndStylusIsDisabled","isUsingAnnotationTools","isUsingPenAndStylusEnabled","isUsingPen","reachedBoundary","reachedLeft","reachedTop","reachedRight","reachedBottom","threshold","swipedToBottom","swipedToTop","swipedToRight","swipedToLeft","totalPages","numberOfPagesToNavigate","isFirstPage","isLastPage","isSingleDisplayMode","shouldGoToPrevPage","shouldGoToNextPage","touchDuration","startMomentumScroll","annotationUnderMouse","isFreeTextUnderMouse","oldZoom","getPointAfterScale","trigger","currentIteration","initScrollLeft","initScrollTop","dHorizontal","dVertical","momentumScroll","nextLeft","easeOutQuad","nextTop","isNotNewTouchEvent","horzDiff","vertDiff","isMomentumScrollAlmostFinish","startValue","changeInValue","hypot","pointerType","setItem","_possibleConstructorReturn","_inherits","toolGroup","getToolButtonObject","toolStylesExist","setActiveToolGroup","$some","$reduce","CHROME_VERSION","IS_NODE","$values","getDefaultOptions","docId","documentId","customLoadingProgressFunction","onLoadingProgress","percent","setLoadingProgress","password","transformPasswordOption","xodOptions","extractXodOptions","userDefinedOnErrorCallback","onError","enableOfficeEditing","startOffline","getHashParameters","azureWorkaround","webviewerServerURL","fallbackToClientSide","singleServerMode","forceClientSideInit","disableWebsockets","cacheKey","officeOptions","rasterizerOptions","streaming","useDownloader","backendType","loadAsPDF","passwordChecked","attempt","checkPassword","setPasswordAttempts","setCheckPasswordFunction","decryptOptions","decrypt","Encryption","toVal","mix","tmp","SignatureModes","FULL_SIGNATURE","SignatureCreateTool","SignatureTypes","INITIALS","extensionRegExp","getExtension","getFileNameWithoutExtension","extension","PORTFOLIO_CONSTANTS","COLLECTION","FILE_NAME","ADOBE_ORDER","CI","REORDER","SORT","SCHEMA","SUBTYPE","isOpenableFile","SupportedFileFormats","CLIENT","hasChildren","portfolioItem","getNextLargestValue","files","order","getPortfolioFiles","getFileAttachments","embeddedFiles","unsortedPortfolioFiles","fileObject","nameWithoutExtension","isFolder","getNestedLevel","addFile","pdfDoc","PDFNet","createIndirectDict","fs","putName","putString","putText","putDict","ef","Filter","createFlateEncode","flateFilter","arrayBuffer","createIndirectStream","embeddedStream","put","ci","putNumber","FileSpec","createFromObj","fileSpec","addFileAttachment","addCoverPage","pageCreate","ElementBuilder","ElementWriter","beginOnPage","Font","StandardType1Font","e_helvetica","font","createTextBeginWithFont","writeElement","createNewTextRun","setTextMatrixEntries","getGState","gstate","ColorSpace","createDeviceRGB","setFillColorSpace","ColorPt","setFillColorWithColorPt","createTextEnd","pagePushBack","addCollection","defaultFile","getRoot","root","findObj","collection","createIndirectName","reorder","setName","putArray","sArray","insertName","schema","orderSchema","fileNameSchema","putBool","createPortfolio","PDFDoc","firstFileName","entries","getPDFNetFiles","getPDFDoc","runWithCleanup","NameTree","findPDFNetPortfolioItem","getIteratorBegin","fileItr","hasNext","filesIteratorKey","renamePortfolioFile","newName","filesIteratorValue","deletePortfolioFile","erase","downloadPortfolioFile","getEmbeddedFileData","blob","reorderPortfolioFile","newOrder","ciValue","aCallable","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","chr","fromCharCode","comparefn","itemsLength","items","arrayLength","getSortCompare","fixRegExpWellKnownSymbolLogic","toIntegerOrInfinity","toLength","advanceStringIndex","getMethod","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","nativeReplace","maybeCallNative","UNSAFE_SUBSTITUTE","replaceValue","replacer","rx","functionalReplace","fullUnicode","unicode","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","groups","replacerArgs","re","images","objects","objectKey","columns","currentSelectionKey","translationPrefix","getTranslationLabel","onClickItem","getCustomItemStyle","applyCustomStyleToButton","getKey","getDisplayValue","onOpened","arrowDirection","Dropdown","hasInput","displayButton","customDataValidator","isSearchEnabled","tReady","ready","overlayRef","useRef","buttonRef","useState","isOpen","setIsOpen","inputVal","setInputVal","onClose","useCallback","onToggle","focus","overlayBounds","buttonBounds","scrollViewRect","closest","horizontalOpening","bottomTop","topBottom","useEffect","onBlur","select","useArrowFocus","onClickOutside","contains","useOnClickOutside","dropdownItems","optionIsSelected","selectedItem","selectedItemDisplay","onClickDropdownItem","displayValue","getTranslation","getDropdownStyles","maxheight","dropdownItemStyles","getTranslatedDisplayValue","hasImages","hasObjects","imageKeys","selectedImageIndex","getImageIndexFromKey","useMemo","image","selectedObjectIndex","text","translatedDisplayValue","buttonStyle","scrollItemsStyle","createDropdownButton","relatedTarget","dataset","onChange","onKeyDown","itemToClick","blur","onMouseDown","onTouchEnd","displayDropdownAsList","data-testid","table","row","imageArray","imageIndex","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","that","specificCreate","boundFunction","every","findIndex","filterReject","PROPER_FUNCTION_NAME","PROPER","$toString","getRegExpFlags","n$ToString","NOT_GENERIC","flags","INCORRECT_NAME","$parseInt","deleteCount","insertCount","actualDeleteCount","actualStart","argumentsLength","types","getTypes","allowedTypes","getContentRect","calculations","client","clientTop","clientLeft","scroll","bounds","getWindowOf","ownerDocument","defaultView","withContentRect","_class","WithContentRect","contentRect","entry","_animationFrameID","_resizeObserver","_node","_window","measure","onResize","_handleRef","unobserve","observe","_proto","componentDidMount","ResizeObserver","componentWillUnmount","cancelAnimationFrame","disconnect","measureRef","aFunction","method","getCurrentViewRect","containerElement","headerElement","headerItemsElements","containerScrollLeft","documentElementOffsetLeft","instanceRect","coordinates","windowToPageNoRotate","x1","y1","x2","y2","doesCurrentViewContainEntirePage","currentViewRect","pageDimensions","dimesions","colorMap","pendingCanvases","grayscaleDarknessFactor","setGrayscaleDarknessFactor","factor","dayjs","LocalizedFormat","sortStrategy","includeAnnotations","includeComments","maintainPageOrientation","onProgress","printQuality","printWithoutModal","isPrintCurrentView","dateFormat","printedNoteDateFormat","isGrayscale","timezone","pagesToPrint","documentType","bbURLPromise","printPage","open","write","i18n","location","href","url","printPdf","createPages","creatingPages","printPages","xfdfString","getFileData","printDocument","Blob","printHandler","URL","createObjectURL","loadListener","contentWindow","clrMap","createCanvases","createdPages","creatingImage","htmlElement","printableAnnotationNotes","getPrintableAnnotationNotes","sortedNotes","getSortStrategies","getSortedNotes","creatingNotesPage","getResetPrintStyle","textContent","innerHTML","fragment","createDocumentFragment","cloneNode","execCommand","tempTitle","fileName","fileNameWithoutExtension","lastIndexOf","once","cancelPrint","cancelLoadCanvas","Listable","isReply","isGrouped","Printable","renderRect","pageIndex","printRotation","getPrintRotation","onCanvasLoaded","canvas","pendingCanvas","positionCanvas","printableAnnotInfo","annotatationsToPrint","WidgetAnnotation","printable","ctx","getContext","oldTransform","getTransform","resetTransform","globalCompositeOperation","fillStyle","globalAlpha","fillRect","setTransform","imageData","getImageData","putImageData","alwaysPrintAnnotationsInColor","isAlwaysPrintAnnotationsInColorEnabled","drawAnnotationsInGrayscale","drawAnnotationsOnCanvas","info","toDataURL","calculatePageZoom","loadCanvas","drawComplete","multiplier","header","note","getNote","getDocumentRotation","documentRotation","isAutoRotated","isPdfjs","rotate","PI","widgetContainer","createWidgetContainer","html2canvas","logging","noteRoot","noteRootInfo","noteIcon","getNoteIcon","getNoteInfo","getNoteContent","getReplies","noteReply","toHexString","dateCreated","datetimeStr","DateCreated","toLocaleString","timeZone","contentElement","contentText","getContents","pageSize","sqrt","ConnectedToggleElementButton","connect","restProps","connectedComponent","ToggleElementButton","LocalStorageManager","localStorageEnabled","$trim","forcedStringTrimMethod","$findIndex","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","TabsContext","Tabs","Tab","useContext","getSelectedTab","propsToInject","selected","setSelectedTab","isTabSelected","cloneElement","TabHeader","TabPanel","isTabPanelSelected","debounce","mapDisplayModeToNumberOfPages","Single","Continuous","Facing","FacingContinuous","CoverFacing","Cover","nextPageNumber","totalPageNumber","currPageNumber","nextPage","browserDocument","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","iterator","_assertThisInitialized","definePropertyModule","createPropertyDescriptor","TAG","XMLHttpRequest","responseType","response","status","MouseEvent","initMouseEvent","HTMLAnchorElement","webkitURL","download","rel","origin","revokeObjectURL","msSaveOrOpenBlob","autoBom","safari","FileReader","onloadend","readAsDataURL","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","random","ActionTypes","INIT","PROBE_UNKNOWN_ACTION","isPlainObject","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","chain","middleware","Choice","propertyIsEnumerableModule","activeXDocument","definePropertiesModule","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","close","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","Properties","rotateRad","cy","radians","sin","cos","sortStrategies","notes","center","getDocumentCenter","rotatedA","X","Y","Width","Height","rotatedB","smallest","MAX_SAFE_INTEGER","shouldRenderSeparator","prevNote","currNote","getSeparatorContent","pageLabels","createdDate","prevNoteDate","currNoteDate","today","yesterday","createdDateString","modifiedDate","getLatestActivityDate","latestActivityDate","latestActivityDay","statusA","getStatus","statusB","author","authorA","authorB","typeA","getAnnotationClass","typeB","colorA","colorB","Color","rgbaToHex","B","flexDirection","addSortStrategy","newStrategy","NotesPanelSortStrategy","CREATED_DATE","MODIFIED_DATE","STATUS","AUTHOR","COLOR","overrideSearchExecutionFn","searchListeners","addSearchListener","searchListener","removeSearchListener","getSearchListeners","overrideSearchExecution","getOverrideSearchExecution","componentWillMount","getDerivedStateFromProps","componentWillReceiveProps","nextProps","prevState","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","memoize","EnterLeaveCounter","isNodeInDocument","enteringNode","previousLength","entered","itemsA","itemsB","insertItem","union","leavingNode","MonotonicInterpolant","xs","ys","indexes","dx","dy","dys","dxs","c1s","_i2","m2","mNext","dxNext","common","c2s","c3s","_i3","c1","invDx","_common","mid","low","high","xHere","diffSq","getNodeClientOffset","nodeType","_el$getBoundingClient","getEventClientOffset","getDragPreviewOffset","sourceNode","dragPreview","clientOffset","anchorPoint","offsetPoint","_document$documentEle","isImage","nodeName","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","offsetX","offsetY","isManualOffsetY","_nativeTypesConfig","FILE","HTML","getDataFromDataTransfer","dataTransfer","typesToTry","resultSoFar","typeToTry","getData","nativeTypesConfig","NativeTypes","exposeProperties","_dataTransfer","matchesTypes","_dataTransfer2","urls","_dataTransfer3","_dataTransfer4","NativeDragSource","config","initializeExposedProperties","newProperties","monitor","getSourceId","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","globalContext","optionsArgs","_this$globalContext","_this$optionsArgs","rootElement","HTML5BackendImpl","manager","sourceId","sourceNodes","isDraggingNativeItem","endDrag","currentNativeHandle","registry","removeSource","currentNativeSource","currentDragSourceNode","clearCurrentDragSourceNode","isDragging","dragStartSourceIds","defaultPrevented","beginDrag","publishSource","getSourceClientOffset","nativeType","setDragImage","sourcePreviewNodes","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setData","setCurrentDragSourceNode","captureDraggingState","publishDragSource","beginDragNativeItem","hasAttribute","dragEnterTargetIds","enterLeaveCounter","enter","altKeyPressed","altKey","hover","targetId","canDropOnTarget","dropEffect","getCurrentDropEffect","dragOverTargetIds","lastClientOffset","hoverRafId","leave","endDragNativeItem","_this$currentNativeSo","dropTargetIds","loadDataTransfer","drop","dragDrop","isContentEditable","getActions","getMonitor","getRegistry","_this$dragStartSource","_this$dragOverTargetI","sourcePreviewNodeOptions","sourceNodeOptions","__isReactDndBackendSetUp","addEventListeners","_this$window","removeEventListeners","asyncEndDragFrameId","handleDragStart","handleSelectStart","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","itemType","getItemType","createNativeDragSource","addSource","mouseMoveTimeoutTimer","_this5$rootElement","endDragIfSourceWasRemovedFromDOM","_this$window2","unshift","HTML5Backend","HIGHLIGHT2","HIGHLIGHT3","HIGHLIGHT4","Opacity","TEXT_FORM_FIELD","isff","addEvent","useCapture","attachEvent","getMods","modifier","mods","getKeys","_keyMap","backspace","tab","return","esc","space","up","down","del","delete","ins","home","pageup","pagedown","capslock","num_0","num_1","num_2","num_3","num_4","num_5","num_6","num_7","num_8","num_9","num_multiply","num_add","num_enter","num_subtract","num_decimal","num_divide","'","_modifier","alt","ctrl","cmd","modifierMap","91","shiftKey","ctrlKey","metaKey","_mods","_handlers","_downKeys","winListendFocus","_scope","elementHasBindEvent","getScope","eachUnbind","_ref$splitKey","originKey","unbindKeys","keyCode","record","a1","a2","arr1","arr2","isIndex","compareArray","eventHandler","modifiersMatch","returnValue","cancelBubble","asterisk","which","charCode","keyName","keyNum","getModifierState","keyShortcut","_downKeysCurrent","capture","isElementBind","clearModifier","_api","getPressedKeyString","getModifier","deleteScope","newScope","handlers","getPressedKeyCodes","isPressed","srcElement","flag","readOnly","keysInfo","_hotkeys","noConflict","_objectWithoutProperties","timeoutRef","childRef","useImperativeHandle","tooltipRef","show","setShow","setOpacity","setPosition","setLocation","showToolTip","delayShow","hideTooltip","MutationObserver","mutations","lastMutation","attributeName","childList","characterData","useLayoutEffect","childEle","tooltipEle","childRect","tooltipRect","hostX","hostY","hostRect","locationTopLeftMap","bottomLeft","topLeft","bestLocation","newTop","newLeft","tooltipTop","tooltipLeft","setTopAndLeft","isUsingMobileDevices","child","translatedContent","hotkeysManager","hasShortcut","Fragment","ReactDOM","createPortal","api","styleTag","webComponents","clonedStyleTags","webComponent","styleNode","locals","getOpenedWarningModal","getOpenedColorPicker","getAllOpenedModals","getDatePicker","getAllPanels","clickMiddleWare","setClickMiddleWare","compare","compareContext","compareResult","bHasOwnProperty","valueA","valueB","preventDefaultTouchmoveEvent","delta","rotationAngle","trackMouse","trackTouch","initialState","xy","swiping","eventData","rotateXYByAngle","pos","angle","angleInRadians","getHandlers","handlerProps","onStart","onMove","onUp","initial","timeStamp","_rotateXYByAngle","deltaX","deltaY","absX","absY","velocity","dir","getDirection","onSwiping","cancelablePageSwipe","onSwiped","onEnd","cleanUpMouse","attachTouch","tls","addState","cleanUpTouch","updateTransientState","Swipeable","_React$PureComponent","_set","cb","transientState","_this$props$nodeName","_getHandlers","onSwipedUp","onSwipedRight","onSwipedDown","onSwipedLeft","$parseFloat","_require","Draggable","DraggableCore","MATCH","nativeMatch","matcher","matchStr","internalObjectKeys","integer","latestReplyActivityDate","acc","replyDate","DateModified","drawRoundedRect","radius","skip","skipTop","skipBottom","beginPath","strokeStyle","lineWidth","moveTo","lineTo","quadraticCurveTo","closePath","stroke","reverseObject","externalURL","useDisplayAuthor","downloadAllPages","downloadDataAsFile","downloadName","downloadType","mimeTypeToExtension","File","FILE_DOWNLOADED","convertToPDF","unloadResources","downloadAsImage","range","getPrintedNoteDateFormat","getCurrentLanguage","getPrintQuality","addWhiteBackground","dataURL","pagePrintCanvas","pagePrintContext","printImg","Image","drawImage","link","annotationsPromise","fields","widgets","links","fileData","canvas2pdf","pageWidth","pageHeight","titleFontSize","bodyFontSize","cardSpacing","commentPages","savePage","stream","toBlob","annotationNotes","startX","startY","PdfContext","blobStream","textSize","measureText","fillText","drawAnnotationComment","drawTextAndWrap","drawText","extractProperties","bold","textArray","maxSize","indexOfLastSpaceToFit","dateText","day","hour","minute","subjectText","subjectTextSize","colorProperty","iconKey","lastYPos","pageOffset","tempDoc","extractXFDF","documentToBeDownloaded","EMPTY_XFDF","getDownloadFilename","isNotPDF","handleError","signatureWidgets","SignatureWidgetAnnotation","isSignedDigitally","signedStatues","SaveOptions","INCREMENTAL","downloadIframe","_slicedToArray","_s","_e","_arr","_n","_d","unsupportedIterableToArray","diacritics","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","trimString","defaultStringify","DummyInput","in","out","onExited","appear","exit","emotion","NodeResolver","STYLE_KEYS","LOCK_STYLES","boxSizing","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","_createSuper$1","_isNativeReflectConstruct$1","canUseDOM","activeScrollLocks","ScrollLock","originalStyles","listenerOptions","accountForScrollbars","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","_createSuper$2","_isNativeReflectConstruct$2","_ref$1","_PureComponent","ScrollBlock","getScrollTarget","blurSelectInput","_createSuper$3","_isNativeReflectConstruct$3","ScrollCaptor","isBottom","isTop","scrollTarget","touchStart","cancelScroll","handleEventDelta","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","onWheel","onTouchStart","changedTouches","onTouchMove","startListening","stopListening","ScrollCaptorSwitch","_ref$isEnabled","instructionsAriaMessage","isSearchable","tabSelectsValue","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","dropdownIndicator","groupHeading","indicatorsContainer","indicatorSeparator","loadingIndicator","loadingMessage","menuList","menuPortal","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","singleValue","valueContainer","defaultTheme","primary75","neutral70","neutral90","_createSuper$4","_isNativeReflectConstruct$4","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","substr","formatGroupLabel","getOptionLabel","getOptionValue","isLoading","menuShouldBlockScroll","openMenuOnFocus","openMenuOnClick","screenReaderStatus","instanceId","Select","_props","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","blockOptionHover","isComposing","clearFocusValueOnUpdate","commonProps","hasGroups","initialTouchX","initialTouchY","inputIsHiddenAfterUpdate","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","cacheComponents","focusInput","blurInput","actionMeta","setValue","onInputChange","onMenuClose","selectOption","_this$props3","isOptionSelected","announceAriaLiveSelection","removeValue","removedValue","clearValue","popValue","lastSelectedValue","getValue","classNamePrefix","custom","getElementId","getActiveDescendentId","_this$state","announceAriaLiveContext","onMenuMouseDown","button","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","_this$props4","onClearIndicatorMouseDown","onScroll","onCompositionStart","onCompositionEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","inputValue","onMenuOpen","onInputFocus","_this$props5","onFocus","onInputBlur","onOptionHover","shouldHideSelectedOptions","_this$props6","hideSelectedOptions","_this$props7","isClearable","_this$state2","focusValue","focusOption","buildMenuOptions","_props$inputValue","toOption","onHover","onSelect","optionId","onMouseMove","onMouseOver","itemIndex","groupId","_value","_selectValue","newArgs","newSelectValue","_ref9","lastProps","_menuOptions","startListeningComposition","startListeningToTouch","autoFocus","_this$props8","getNextFocusedValue","getNextFocusedOption","_this$props9","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","_this$props11","openAtIndex","selectedIndex","_this$props12","_this$state4","focusedIndex","nextFocus","_this$props13","_this$state5","getTheme","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props14","formatOptionLabel","_this$state7","_this$props15","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props16","inputId","form","ariaAttributes","_this$commonProps","autoCapitalize","autoComplete","autoCorrect","spellCheck","_this$components","_this$props17","_this$state8","opt","isOptionFocused","_this$props18","_this$props19","_this$components2","_this$components3","_this$state9","_this$props20","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","hasOptions","headingId","_message","menuPlacementProps","menuElement","_ref10","_ref10$placerProps","_this$props21","delimiter","_value2","constructAriaLiveMessage","_this$components4","_this$props22","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","HorizontalDivider","arrayWithHoles","iterableToArrayLimit","nonIterableRest","ToolButton","getActiveToolName","getIconColor","getToolButtonDataElement","iconColorKey","toolButtonObject","restObjectData","showColor","toolStyles","getToolStyles","getColor","FillColor","StrokeColor","StrokeThickness","hasStyles","defaultTool","setLastPickedToolForGroup","createToolAPI","attachments","fileAttachmentAnnotations","main","getAsPDFText","adobeOrderValue","getNumber","stm","FilterReader","filterReader","readAllIntoBuffer","buffer","getCircleRadius","circleRadius","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","p1","p2","handleInterpolation","couldBeSelectorInterpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","identifierName","dataElements","priority","filteredDataElements","currentPriority","getDisabledElementPriority","disableElement","disableElements","updateCurrentToolbarGroup","getFilteredDataElements","disabledToolbarGroups","activeToolbarGroup","getCurrentToolbarGroup","firstEnabledToolbarGroup","getEnabledToolbarGroups","enableElement","enableElements","addPortfolioTab","tabManager","getTabManager","setActive","addTab","setIsElementHidden","setThumbnailMerging","useThumbnailMerging","setThumbnailReordering","useThumbnailReordering","setThumbnailMultiselect","useThumbnailMultiselect","setIsMultipleViewerMerging","isMultipleViewerMerging","updateCalibrationInfo","isCalibration","tempScale","previousToolName","isFractionalUnit","defaultUnit","setIsAddingNewScale","isAddingNewScale","updateDeleteScale","setEnableNotesPanelVirtualizedList","enableNotesPanelVirtualizedList","setNotesShowLastUpdatedDate","notesShowLastUpdatedDate","setAllowPageNavigation","allowPageNavigation","setEnableToolGroupReordering","enableToolGroupReordering","setActiveToolNameAndStyle","viewer","activeToolName","setActiveToolStyles","setCustomColor","customColor","setCustomColors","customColors","currentActiveToolGroup","getActiveToolGroup","toolbarGroup","setSelectedScale","selectedScale","setNotePopupId","triggerNoteEditing","isNoteEditing","finishNoteEditing","fitMode","setZoom","setFullScreen","isFullScreen","registerTool","unregisterTool","setToolButtonObjects","toolButtonObjects","setHeaderItems","headerItems","setCustomHeadersAdditionalProperties","customHeader","additionalProperties","setPopupItems","setMenuOverlayItems","setActivePalette","colorMapKey","colorPalette","setIconColor","setColorMap","setLeftPanelWidth","disableReplyForAnnotations","setMouseWheelZoom","enableMouseWheelZoom","setReaderMode","isReaderMode","setThumbnailSelectingPages","isSelecting","setPageManipulationOverlayItems","setMultiPageManipulationControlsItems","setMultiPageManipulationControlsItemsSmall","setMultiPageManipulationControlsItemsLarge","setPageManipulationOverlayAlternativePosition","setPageManipulationOverlayOpenByRightClick","setThumbnailControlMenuItems","setTabManager","TabManager","setMultiTab","isMultiTab","setTabs","tabs","setActiveTab","activeTab","setFonts","fonts","setIsMultiViewerMode","setIsMultiViewerReady","isMultiViewerReady","setActiveDocumentViewerKey","setIsComparisonOverlayEnabled","isComparisonOverlayEnabled","setIsCompareStarted","isCompareStarted","setSyncViewer","syncViewer","setSavedSignaturesTabEnabled","enabled","setInitialsOffset","initalsOffset","setFlyoutPosition","newPosition","addFlyout","newFlyout","flyoutMap","getFlyoutMap","oldDataElement","flyout","removeFlyout","setActiveFlyout","updateFlyout","setFlyoutToggleElement","setTotalPages","setOutlines","setIsOutlineEditing","isOutlineEditingEnabled","setAutoExpandOutlines","autoExpandOutlines","setAnnotationNumbering","isAnnotationNumberingEnabled","setBookmarks","USER_BOOKMARKS_CHANGED","editBookmark","removeBookmark","bookmarkIconShortcutVisibility","setPortfolio","portfolio","setLayers","layers","setPrintQuality","quality","setDefaultPrintOptions","progress","resetLoadingProgress","setVerificationResult","setIsRevocationCheckingEnabled","isRevocationCheckingEnabled","setRevocationProxyPrefix","revocationProxyPrefix","setUserName","setAdminUser","isAdminUser","searchText","searchTextFull","setSearchValue","setReplaceValue","setNextResultValue","nextResult","nextResultIndex","setCaseSensitive","isCaseSensitive","setWholeWord","isWholeWord","setWildcard","isWildcard","resetSearch","setNoteTransformFunction","noteTransformFunction","setCustomNoteSelectionFunction","customNoteFunction","setCustomApplyRedactionsHandler","customApplyRedactionsHandler","setCustomMultiViewerSyncHandler","customMultiViewerSyncHandler","setCustomMultiViewerAcceptedFileFormats","customMultiViewerAcceptedFileFormats","setEnableSnapMode","setLanguage","setHideContentEditWarning","hideWarning","setCurrentContentBeingEdited","updateCurrentContentBeingEdited","clearCurrentContentBeingEdited","setProcessingSearchResults","isProcessingSearchResults","triggerResetAudioPlaybackPosition","shouldResetAudioPlaybackPosition","setActiveSoundAnnotation","activeSoundAnnotation","setAnnotationFilters","annotationFilters","setContentBoxEditor","contentBoxEditor","setInitialsMode","enableFeatureFlag","featureFlag","disableFeatureFlag","setComparePagesButtonEnabled","isShowComparisonButtonEnabled","setIsMultiViewerModeAvailable","isMultiViewerModeAvailable","_console","alreadyWarned","warnOnce","loadNamespaces","initialized","oldI18nextHasLoadedNamespace","bindI18n","isNewerI18next","ignoreJSONStructure","i18nInstance","each","hasXMLHttpRequest","makePromise","maybePromise","isPromise","DARK","LIGHT","bitmap","version","Deno","versions","v8","V","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","aPossiblePrototype","setter","CORRECT_SETTER","pna","objectKeys","Duplex","util","inherits","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","W","ia","ja","ka","aa","ba","la","ma","ea","oa","J","ca","da","fa","ha","use","toSheet","block","Sheet","ruleSheet","parents","line","column","depth","at","stylisOptions","stylis","_insert","nodes","stylisPlugins","shouldCache","speedy","pageNumbersToExtract","finishPromise","pageMap","annotationList","ex","defaultOptions","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","queries","mediaQueryLists","matchMedia","mql","matches","addListener","removeListener","pt_br","zh_cn","zh_tw","renderArguments","CustomElement","reactComponent","setReactComponent","wrapperRef","toolTipWrapperRef","Element","isDOMElement","wrapperElement","isValidElement","isReactElement","hexToRgba","hexString","toFixed","isDarkColorHex","overlay","isTabletAndMobile","buttonBottom","buttonLeft","overlayWidth","overlayHeight","rootLeft","rightMargin","verticalGap","rootTop","calculatedTop","isNaN","$Symbol","copyright","license","getDescriptor","CONFIGURABLE","propertyKey","$every","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","browser","env","argv","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","tools","setStyles","enableMultiTab","getIsMultiTab","docArr","initialDoc","TAB_MANAGER_READY","prepareMultiTab","extensions","listenForAnnotChanges","extensionArr","currentViewerState","viewerState","documentContainerWidth","documentContainerHeight","isNotesPanelOpen","isLeftPanelOpen","isSearchPanelOpen","currentTab","onFileDownloaded","changes","hasUnsavedChanges","onPagesUpdated","removeListeners","useDB","advanced","disableIndexedDB","req","indexedDB","indexedDBNotSupported","onsuccess","db","throwError","onupgradeneeded","createObjectStore","isString","Document","prepareTabEventListeners","listenToDocumentDownloaded","saveCurrentActiveTabState","isEmptyPageOpen","newTab","annotationsChanged","nextTab","getViewerState","tabToDelete","confirmationWarning","downloadPdf","deleteTab","secondaryBtnClass","showAskAgainCheckbox","disableWarning","disableDeleteTabWarning","getShowDeleteTabWarning","showDeleteWarning","deletedTab","saveCurrentTabState","shouldLoadTab","currId","highestId","prevIndex","newIndex","onAnnotChange","__","imported","onFieldChange","mapped","annotInDB","docInDB","fetch","writeToDB","annotsChanged","saveData","loadAnnotations","restorePageDataOnLoad","restoreAnnotDataOnLoad","tx","transaction","objectStore","commit","savePageData","arePagesAltered","saveFileData","saveAnnotDataInDB","saveAnnotData","LINEARIZED","finishedWithDocument","annotData","docContainer","getElementsByClassName","updateScroll","getDocumentCompletePromise","updateViewer","activeTabId","getActiveTab","getTabs","updateAnnotations","annotReq","importAnnotations","arrBuff","pendingLanguageTimeout","languageObj","languageToImportLocaleFile","languageRules","languageEventObject","pendingLanguagePromise","setDatePickerLocale","i18nextPromise","DatePickerWidgetAnnotation","datePickerOptions","widget","refreshDatePicker","MeasurementUnits","Annotation","isMeasurementTool","PRIME_FT","DOUBLE_PRIME_IN","toolModeMap","safeIsNaN","areInputsEqual","newInputs","lastInputs","second","resultFn","isEqual","lastResult","calledOnce","ListenerType","MouseButtons","MouseButton","eventShouldStartDrag","isTouchEvent","targetTouches","lastTargetTouchFallback","getEventClientTouchOffset","supportsPassive","supported","_eventNames","incoming","enableTouchEvents","enableMouseEvents","enableKeyboardEvents","ignoreContextMenu","enableHoverOutsideTarget","touchSlop","scrollAngleRanges","delayTouchStart","delayMouseStart","eventNames","mouse","move","contextmenu","keyboard","TouchBackend","handleTopMoveStartCapture","moveStartSourceIds","handleMoveStart","handleTopMoveStart","_mouseClientOffset","waitingForDelay","handleTopMoveStartDelay","handleTopMoveCapture","handleMove","handleTopMove","_isScrolling","angleRanges","atan2","inAngleRanges","pow","installSourceNodeRemovalObserver","dragOverTargetNodes","targetNodes","elementsAtPoint","getDropTargetElementsAtPoint","elementsFromPoint","elementsAtPointExtended","nodeId","currentNode","orderedDragOverTargetIds","ids","handleTopMoveEndCapture","buttons","eventShouldEndDrag","didDrop","uninstallSourceNodeRemovalObserver","handleCancelOnEscape","listenerTypes","isSetUp","getTopMoveStartHandler","subject","listenerType","evt","coords","droppedOn","elementFromPoint","childMatch","draggedSourceNode","draggedSourceNodeRemovalObserver","resurrectSourceNode","createBackend","defaultNoteDateFormat","defaultPrintedNoteDateFormat","CustomAnnotation","Link","_toConsumableArray","arrayLikeToArray","iter","isNotClickableSelector","ActionButton","MENUS","TRIGGERS","oneOf","viewerHeight","FlyoutMenu","allOtherMenus","isInDesktopOnlyMode","pageManipulationOverlayAlternativePosition","getPageManipulationOverlayAlternativePosition","closeMenu","menuButton","overlayAlternativePosition","alternativePosition","clickTop","flyoutMenuHeight","getAlternativePosition","getOverlayPositionBasedOn","overlayClass","mobile","closed","un$StartsWith","CORRECT_IS_REGEXP_LOGIC","search","UNSCOPABLES","ArrayPrototype","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","postfix","IS_INCLUDES","feature","normalize","POLYFILL","NATIVE","CONSTRUCTOR_NAME","defaultConstructor","NativePromiseConstructor","inspectSource","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","PromiseCapability","$$resolve","$$reject","wrappedWellKnownSymbolModule","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isUndefined","isRegExp","isDate","isError","isFunction","isPrimitive","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","port","urlGenerate","aParsedUrl","aPath","isAbsolute","aRoot","aPathUrl","aRootUrl","joined","relative","level","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceURL","sourceMapURL","findFocusableIndex","elements","toFind","escapePressListener","onEscapeFunction","customInput","pageGroups","pageGroup","isSinglePage","isRangeOfPages","getPageNumber","addRangeOfPagesTo","character","Spinner","spinnerStyle","scrollbarSize","recalc","scrollDiv","reactIs","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","getActiveFlyout","activeFlyout","getFlyoutPosition","flyoutPosition","getFlyout","getFlyoutToggleElement","flyoutToggleElement","getInitialsOffset","isSavedSignaturesTabEnabled","savedSignatureTabEnabled","getSyncViewer","isComparisonDisabled","disableMultiViewerComparison","getIsComparisonOverlayEnabled","getCustomFlxPanels","customFlxPanels","shouldShowApplyCropWarning","shouldShowApplySnippingWarning","getPresetCropDimensions","presetCropDimensions","getPresetNewPageDimensions","presetNewPageDimensions","getDateTimeFormats","dateTimeFormats","getThumbnailSelectionMode","thumbnailSelectionMode","getFonts","getIsHighContrastMode","highContrastMode","getLastPickedToolForGroup","lastPickedToolForGroup","getStandardStamps","standardStamps","getCustomStamps","customStamps","getSelectedStampIndex","selectedStampIndex","getSelectedStamp","selectedStamp","getSavedSignatures","savedSignatures","getDisplayedSignatures","displayedSignaturesFilterFunction","getSelectedDisplayedSignatureIndex","selectedDisplayedSignatureIndex","getSelectedDisplayedSignature","getDisplayedSignaturesFilterFunction","getSignatureMode","signatureMode","getSavedInitials","savedInitials","getSelectedDisplayedInitialsIndex","selectedDisplayedInitialsIndex","getIsInitialsModeEnabled","isInitialsModeEnabled","getDisplayedInitial","getAutoFocusNoteOnAnnotationSelection","autoFocusNoteOnAnnotationSelection","getNotesInLeftPanel","notesInLeftPanel","getLeftPanelWidth","panelWidths","leftPanel","getSearchPanelWidth","searchPanel","getNotesPanelWidth","notesPanel","getDeleteScaleInfo","getRedactionPanelWidth","redactionPanel","getWv3dPropertiesPanelWidth","wv3dPropertiesPanel","getComparePanelWidth","comparePanel","getTextEditingPanelWidth","textEditingPanel","getWatermarkPanelWidth","watermarkPanel","getLeftPanelWidthWithResizeBar","getSearchPanelWidthWithResizeBar","getNotesPanelWidthWithResizeBar","getComparePanelWidthWithResizeBar","getDocumentContentContainerWidthStyle","notesPanelWidth","searchPanelWidth","leftPanelWidth","watermarkPanelWidth","textEditingPanelWidth","wv3dPropertiesPanelWidth","comparePanelWidth","redactionPanelWidth","isRedactionPanelOpen","isTextEditingPanelOpen","isWv3dPropertiesPanelOpen","isComparePanelOpen","isWatermarkPanelOpen","isFlxPanelOpenLeft","isCustomFlxPanelOpen","isFlxPanelOpenRight","spaceTakenUpByPanels","activeRightHeaderWidth","getActiveRightHeaderWidth","activeLeftHeaderWidth","getActiveLeftHeaderWidth","elName","getDocumentContainerLeftMargin","getCalibrationInfo","calibrationInfo","getIsAddingNewScale","getMeasurementScalePreset","measurementScalePreset","getIsMultipleScalesMode","isMultipleScalesMode","getIsNotesPanelMultiSelectEnabled","isNotesPanelMultiSelectEnabled","getDocumentContainerWidth","getDocumentContainerHeight","disabledElements","isElementHidden","hiddenElements","allButtonsInGroupDisabled","getToolButtonObjects","getToolbarHeaders","headers","getSelectedScale","getCustomHeadersAdditionalProperties","customHeadersAdditionalProperties","getToolbarGroupDataElements","toolGroupButtons","flattenHeaderItems","dataItems","total","isEveryToolGroupButtonDisabled","toolGroupDataElement","getCurrentGroupedItems","activeGroupedItems","getFixedGroupedItems","fixedGroupedItems","getActiveHeaders","modularHeaders","itemProps","hasActiveGroupedItems","hasFixedGroupedItems","getActiveTheme","activeTheme","getTimezone","getDefaultHeaderItems","getModularHeaderList","getModularHeader","getBottomHeaders","getBottomHeadersHeight","bottomHeaders","accumulator","getDimensionTotal","modularHeadersHeight","getTopHeaders","getRightHeader","getLeftHeader","getTopHeadersHeight","currentHeader","autoHide","topHeaders","getRightHeaderWidth","modularHeadersWidth","rightHeader","getLeftHeaderWidth","leftHeader","activeHeaders","getTopFloatingContainerHeight","floatingContainersDimensions","topFloatingContainerHeight","getBottomFloatingContainerHeight","bottomFloatingContainerHeight","getTopStartFloatingHeaders","getBottomStartFloatingHeaders","getTopEndFloatingHeaders","getBottomEndFloatingHeaders","getActiveHeaderItems","activeHeaderGroup","getToolsHeaderItems","getToolbarGroupItems","isToolGroupReorderingEnabled","isNoteSubmissionWithEnterEnabled","enableNoteSubmissionWithEnter","isNotesPanelTextCollapsingEnabled","isNotesPanelRepliesCollapsingEnabled","isCommentThreadExpansionEnabled","getActiveToolNamesForActiveToolGroup","activeToolGroup","getToolButtonDataElements","getToolNamesByGroup","getToolNameByDataElement","getActiveToolStyles","activeToolStyles","getCustomColor","getCustomColors","getActiveLeftPanel","activeLeftPanel","getNotePopupId","notePopupId","zoomLevels","getNoteDateFormat","noteDateFormat","doesDocumentAutoLoad","doesAutoLoad","isDocumentReadOnly","getCustomPanels","customPanels","getCustomModals","customModals","getPageLabels","getSelectedThumbnailPageIndexes","selectedThumbnailPageIndexes","getShiftKeyThumbnailPivotIndex","shiftKeyThumbnailPivotIndex","getDisabledCustomPanelTabs","disabledTabs","useEmbeddedPrint","isOutlineControlVisible","outlineControlVisibility","shouldAutoExpandOutlines","isBookmarkIconShortcutVisible","getCursorOverlayData","cursorOverlay","getDisabledElements","getcurrentStyleTab","getCustomNoteFilter","customNoteFilter","getInlineCommentFilter","inlineCommentFilter","getIsReplyDisabled","isReplyDisabledFunc","getZoomList","zoomList","getMeasurementUnits","measurementUnits","getIsNoteEditing","getMaxSignaturesCount","maxSignaturesCount","getUserData","userData","getIsMentionEnabled","getSignatureFonts","signatureFonts","customElementOverrides","getPopupItems","popupDataElement","getMenuOverlayItems","menuOverlay","getIsThumbnailMergingEnabled","isThumbnailMerging","getIsThumbnailReorderingEnabled","isThumbnailReordering","isThumbnailMultiselectEnabled","isThumbnailMultiselect","getIsMultipleViewerMerging","getEnableNotesPanelVirtualizedList","getAllowPageNavigation","getCustomMeasurementOverlay","customMeasurementOverlay","getAnnotationContentOverlayHandler","annotationContentOverlayHandler","getEnableMouseWheelZoom","getCertificates","digitalSignatureValidation","certificates","getTrustLists","trustLists","getValidationModalWidgetName","validationModalWidgetName","getVerificationResult","fieldName","verificationResult","getIsRevocationCheckingEnabled","getRevocationProxyPrefix","isThumbnailSelectingPages","thumbnailSelectingPages","getWatermarkModalOptions","watermarkModalOptions","getWarningMessage","getWarningTitle","getWarningConfirmEvent","getWarningConfirmBtnText","getWarningSecondaryEvent","getWarningSecondaryBtnText","getWarningSecondaryBtnClass","getWarningCancelEvent","onCancel","getShowAskAgainCheckbox","showDeleteTabWarning","isAccessibleMode","getWarningTemplateStrings","templateStrings","getWarningModalClass","modalClass","getWarningCloseEvent","getErrorMessage","errorMessage","getPasswordAttempts","passwordAttempts","getDefaultPrintOptions","defaultPrintOptions","getOutlineEditingEnabled","getPortfolio","getLayers","getLoadingProgress","loadingProgress","getUserName","user","getServerUrl","serverUrl","getSearchValue","shouldClearSearchPanelOnClose","clearSearchPanelOnClose","getReplaceValue","getNextResultValue","isSearchUp","isAmbientString","isRegex","getRedactionSearchPatterns","redactionSearchPatterns","getNoteTransformFunction","getCustomNoteSelectionFunction","getCustomApplyRedactionsHandler","getCustomMultiViewerSyncHandler","getCustomMultiViewerAcceptedFileFormats","isSnapModeEnabled","getUnreadAnnotationIdSet","unreadAnnotationIdSet","currentLanguage","shouldFadePageNavigationComponent","fadePageNavigationComponent","isContentEditWarningHidden","hideContentEditWarning","getCurrentContentBeingEdited","currentContentBeingEdited","getFeatureFlags","featureFlags","isRightClickAnnotationPopupEnabled","enableRightClickAnnotationPopup","getPanelWidth","pageDeletionConfirmationModalEnabled","getPageReplacementFileList","pageReplacementFileList","getPageManipulationOverlayItems","pageManipulationOverlay","getMultiPageManipulationControlsItems","multiPageManipulationControls","getMultiPageManipulationControlsItemsSmall","multiPageManipulationControlsSmall","getMultiPageManipulationControlsItemsLarge","multiPageManipulationControlsLarge","openingPageManipulationOverlayByRightClickEnabled","pageManipulationOverlayOpenByRightClick","getThumbnailControlMenuItems","thumbnailControlMenu","shouldShowPresets","showPresets","getActiveSoundAnnotation","getWv3dPropertiesPanelModelData","modelData","getWv3dPropertiesPanelSchema","getOfficeEditorCursorProperties","officeEditor","cursorProperties","getOfficeEditorSelectionProperties","selectionProperties","getAvailableFontFaces","availableFontFaces","getCSSFontValues","cssFontValues","getContentBoxEditor","getAnnotationFilters","getNotesPanelCustomHeaderOptions","notesPanelCustomHeaderOptions","getNotesPanelCustomEmptyPanel","notesPanelCustomEmptyPanel","isReplyAttachmentPreviewEnabled","replyAttachmentPreviewEnabled","getReplyAttachmentHandler","replyAttachmentHandler","getCustomSettings","customSettings","isToolDefaultStyleUpdateFromAnnotationPopupEnabled","toolDefaultStyleUpdateFromAnnotationPopupEnabled","getMultiViewerSyncScrollMode","multiViewerSyncScrollMode","getTextSignatureQuality","textSignatureCanvasMultiplier","getIsMeasurementAnnotationFilterEnabled","isMeasurementAnnotationFilterEnabled","isRightPanelOpen","getOpenRightPanelWidth","getWidth","panel","getIsShowComparisonButtonEnabled","getIsMultiViewerModeAvailable","createTextAnnotation","quads","createAnnotation","TextAnnotationCreateTool","AUTO_SET_TEXT","setContents","setRedactionStyle","setAnnotationStyle","Quads","AnnotationCreateRedaction","isRef","_arrayLikeToArray","deps","didMount","createHTML","forcedStringHTMLMethod","getAnnotationPopupPositionBasedOn","popup","calcAnnotationPopupPosition","getAnnotationPosition","getPopupDimensions","getTextPopupPositionBasedOn","allQuads","calcTextPopupPosition","getSelectedTextPosition","containerBox","updatedLeft","getAnnotationPageCoordinates","convertPageCoordinatesToWindowCoordinates","bottomRight","isNote","getRect","getHeight","noteAdjustment","getSelectedTextPageNumber","startPageNumber","endPageNumber","getSelectedTextPageCoordinates","y3","endPageQuads","getTopAndBottom","quad","quadLeft","quadRight","getLeftAndRight","pageToWindow","annotationPosition","popupDimension","calcPopupTop","calcPopupLeft","selectedTextPosition","scrollContainer","boundingBox","visibleRegion","annotTop","annotBottom","getReaderModePopupPositionBasedOn","annotPosition","viewerRect","ColorPalette","bg","onStyleChange","palette","hasPadding","overridePalette","overridePalette2","allowTransparent","transparentIcon","transparent","strokeLinecap","setColor","cell","withTranslation","$entries","$propertyIsEnumerable","NASHORN_BUG","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","passed","required","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","callFn","usingIterator","iteratorMethod","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","uncurriedNativeMethod","$exec","Wrapper","NewTargetPrototype","whitespaces","whitespace","ltrim","rtrim","ArrayBufferModule","speciesConstructor","DataView","DataViewPrototype","un$ArrayBufferSlice","getUint8","setUint8","viewSource","viewTarget","createTypedArrayConstructor","ArrayBufferViewCore","u$ArrayCopyWithin","$fill","fromSpeciesAndList","originalArray","predicate","$forEach","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","$join","$lastIndexOf","typedArraySpeciesConstructor","mapfn","$reduceRight","middle","toOffset","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","0","TO_OBJECT_BUG","arrayLike","ACCEPT_INCORRECT_ARGUMENTS","mod","expected","begin","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","dontSetMe","propName","findInArray","int","isNum","num","arg1","arg3","baseGetTag","isObjectLike","ColorPaletteHeader","newPalette","disableSeparator","pallette","isTextColorPaletteDisabled","isFillColorPaletteDisabled","isBorderColorPaletteDisabled","defaultStrokeStyles","withCloudyStyle","StyleOption","onLineStyleChange","isEllipse","StrokeStyle","selectedMiddleLineStyle","setSelectedMiddleLineStyle","htmlFor","LabelTextEditor","onPropertyChange","overlayText","OverlayText","curOverlayText","setCurOverlayText","startLineStyles","endLineStyles","middleLineStyles","LineStyleOptions","StartLineStyle","selectedStartLineStyle","setSelectedStartLineStyle","EndLineStyle","selectedEndLineStyle","setSelectedEndLineStyle","StylePopup","enableSnapping","SnapMode","e_DefaultSnapMode","POINT_ON_LINE","getMeasurementTools","setSnapMode","onSnapModeChange","FontSize","onSliderChange","isFreeText","isMeasure","isOpacitySliderDisabled","isStrokeThicknessSliderDisabled","isFontSizeSliderDisabled","lineStart","sliderProps","displayProperty","getCirclePosition","lineLength","convertRelativeCirclePositionToValue","circlePosition","withInputField","inputFieldType","getLocalValue","strokeThickness","placeOfDecimal","sliders","pickBy","slider","sliderComponents","Slider","onDocumentLoaded","isColorPaletteDisabled","isStyleOptionDisabled","hideSnapModeCheckbox","isTextStyleContainerActive","isColorsContainerActive","isLabelTextContainerActive","isLabelTextContainerDisabled","onRichTextStyleChange","isRedaction","showLineStyleOptions","isInFormBuilderAndNotFreeText","Scale","Precision","textMenuItems","openTextMenuItem","openLabelText","openTextStyle","openColors","Popup","showTextStyle","showColorsMenu","showColorPicker","showLabelText","showSliders","hideStylePicker","wasDocumentSwappedToClientSide","isEligibleDocumentForSnapping","showMeasurementSnappingOption","TextStylePicker","useMobileMinMaxWidth","ColorPalettePicker","enableEdit","renderSliders","onSnappingChange","isStylePopupDisabled","ConnectedStylePopup","isInFormFieldCreationMode","ColorPickerModalRedux","modifyColorMode","setModifyColorMode","colorToBeDeleted","setColorToBeDeleted","activeCustomColor","getHexColor","handleColorChange","givenColor","openColorPicker","addNew","openDeleteModal","updatedCustomColors","newColor","newColorHex","newColorExist","selectedColorindex","handleColorOnClick","ColorPalettePickerRedux","onRedactionCompleted","webViewerServerApply","webViewerApply","_react","_react2","_interopRequireDefault","_propTypes2","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","fontFamily","fontStyle","letterSpacing","generateId","AutosizeInput","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","prevId","copyInputStyles","updateInputWidth","onAutosize","inputStyles","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","sizerValue","previousValue","currentValue","wrapperStyle","inputProps","field","cleanInputProps","inputClassName","renderStyles","any","isStillProcessingResults","resultTimeout","SearchMode","PAGE_STOP","caseSensitive","CASE_SENSITIVE","wholeWord","WHOLE_WORD","wildcard","WILD_CARD","REGEX","AMBIENT_STRING","buildSearchModeFlag","doneCallback","hasActiveResultBeenSet","throttleResults","textSearchInitOptions","onResult","activeDocumentViewer","onDocumentEnd","searchInProgressCallback","isSearching","searchOptions","searchUp","ambientString","Languages","languageEnum","pair","revocationChecking","VerificationResult","TrustStatus","DigestStatus","ModificationPermissionsStatus","DocumentStatus","verificationResults","VerificationOptions","SecurityLevel","e_compatibility_and_archiving","enableOnlineCRLRevocationChecking","certificate","addTrustedCertificateFromURL","fileReader","arrayBufferPromise","readAsArrayBuffer","addTrustedCertificate","trustList","trustListDataStructure","supportedDataStructures","fdfDocBuffer","FDFDoc","createFromMemoryBuffer","fdf","loadTrustList","getFieldIteratorBegin","fieldIterator","Field","Type","e_signature","DigitalSignatureField","createFromField","digitalSigField","verify","getSDFObj","getObjNum","signer","signTime","documentPermission","isCertification","contactInfo","reason","validAtTimeOfSigning","signerName","issuerField","subjectField","hasCryptographicSignature","signed","getSubFilter","subFilter","SubFilterType","e_adbe_pkcs7_detached","getSignerCertFromCMS","signerCert","getSubjectField","retrievedSubjectField","processX501DistinguishedName","processedSubjectField","e_ETSI_RFC3161","getSignatureName","getContactInfo","getSigningTime","formatPDFNetDate","getLocation","getReason","getDocumentPermissions","getVerificationStatus","verificationStatus","getDocumentStatus","documentStatus","getDigestStatus","digestStatus","getTrustStatus","trustStatus","getPermissionsStatus","permissionStatus","getDigestAlgorithm","digestAlgorithm","getDisallowedChanges","getTypeAsString","objnum","disallowedChanges","validSignerIdentity","e_trust_verified","trustVerificationResultString","trustVerificationResultBoolean","timeOfTrustVerificationEnum","trustVerificationTime","hasTrustVerificationResult","getTrustVerificationResult","trustVerificationResult","wasSuccessful","getResultString","getTimeOfTrustVerificationEnum","getTimeOfTrustVerification","epochTrustVerificationTime","formatDate","getCertPath","certPath","firstX509Cert","getIssuerField","retrievedIssuerField","processedIssuerField","lastX509Cert","getNotBeforeEpochTime","notBeforeEpochTime","getNotAfterEpochTime","notAfterEpochTime","badgeIcon","e_no_error","e_digest_verified","e_digest_verification_disabled","e_no_trust_status","e_unmodified","e_has_allowed_changes","e_permissions_verification_disabled","e_commonName","getName","toLocaleDateString","weekday","timeZoneName","epochTime","setUTCSeconds","x501DistinguishedNameObject","processedObject","getAllAttributesAndValues","allAttributeAndValues","x501AttributeTypeAndValue","getAttributeTypeOID","objectIdentifier","getRawValue","getStringValue","translateObjectIdentifierBotanOID","objectIdentifierOIDenum","WidgetLocator","scrollViewContainer","renderPermissionStatus","e_invalidated_by_disallowed_changes","e_no_permissions_status","collapsible","instanceOf","Forms","WidgetInfo","verificationType","isExpanded","setIsExpanded","locatorRect","setLocatorRect","signatureDetailsExpanded","setSignatureDetailsExpanded","TimeMode","jumpToWidget","windowTopLeft","windowBottomRight","titleInteraction","openSignatureModal","setSignatureValidationModalWidgetName","onKeyPress","arrow","expanded","SignatureIcon","badge","verificationTimeMessage","e_current","e_signing","e_timestamp","renderTrustVerification","SignaturePanel","setFields","showSpinner","setShowSpinner","certificateErrorMessage","setCertificateErrorMessage","setDocument","onDocumentUnloaded","fieldManager","getFieldManager","getField","renderLoadingOrErrors","isContentEditing","stateless","supportedFonts","defaultBold","setBold","defaultItalic","italic","setItalic","defaultUnderline","underline","defaultStrikeout","strikeout","setUnderline","setStrikeout","TextAlign","changeXAlign","xAlign","textVerticalAlign","TextVerticalAlign","changeYAlign","yAlign","fontSizeProps","setError","fontSizePropsToUpdate","FontSizeDropdown","fontUnit","onFontSizeChange","applyOnlyOnBlur","newUnderline","newStrikeout","ToolGroupButton","arrayOf","ConnectedToolGroupButton","_setPrototypeOf","getFocusableElements","focusableElementDomString","lastFocusedElement","keydownListener","focusIndex","_inheritsLoose","throwIfCompositeComponentElement","wrapConnectorHooks","hooks","wrappedHooks","hook","endsWith","wrappedHook","elementOrNode","cloneWithRef","wrapHookToRecognizeElement","setRef","newRef","previousRef","createDetectElementResize","hostWindow","raf","requestFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","elementStyle","createStyles","resizeTriggersHtml","trustedTypes","staticPolicy","createPolicy","__animationListener__","removeResizeListener","detachEvent","_unsupportedIterableToArray","minLen","StyleSheet","isSpeedy","tags","ctr","before","_tag","createStyleElement","nextSibling","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","defaultInputValue","defaultMenuIsOpen","manageState","SelectComponent","StateManager","callProp","getProp","features","Feature","Annotating","enableRibbons","setReadOnlyRibbons","enableTools","disableTools","localStorageManager","enableLocalStorage","disableLocalStorage","setEnableRightClickAnnotationPopup","currentToolbarGroup","Tool","ENABLE_TEXT_SELECTION","touchEventManager","signatures","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","getLeftPanelDataElements","defaultLeftPanels","disableApplyCropWarningModal","enableApplyCropWarningModal","disableApplySnippingWarningModal","enableApplySnippingWarningModal","setPresetCropDimensions","setPresetNewPageDimensions","setDateTimeFormats","setEnableDesktopOnlyMode","enableDesktopOnlyMode","setHighContrastMode","useHighContrastMode","setCanUndo","canUndo","setCanRedo","canRedo","setStandardStamps","rubberStampTool","canvasWidth","canvasHeight","getStandardStampAnnotations","getPreview","previews","imgSrc","setCustomStamps","getCustomStampAnnotations","toolbarGroupsToDisable","toolbarGroupsToEnable","setCurrentGroupedItem","groupedItems","setFixedGroupedItems","pickTool","lastPickedToolGroup","_toolbarGroup","toolGroups","firstToolGroupForToolbarGroup","firstTool","getFirstToolGroupForToolbarGroup","lastPickedToolName","getFirstToolNameForGroup","TOOLBAR_GROUP_CHANGED","setSelectedStampIndex","setOutlineControlVisibility","setSelectedDisplayedSignatureIndex","setSavedSignatures","setDisplayedSignaturesFilterFunction","filterFunction","setSignatureMode","setSavedInitials","setSelectedDisplayedInitialsIndex","setSearchPanelWidth","setNotesPanelWidth","setComparePanelWidth","setRedactionPanelWidth","setTextEditingPanelWidth","setWatermarkPanelWidth","setWv3dPropertiesPanelWidth","setWv3dPropertiesPanelModelData","setWv3dPropertiesPanelSchema","setOfficeEditorCursorProperties","setOfficeEditorSelectionProperties","addOfficeEditorAvailableFontFace","fontFace","setDocumentContainerWidth","setDocumentContainerHeight","setGapBetweenHeaderItems","gap","updateHeaderProperty","setHeaderJustifyContent","setHeaderMaxWidth","setHeaderMaxHeight","setGroupedItemsProperty","propertyName","propertyValue","groupedItemsDataElement","headerDataElement","itemDataElement","indexOfHeaderItem","updatedItems","enableAllElements","isDataElementLeftPanel","flexPanel","rightPanelList","VISIBILITY_CHANGED","isVisible","isFlyoutElement","isElementClosed","addCustomModal","modalOptions","addModularHeaders","headersList","updateModularHeaders","setRightHeaderWidth","setLeftHeaderWidth","setTopFloatingContainerHeight","setBottomFloatingContainerHeight","setActiveHeaderGroup","headerGroup","panelDataElements","setTimezone","setNotesPanelSortStrategy","setNoteDateFormat","setPrintedNoteDateFormat","setCustomPanel","newPanel","addPanel","setPageLabels","SELECTED_THUMBNAIL_CHANGED","setSwipeOrientation","swipeOrientation","showErrorMessage","setCustomNoteFilter","filterFunc","setInlineCommentFilter","setZoomList","minZoomLevel","maxZoomLevel","filteredZoomList","outOfRangeZooms","setMaxSignaturesCount","setUserData","setCustomMeasurementOverlay","setCustomElementOverrides","overrides","setPageReplacementModalFileList","setActiveTheme","THEME_CHANGED","setSearchResults","searchResults","setClearSearchOnPanelClose","shouldClear","setAnnotationContentOverlayHandler","setAnnotationReadState","isRead","annotationId","addTrustedCertificates","addTrustList","widgetName","setNoteSubmissionEnabledWithEnter","setNotesPanelTextCollapsing","enableNotesPanelTextCollapsing","setNotesPanelRepliesCollapsing","enableNotesPanelRepliesCollapsing","setCommentThreadExpansion","enableCommentThreadExpansion","enableFadePageNavigationComponent","disableFadePageNavigationComponent","enablePageDeletionConfirmationModal","disablePageDeletionConfirmationModal","setWatermarkModalOptions","replaceRedactionSearchPattern","searchPattern","setThumbnailSelectionMode","addRedactionSearchPattern","removeRedactionSearchPattern","searchPatternType","setZoomStepFactors","setNotesPanelCustomHeader","setNotesPanelEmptyPanel","addMeasurementScalePreset","measurementSystem","newPreset","removeMeasurementScalePreset","setIsMultipleScalesMode","setReplyAttachmentPreviewEnabled","setNotesPanelMultiSelect","setReplyAttachmentHandler","setCustomSettings","setToolDefaultStyleUpdateFromAnnotationPopupEnabled","setMultiViewerSyncScrollingMode","multiViewerComparedSyncScrollingMode","setTextSignatureQuality","setEnableMeasurementAnnotationsFilter","emptyArgument","toolMode","GenericAnnotationCreateTool","getAnnotationCreateToolNames","toolNameArray","currTool","currentId","getStringId","useID","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","react","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","_useState2","setT","isMounted","boundReset","isInitial","mozURL","BlobStream","WritableStream","_chunks","_blob","_write","toBlobURL","fetchApi","MentionsManager","idMentionDataMap","allowedTrailingCharacters","mentionLookupCallback","defaultMentionsSearchCallback","handleAnnotationsAdded","handleAnnotationsModified","handleAnnotationsDeleted","newMentions","mentionData","extractMentionDataFromAnnot","mentions","modifiedMentions","deletedMentions","prevMentionData","contentWithoutMentions","currMentionData","prevMentions","currMentions","currMention","prevMention","isSameMention","deltas","mention","formattedMentionTextList","formattedMentionText","denotationChar","markupRegex","plainTextValue","wholeMatch","contents","isValidMention","annotId","startIndex","nextChar","isEndOfString","allowedChars","getAllowedTrailingCharacters","extractMentionDataFromStr","replyAnnot","addReply","email","chars","origFn","searchTerm","searchTermLowerCase","userValueIncludesSearchTerm","userIdIncludesSearchTerm","userEmailIncludesSearchTerm","italics","SwipeableWrapper","swipeToClose","closeHandler","ModalWrapper","FocusTrap","locked","containerOnClick","backButtonDataElement","onBackClick","closeButtonDataElement","onCloseClick","PresetMeasurementSystems","METRIC","IMPERIAL","metricPreset","imperialPreset","fractionalPrecisions","PrecisionType","DECIMAL","FRACTIONAL","precisionOptions","precisionFractions","0.125","0.0625","0.03125","0.015625","floatRegex","inFractionalRegex","ftInFractionalRegex","ftInDecimalRegex","parseFtInDecimal","valueStr","sum","parseInFractional","parseFtInFractional","fractionalUnits","metricUnits","ifFractionalPrecision","precision","hintValues","unitConversion","convertUnit","unit","newUnit","scalePresetPrecision","initialScale","pageScale","worldScale","selectedPageNumbers","onSelectedPageNumbersChange","onBlurHandler","PageNumberInput","placeHolder","pageString","setPageString","getPageString","selectedPageArray","sortedPages","selectedPagesString","pageNumbersArray","getPageArrayFromString","pageNumbersString","arraySpeciesConstructor","NonceProvider","createEmotionCache","emotionCache","error1","hasIndices","dotAll","$RegExp","MISSED_STICKY","CONVERT_TO_STRING","codeAt","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","sameValue","nativeSearch","searcher","previousLastIndex","FunctionName","createIteratorConstructor","IteratorsCore","CONFIGURABLE_FUNCTION_NAME","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","$getOwnPropertyNames","windowNames","getWindowNames","IS_RIGHT","mergeSort","insertionSort","llength","rlength","lindex","rindex","defineBuiltIns","anInstance","toIndex","IEEE754","arrayFill","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","packIEEE754","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","conversion","INCORRECT_ARRAY_BUFFER_NAME","testView","$setInt8","setInt8","getInt8","bufferLength","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","endPos","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","isIntegralNumber","typedArrayFrom","setSpecies","nativeDefineProperty","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","BYTES","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","webpackContext","webpackContextResolve","addClassName","inputOptions","addUserSelectStyles","styleEl","createCSSTransform","controlPos","positionOffset","translation","_getPrefix","browserPrefixToKey","createSVGTransform","getTouch","_shims","getTouchIdentifier","computedStyle","matchesSelector","matchesSelectorAndParentsTo","baseNode","offsetXYFromParent","offsetParentRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","removeEvent","removeUserSelectStyles","selection","getSelection","removeAllRanges","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","matchesSelectorFunc","unitSuffix","defaultX","defaultY","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","existing","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","er","originalListener","spliceOne","rawListeners","Stream","Transform","PassThrough","copyProps","SafeBuffer","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","destroy","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","hasInstance","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","_default","_Node","Declaration","_cssSyntaxError","_stringifier","_stringify","Node","raws","positionBy","stringifier","cloneBefore","cloneAfter","insertAfter","replaceWith","_nodes","after","fixed","defaultType","cleanRaws","keepBetween","between","positionInside","word","builder","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","trailingSlash","paths","fromParts","toParts","samePartsLength","outputParts","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","_parser","_input","parser","Comment","_Container","AtRule","_Container$prototype$","_Container$prototype$2","_declaration","_comment","_createForOfIteratorHelperLoose","allowArrayLike","lastEach","walk","postcssNode","walkDecls","walkRules","walkAtRules","walkComments","_children","_step","_iterator","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","exist","_step5","_iterator5","_step6","_iterator6","removeAll","_step7","_iterator7","replaceValues","pattern","decl","fast","sample","cleanSource","_step8","_iterator8","_step9","_iterator9","_container","_list","Rule","comma","arrayWithoutHoles","iterableToArray","nonIterableSpread","enterReaderMode","xfdf","createFromXFDF","fdfDoc","fdfUpdate","disableFeatures","exitReaderMode","enableFeatures","fdfExtract","ExtractFlag","e_both","saveAsXFDFAsString","TextMarkupAnnotation","OverlayItem","buttonName","currentZoomLevel","isMarqueeZoomActive","onClickZoomLevelOption","onClickMarqueeZoom","isMarqueeToolButtonDisabled","ZoomOverlay","zoomValue","ZoomItem","onItemSelected","selectedItemStyle","Selector","customSelector","optionSelected","DndContext","dragDropManager","$repeat","repeat","un$ToFixed","multiply","c2","divide","dataToString","fractionDigits","fractDigits","sign","useDragDropManager","quot","attribute","acceptFormats","FilePickerPanel","onFileProcessed","shouldShowIcon","setErrorMessage","onDrop","processedFile","mergeDocuments","sourceArray","nextCount","newDocument","newDocumentPageCount","pageIndexToInsert","allowMultiple","LTS","LL","LLL","LLLL","formats","callRegExpExec","$push","SPLIT","nativeSplit","internalSplit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","originalExec","NoteTextPreview","panelWidth","linesToBreak","renderRichText","richTextStyle","resize","comment","setExpand","previewElementWidth","setPreviewWidth","charsPerLine","setCharsperLine","showPrompt","setShowPrompt","textToDisplay","prompt","noteTextPreviewClass","textNodeWidth","textWidth","getTextWidth","averageCharWidth","isFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","FULLSCREEN_MODE_TOGGLED","isInFullscreen","docElm","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","ALLOW_KEYBOARD_INPUT","webkitCurrentFullScreenElement","EmotionNonceProvider","createCache","ReactSelectWebComponentProvider","ordinaryToPrimitive","pref","exoticToPrim","enforceInternalState","CONFIGURABLE_LENGTH","TEMPLATE","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","names","channel","validateArgumentsLength","IS_IOS","clearImmediate","Dispatch","MessageChannel","counter","runner","post","postMessage","protocol","port2","port1","onmessage","importScripts","innerResult","innerError","newPromiseCapability","promiseCapability","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","callWithSafeIterationClosing","IS_CONSTRUCTOR","mapping","MSIE","wrap","scheduler","boundArgs","setInterval","ENUMERABLE_NEXT","PrototypeOfArrayIteratorPrototype","arrayIterator","InternalMetadataModule","iterate","IS_WEAK","ADDER","NativeConstructor","NativePrototype","fixMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","getOwnPropertyNamesExternalModule","isExtensible","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","fastKey","getWeakData","onFreeze","internalStateGetterFor","define","previous","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","hint","keyFor","TO_ENTRIES","firefox","UA","webkit","regExpFlags","$assign","partArgs","clipboardData","clipboard","writeText","textarea","setSelectionRange","n$ParseFloat","trimmedString","toPositiveInteger","searchParams","pathname","URLSearchParams","username","hash","USE_NATIVE_URL","arraySort","getInternalParamsState","URL_SEARCH_PARAMS","safeGetBuiltIn","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","serialize","URLSearchParamsIterator","params","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","query","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","getAll","headersHas","headersSet","wrapRequestOptions","RequestConstructor","Request","disableTitle","colorsAreHex","colorsToIgnore","canDragX","draggable","axis","canDragY","createCoreData","isStart","lastX","findDOMNode","lastY","createDraggableData","coreData","getBoundPosition","cloneBounds","boundNode","ownerWindow","boundNodeEl","nodeStyle","boundNodeStyle","_domFns","getControlPosition","touchIdentifier","draggableCore","touchObj","snapToGrid","grid","pendingX","pendingY","emptyImage","getEmptyImage","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","useCollector","collect","onUpdate","collected","setCollected","updateCollected","nextValue","ReadableState","EElistenerCount","debugUtil","debuglog","StringDecoder","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","enc","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","ev","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_transform","_flush","err2","createRange","AsapQueue","pendingErrors","flushing","capacity","currentIndex","scan","newLength","registerPendingError","requestErrorThrow","requestFlush","makeRequestCall","makeRequestCallFromTimer","task","TaskFactory","freeTasks","tasks","RawTask","compareOption","optionValue","optionLabel","allowCreateWhileLoading","createOptionPosition","formatCreateLabel","isValidNewOption","selectOptions","getNewOptionData","__isNew__","SelectCreatable","Creatable","onCreateOption","newOption","valueArray","newOptionData","newActionMeta","groupedAnnotation","FacingCover","FacingCoverContinuous","_picocolors","_terminalHighlight","_wrapNativeSuper","Class","_cache","_construct","Parent","_Error","CssSyntaxError","plugin","setMessage","captureStackTrace","showSourceCode","isColorSupported","lines","mark","red","aside","gray","gutter","DEFAULT_RAW","colon","indent","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","semicolon","Stringifier","rawValue","important","ownSemicolon","atrule","afterName","own","rawCache","beforeAfter","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","_lazyResult","Processor","plugins","_process","_x","normalized","postcss","postcssPlugin","_mapGenerator","_stringify2","_result","_parse","LazyResult","stringified","processed","inline","syntax","warnings","onFulfilled","onRejected","catch","finally","onFinally","postcssVersion","asyncTick","processing","lastPlugin","generate","messages","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","generator","eachMapping","newMapping","generated","original","addMapping","sourceFile","sourceRelative","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","toArray","encode","_generateSourcesContent","aSources","aSourceRoot","sourcesContent","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","hasNativeMap","_array","fromArray","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","separators","quote","Root","ignore","toResult","calculateSizeAndPositionDataAndUpdateScrollOffset","cellCount","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","scrollToIndex","updateScrollOffsetForScrollToIndex","CellSizeAndPositionManager","cellSizeGetter","estimatedCellSize","_cellSizeGetter","_cellCount","_estimatedCellSize","_lastMeasuredIndex","lastMeasuredCellSizeAndPosition","getSizeAndPositionOfLastMeasuredCell","_cellSizeAndPositionData","_lastBatchedIndex","_ref3$align","align","containerSize","currentOffset","targetIndex","idealOffset","datum","getSizeAndPositionOfCell","maxOffset","minOffset","totalSize","getTotalSize","_findNearestCell","interval","_binarySearch","lastMeasuredIndex","_exponentialSearch","getMaxElementSize","chrome","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","_cellSizeAndPositionManager","_maxScrollSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","safeTotalSize","offsetPercentage","_getOffsetPercentage","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","getVisibleCellRange","resetCell","createCallbackMemoizer","requireAllKeys","cachedIndices","indices","allInitialized","indexChanged","cachedValue","updateScrollIndexHelper","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","scrollToAlignment","sizeJustIncreasedFromZero","updateScrollIndexCallback","hasScrollToIndex","win","oRequestAnimationFrame","msRequestAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","caf","frame","SCROLL_POSITION_CHANGE_REASONS","Grid","_disablePointerEventsTimeoutId","isScrolling","needToResetStyleCache","onSectionRendered","_onGridRenderedMemoizer","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","columnStartIndex","_renderedColumnStartIndex","columnStopIndex","_renderedColumnStopIndex","rowOverscanStartIndex","_rowStartIndex","rowOverscanStopIndex","_rowStopIndex","rowStartIndex","_renderedRowStartIndex","rowStopIndex","_renderedRowStopIndex","_scrollingContainer","handleScrollEvent","columnSizeAndPositionManager","_wrapSizeGetter","columnWidth","_getEstimatedColumnSize","rowSizeAndPositionManager","rowCount","rowHeight","_getEstimatedRowSize","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_ref$alignment","alignment","_ref$columnIndex","columnIndex","_ref$rowIndex","rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","autoHeight","autoWidth","totalRowsHeight","totalColumnsWidth","newState","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_ref4$columnIndex","_ref4$rowIndex","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","forceUpdate","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","getScrollbarSize","_handleInvalidatedGridSize","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","columnOrRowCountJustIncreasedFromZero","autoContainerWidth","containerProps","containerRole","containerStyle","noContentRenderer","gridStyle","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","_onScroll","cellRenderer","cellRangeRenderer","deferredMeasurementCache","overscanColumnCount","overscanIndicesGetter","overscanRowCount","isScrollingOptOut","visibleColumnIndices","visibleRowIndices","horizontalOffsetAdjustment","getOffsetAdjustment","verticalOffsetAdjustment","overscanColumnIndices","overscanCellsCount","scrollDirection","stopIndex","overscanRowIndices","overscanStartIndex","overscanStopIndex","hasFixedHeight","hasFixedWidth","cellCache","styleCache","scrollingResetTimeInterval","_debounceScrollEndedCallback","recomputeGridSize","_onScrollMemoizer","_this3$props","onScrollbarPresenceChange","horizontal","vertical","_ref8","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","maybeStateA","maybeStateB","estimatedColumnSize","estimatedRowSize","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","renderedCells","areOffsetsAdjusted","canCacheStyle","rowDatum","columnDatum","cellRendererParams","renderedCell","ArrowKeyStepper","_getPrototypeOf2","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","_updateScrollState","_this$_getScrollState3","_onKeyDown","_onSectionRendered","isControlled","onScrollToChange","_React$Component","AutoSizer","defaultHeight","defaultWidth","disableHeight","disableWidth","_parentNode","newHeight","newWidth","autoSizer","_autoSizer","_detectElementResize","_onResize","outerStyle","childParams","_setRef","CellMeasurer","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","_child","_maybeMeasureCell","_measure","registerChild","_registerChild","styleWidth","styleHeight","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","invalidateCellSizeAfterRender","CellMeasurerCache","_keyMapper","_columnWidthCache","_defaultWidth","_rowHeightCache","_defaultHeight","fixedHeight","fixedWidth","keyMapper","_hasFixedHeight","_hasFixedWidth","_minHeight","_minWidth","defaultKeyMapper","_cellHeightCache","_cellWidthCache","_updateCachedColumnAndRowSizes","_rowCount","_columnCount","columnKey","rowKey","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollToCell","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_scrollbarSize","_cellLayoutManager$ge","totalHeight","totalWidth","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","cellRenderers","collectionStyle","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","_sections","getSections","section","getCellIndices","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sections","sectionX","sectionY","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","_lastRenderedCellIndices","_isScrollingChange","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","onRowsRendered","unloadedRanges","loadMoreRows","unloadedRange","lastRenderedStartIndex","lastRenderedStopIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","rangeStartIndex","rangeStopIndex","potentialStopIndex","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_loadUnloadedRanges","registeredChild","List","rowRenderer","widthDescriptor","getOffsetForCell","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","scrollToPosition","noRowsRenderer","_cellRenderer","ge","_GEP","_GEA","gt","_GTP","_GTA","lt","_LTP","_LTA","le","_LEP","_LEA","eq","_EQP","_EQA","IntervalTreeNode","leftPoints","rightPoints","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","reportLeftRange","reportRightRange","reportRange","compareNumbers","compareBegin","compareEnd","pts","leftIntervals","rightIntervals","centerIntervals","IntervalTree","weight","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","_style","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_prepareForRender","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","ScrollSync","defaultHeaderRowRenderer","ASC","DESC","SortIndicator","sortDirection","defaultHeaderRenderer","dataKey","sortBy","showSortIndicator","defaultRowRenderer","onRowClick","onRowDoubleClick","onRowMouseOut","onRowMouseOver","onRowRightClick","rowData","a11yProps","onMouseOut","onContextMenu","Column","cellDataGetter","cellData","defaultSortDirection","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_Grid","_setScrollbarWidth","disableHeader","gridClassName","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","flexStyles","_getFlexStyleForColumn","_getHeaderColumns","onColumnClick","_column$props","columnData","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","msFlex","WebkitFlex","_createHeader","getScrollbarWidth","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getDimensions","serverHeight","serverWidth","getPositionOffset","elementRect","containerRect","getScrollOffset","_elementRect","_containerRect","scrollY","scrollX","getWindow","WindowScroller","updatePosition","_positionFromTop","_isMounted","_positionFromLeft","thisNode","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll","inputElement","keepTextEditSelectionOnInputFocus","handlePageChange","handleClick","currentRange","getRangeAt","startContainer","endContainer","startOffset","endOffset","isRangeModifiedByWorkerAPI","toggleSelectionHighlight","startTextNode","endTextNode","startElement","nextElementSibling","highlighNextCharacterSameLine","highlighNextCharacterNextLine","workerAPIEditedRange","startNode","endNode","previousSibling","setStart","setEnd","reinitializeRange","maxFontSize","incrementMap","BREAKS_AND_INCREMENT","48","iconButtonRef","dropdownDivRef","dropdownContainerRef","sizes","setSizes","initialFontSize","setInitialFontSize","setOpen","currSize","setCurrSize","isValidNum","isInContentEditMode","focused","getIncrement","greaterThanLast","startArr","higherIncrement","higher","getNewNumbers","newSize","checkValidity","validFontSize","debouncedSizeChange","cachedDebouncedSizeChange","setFocused","getContentBoxById","editor","itemHeight","divHeight","itemDistance","onOpenDropdown","addRange","restoreSelection","fontSizeChanged","onSelectCapture","setIsDragging","fileInputRef","handleChange","handleFileDrop","dragging","onDragEnter","onDragLeave","onDragOver","onDragExit","multiple","accept","StatefulButton","activeState","states","mount","didUpdate","unmount","getContent","shape","AnotherState","setLineLength","sliderSvg","isMouseDown","nativeEvent","getRelativeCirclePosition","isEiditingInputField","localValue","isUsingMouse","lineEnd","svgLeft","pageX","onInputKeyDown","circleCenter","getInputElement","renderSlider","ConnectedSlider","arrayMap","baseIteratee","basePickBy","getAllKeysIn","MapShim","getIndex","class_1","__entries__","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","throttle","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","subtree","_b","getInstance","instance_","defineConfigurable","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","_asapJs","_typesJs","_asapQueueJs","_taskFactoryJs","hot","_processor","_atRule","_vendor","_rule","_root","initializer","creator","transformer","processOpts","pluginOpts","vendor","atRule","XmlHttpRequestApi","ActiveXObjectApi","addQueryString","queryString","paramName","queryStringParams","customHeaders","requestOptions","ok","statusText","requestWithFetch","crossDomain","setRequestHeader","withCredentials","overrideMimeType","onreadystatechange","readyState","responseText","requestWithXmlHttpRequest","reactEvents","divergentNativeEvents","mimickedReactEvents","onInput","onFocusOut","onSelectionChange","findReactEventHandlers","findReactProperty","propertyPrefix","findReactProps","memoizedProps","_currentElement","eventType","componentProps","persist","isPersistent","reactEventName","nativeEventName","getNativeEventName","retargetEvent","composedPath","eventHandlers","DimensionsInput","autoTrim","supportedUnits","autoTrimOptions","onDimensionChange","onUnitChange","autoTrimActive","setAutoTrimActive","onAutoTrimChange","resizeInput","maxLength","decimalSize","onKeyUp","DocumentCropPopup","cropAnnotation","cropMode","onCropModeChange","closeDocumentCropPopup","applyCrop","isCropping","isPageRotated","redrawCropAnnotations","selectedPages","onSelectedPagesChange","loadedDocumentPageCount","setPages","handlePageNumbersChanged","handlePageNumberError","setPageNumberError","timeOutWhileTyping","cropNames","unitConversions","setUnit","autoTrimDimensions","setAutoTrim","isCropDimensionsContainerActive","setCropDimensionsContainerActive","toggleCropDimensions","convertUnitsToPt","convertPtToUnits","unitToConvertTo","truncateInput","specialChars","setYOffset","setHeight","setXOffset","setWidth","onCropAnnotationChanged","getY","getX","handleButtonPressed","openCropConfirmationWarning","openCropCancellationWarning","cancellationWarning","pageNumberError","pageNumberPlaceholder","radio","dimension","validateInput","setY","setX","useOnCropAnnotationChangedOrSelected","openDocumentCropPopup","setCropAnnotation","onAnnotationChanged","onAnnotationSelected","DocumentCropPopupContainer","cropCreateTool","getIsCropping","setIsCropping","elementsToClose","setSelectedPages","getPagesToCrop","handleToolModeChange","newTool","oldTool","CropCreateTool","reenableHeader","handleCropModeChange","newMode","setCropMode","toolsHeader","cropPopupRef","popupWidth","popupHeight","cropPopupOffset","setPagesToCrop","CROP","setRect","cropName","multiSelectAnnotations","useOnClickPrepareSoundAnnotation","audio","prepareAudioBlob","AudioPlaybackPopup","autoplay","handleAudioPlaybackError","handleAudioInitializeError","handleCloseAudioPlaybackPopup","isPlayingAudio","setIsPlayingAudio","durationValue","setDurationValue","durationString","setDurationString","currentTimeValue","setCurrentTimeValue","currentTimeString","setCurrentTimeString","audioElementRef","isPlaying","play","getTimeStampStringFromSeconds","totalSeconds","minutes","padStart","seconds","audioContext","AudioContext","createMediaElementSource","destination","playAudio","xmlns","onLoadedMetadata","timeStampString","onTimeUpdate","onEnded","AudioPlaybackPopupContainer","draggableRef","closeAudioPlaybackPopup","onSoundAnnotationDeleted","renderAudioPlaybackPopup","ProgressModal","progressCircle","circle","circumference","baseVal","Modal","PasswordModal","passwordInput","setPassword","userCancelled","setUserCancelled","handleSubmit","getErrorModal","renderEnterPasswordContent","wrongPassword","onSubmit","remainingAttempts","tabsPadding","proxyAccessor","NativeRegExp","SyntaxError","IS_NCG","CORRECT_NEW","BASE_FORCED","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","baseAssignValue","objValue","defineBuiltInAccessor","hex","isInteger","freeGlobal","freeSelf","other","nativeObjectToString","Internal","OwnPromiseCapability","nativeThen","microtask","hostReportErrors","perform","Queue","PromiseConstructorDetection","newPromiseCapabilityModule","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","isUnhandled","internalReject","internalResolve","executor","PromiseWrapper","toggle","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","Pebble","capability","$promiseResolve","alreadyCalled","real","race","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","StrictMode","Profiler","Suspense","for","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isPureReactComponent","__self","__source","_owner","_status","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","only","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","lazy","_payload","_init","useDebugValue","useReducer","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","pa","qa","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","eb","fb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","ob","MSApp","execUnsafeLocalFunction","namespaceURI","pb","lastChild","nodeValue","qb","gridArea","lineClamp","rb","sb","tb","setProperty","ub","menuitem","area","br","col","embed","hr","keygen","track","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","gc","hc","ic","jc","kc","lc","mc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","vd","Ad","screenX","screenY","pageY","zd","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","ae","be","documentMode","ce","de","ee","fe","he","ie","datetime","tel","week","me","ne","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","Ne","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ff","gf","hf","je","char","ke","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","Og","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","ah","bh","ch","dh","eh","fh","gh","ih","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","onclick","createElementNS","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","_reactRootContainer","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","Me","compareDocumentPosition","onCommitFiberRoot","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","inject","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","unstable_forceFrameRate","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ENTRIES","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","preventExtensions","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","QObject","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","$stringify","numberToString","tester","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","tailPos","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","nBits","copyWithin","inc","arrayFromConstructorAndList","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","http","https","ws","wss","isWindowsDriveLetter","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","failure","urlString","stateOverride","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","address","pieceIndex","parseIPv6","partsLength","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","regexNonASCII","regexSeparators","OVERFLOW_ERROR","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","labels","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","objectOf","exact","checkPropTypes","iteratee","baseGet","baseSet","castPath","assignValue","toKey","customizer","nested","getNative","reIsUint","storage","_getStorage","removeItem","storageType","testKey","hasStorage","noopStorage","$hypot","value1","value2","div","aLen","larg","_DraggableCore","_propTypes","_reactDom","_clsx2","_positionFns","_log","dragged","uiData","slackX","slackY","_getBoundPosition2","newStateX","newStateY","onDrag","onStop","_this$props$position","defaultPosition","prevPropsPosition","isElementSVG","_this$props$nodeRef$c","_this$props$nodeRef","nodeRef","_clsx","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","onDragStart","onDragStop","browserPrefixToStyle","getPrefix","prefixes","_window$document","_window$document$docu","shouldCapitalize","kebabToTitleCase","eventsFor","dragEventFor","allowAnyClick","coreEvent","enableUserSelectHack","handleDrag","handleDragStop","_snapToGrid2","_snapToGrid4","_this$props2$nodeRef","jsx","jsxs","un$EndsWith","endPosition","EE","_isStdio","didOnEnd","cleanup","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","Timeout","clearFn","_id","_clearFn","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","msg","trace","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","ar","pad","NODE_DEBUG","pid","timestamp","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseReject","callbackify","callbackified","maybeCb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","getBlob","mapArrayBufferViews","ary","BlobBuilderConstructor","BlobConstructor","baseRange","isIterateeCall","toFinite","fromRight","nativeCeil","asap","asapQueue","enqueueTask","taskFactory","makeRequestCallFromMutationObserver","BrowserMutationObserver","handleTimer","intervalHandle","release","arrayBufferModule","$padStart","IS_END","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","webpackAsyncContext","dim","inverse","strikethrough","black","green","yellow","blue","magenta","cyan","white","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","_sourceMap","_path","MapGenerator","mapOpts","isMap","previousMaps","isInline","isSourcesContent","withContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","consumer","isAnnotation","toBase64","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","intToCharMap","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","aSourceMapURL","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","lastOffset","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","doQuickSort","comparator","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","printed","_warning","Warning","_tokenize","Parser","spaces","createTokenizer","tokenizer","token","endOfFile","nextToken","freeSemicolon","emptyRule","endFile","bracket","tokens","back","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","_type","checkMissedSemicolon","unnamedAtrule","unexpectedClose","unclosedBlock","clean","lastTokenType","doubleColon","founded","nextOffset","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","ignoreUnclosed","NEWLINE","FEED","CR","TAB","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","COLON","SEMICOLON","CLOSE_PARENTHESES","controlChar","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","AT","RE_AT_END","SLASH","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","_previousMap","hasBOM","mapResolve","_fs","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","getAnnotationURL","sourceMapString","lastAnnotation","decodeInline","uri","lastMatch","prevPath","existsSync","readFileSync","unprefixed","Source","__self__","DOMException","support","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","rejected","readAsText","readArrayBufferAsText","formData","json","oldValue","upcased","credentials","signal","referrer","Response","bodyInit","redirectStatuses","redirect","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","responseURL","ontimeout","onabort","ponyfill","I18nextProvider","createThunkMiddleware","extraArgument","thunk","withExtraArgument","ToggleZoomOverlay","elementName","onZoomUpdated","OverlayContainer","zoomFactors","aria-live","PresetButton","isToolStyleOpen","isNodeFound","componentNode","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","handlerOptions","__outsideClickHandler","__clickOutsideHandlerProp","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","excludeScrollbar","findHighest","composed","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","wrappedRef","getClass","SignatureRowContent","altText","buttonText","SavedSignatures","onSetHandler","deleteHandler","currentlySelectedIndex","isDeleteDisabled","signature","savedSignatureIndex","SignatureStylePopup","displayedSignatures","isSignatureDeleteButtonDisabled","signatureToolArray","setSignature","signatureTool","hasLocation","addSignature","showPreview","setInitials","addInitials","showInitialsPreview","deleteSignatureAndInitials","isFullSignature","deleteSavedInitials","deleteSavedSignature","isDeletingSelectedInitials","isDeletingSelectedSignature","hidePreview","signaturesToDisplay","RubberStampOverlay","stampToolArray","stamps","deleteCustomStamps","setRubberStamp","rubberStamps","customImgs","deleteCustomStamp","openCustomSampModal","ConnectedRubberStampOverlay","ToolStylePopup","toolsOverlays","pageNavOverlays","warningModal","colorPicker","openedModal","clickedOnToolsOverlay","toolsOverlay","clickedOnPageNavOverlay","pageNavOverlay","clickedOnCreateStampModal","pageModal","complete","setToolStyles","activeToolStyle","activeToolRichTextStyle","newTextDecoration","currentTextDecoration","addUnderLine","removeUnderLine","addLineThrough","removeLineThrough","getTextDecoration","isRectangle","isEllipseMeasurementTool","handleStyleChange","handleRichTextStyleChange","handleLineStyleChange","ConnectedToolStylePopup","toolButtonDataElement","isTablet","isDesktop","ToolsDropdown","SelectedSignatureRow","displayedSignature","displayedInitial","selectedSignature","SelectedRubberStamp","prevLanguage","rubberStampToolArray","onStampsModified","isEmptyStamp","SelectedStamp","selectedStampArray","ToolsOverlay","setOverlayPosition","activeHeaderItems","isStylingOpen","siblingWidth","handleWindowResize","clickedOnAnotherToolGroupButton","isSmallComponent","noPresets","ToolsOverlayContainer","Overlay","shadow","ConnectedToolsOverlay","DISABLED_TOOL_GROUPS","DISABLED_TOOLS_KEYWORDS","SYNC_MODES","FileName","isEditing","setIsEditing","setExtension","setFileNameWithoutExtension","finishEditing","setFilename","nameArray","toolbarGroups","ribbonsWidth","setRibbonsWidth","containerWidth","setContainerWidth","hasEnoughCenteredSpace","setHasEnoughCenteredSpace","ribbonsRef","containerRef","shouldPickTool","toggleFormFieldCreationMode","startFormFieldCreationMode","endFormFieldCreationMode","toggleContentEditMode","startContentEditMode","endContentEditMode","spaceLeftOfContainer","spaceForLeftHalfOfRibbons","spaceForRibbons","getToolbarTranslationString","customHeaderProperties","filteredToolBarGroup","ApplyFormFieldButton","applyFormFields","undoButton","redoButton","isLocalStorageEnabled","priorty","hiddenOnMobileDevice","titile","annotationPopup","textPopup","contextMenuPopup","AnnotationCreateCountMeasurement","AnnotationCreateCountMeasurement2","AnnotationCreateCountMeasurement3","AnnotationCreateCountMeasurement4","AnnotationCreateDistanceMeasurement","AnnotationCreateDistanceMeasurement2","AnnotationCreateDistanceMeasurement3","AnnotationCreateDistanceMeasurement4","AnnotationCreatePerimeterMeasurement","AnnotationCreatePerimeterMeasurement2","AnnotationCreatePerimeterMeasurement3","AnnotationCreatePerimeterMeasurement4","AnnotationCreateArcMeasurement","AnnotationCreateArcMeasurement2","AnnotationCreateArcMeasurement3","AnnotationCreateArcMeasurement4","AnnotationCreateAreaMeasurement","AnnotationCreateAreaMeasurement2","AnnotationCreateAreaMeasurement3","AnnotationCreateAreaMeasurement4","AnnotationCreateEllipseMeasurement","AnnotationCreateEllipseMeasurement2","AnnotationCreateEllipseMeasurement3","AnnotationCreateEllipseMeasurement4","AnnotationCreateRectangularAreaMeasurement","AnnotationCreateRectangularAreaMeasurement2","AnnotationCreateRectangularAreaMeasurement3","AnnotationCreateRectangularAreaMeasurement4","AnnotationCreateCloudyRectangularAreaMeasurement","AnnotationCreateCloudyRectangularAreaMeasurement2","AnnotationCreateCloudyRectangularAreaMeasurement3","AnnotationCreateCloudyRectangularAreaMeasurement4","AnnotationCreateFreeHand2","AnnotationCreateFreeHand3","AnnotationCreateFreeHand4","AnnotationCreateFreeHandHighlight","AnnotationCreateFreeHandHighlight2","AnnotationCreateFreeHandHighlight3","AnnotationCreateFreeHandHighlight4","AnnotationCreateTextHighlight2","AnnotationCreateTextHighlight3","AnnotationCreateTextHighlight4","AnnotationCreateTextUnderline2","AnnotationCreateTextUnderline3","AnnotationCreateTextUnderline4","AnnotationCreateTextSquiggly2","AnnotationCreateTextSquiggly3","AnnotationCreateTextSquiggly4","AnnotationCreateTextStrikeout2","AnnotationCreateTextStrikeout3","AnnotationCreateTextStrikeout4","AnnotationCreateFreeText2","AnnotationCreateFreeText3","AnnotationCreateFreeText4","AnnotationCreateDateFreeText","AnnotationCreateDateFreeText2","AnnotationCreateDateFreeText3","AnnotationCreateDateFreeText4","AnnotationCreateMarkInsertText","AnnotationCreateMarkInsertText2","AnnotationCreateMarkInsertText3","AnnotationCreateMarkInsertText4","AnnotationCreateMarkReplaceText","AnnotationCreateMarkReplaceText2","AnnotationCreateMarkReplaceText3","AnnotationCreateMarkReplaceText4","AnnotationCreateCallout2","AnnotationCreateCallout3","AnnotationCreateCallout4","AnnotationCreateSticky2","AnnotationCreateSticky3","AnnotationCreateSticky4","AnnotationCreateRectangle2","AnnotationCreateRectangle3","AnnotationCreateRectangle4","AnnotationCreateEllipse2","AnnotationCreateEllipse3","AnnotationCreateEllipse4","AnnotationCreateArc","AnnotationCreateArc2","AnnotationCreateArc3","AnnotationCreateArc4","AnnotationCreateLine2","AnnotationCreateLine3","AnnotationCreateLine4","AnnotationCreatePolyline","AnnotationCreatePolyline2","AnnotationCreatePolyline3","AnnotationCreatePolyline4","AnnotationCreatePolygon","AnnotationCreatePolygon2","AnnotationCreatePolygon3","AnnotationCreatePolygon4","AnnotationCreatePolygonCloud","AnnotationCreatePolygonCloud2","AnnotationCreatePolygonCloud3","AnnotationCreatePolygonCloud4","CALIBRATION_MEASUREMENT","FORM_FILL_CROSS","FORM_FILL_CHECKMARK","FORM_FILL_DOT","OUTLINE_DESTINATION","signatureModal","pageReplacementModal","linkModal","rubberStampTab","filterAnnotModal","defaultToolsWithInlineComment","annotationInstance","webFonts","timeFirst","includeReplies","isDocumentFilterActive","authorFilter","colorFilter","typeFilter","statusFilter","creditCards","phoneNumbers","emails","customCSS","defaultDisabledElements","fullAPI","preloadWorker","enableOptimizedWorkers","serverUrlHeaders","useSharedWorker","disableI18n","pdfWorkerTransportPromise","officeWorkerTransportPromise","customizableUI","headerName","defaultValues","groupOrder","removeEmptyRows","removeEmptyGroups","createRawValueGroup","REHYDRATE","REGISTER","autoMergeLevel1","inboundState","originalState","reducedState","createPersistoid","transforms","storageKey","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","endState","subState","onWriteFail","passWhitelistBlacklist","defaultDeserialize","rawState","reduceRight","serial","warnIfRemoveError","persistReducer","baseReducer","stateReconciler","getStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","rehydrate","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","bootstrapped","firstIndex","viewerPersistConfig","searchPersistConfig","tooltip","buttonGroup","newToolButtonObjects","existingDataElementFiltered","modal","updatedModularHeaders","updatedState","addIndex","updatedRedactionSearchPatterns","searchReducer","userReducer","documentFile","documentPageNumber","newBookmarks","documentReducer","featureFlagsReducer","wv3dPropertiesPanelReducer","fontFaces","officeEditorReducer","digitalSignatureValidationReducer","PersistGate","persistor","onBeforeLift","_unsubscribe","handlePersistorState","loading","LogoBar","logoText","versionText","packageConfig","apryseURL","Accessibility","setIsVisible","isNotesPanelDisabled","isSearchPanelDisabled","a11yClass","searchEl","noteEl","ScrollGroup","scrollRef","isScrolledToEnd","setIsScrolledToEnd","isScrolledToStart","setIsScrolledToStart","checkScrollPosition","ToolGroupButtonsScroll","toolGroupButtonsItems","toolBtn","screen","innerKey","HeaderItems","handledToolGroupButtons","isToLeftOfActive","closeTab","setDisabled","HoverTab","isHovering","setIsHovering","onMouseEnter","onMouseLeave","getWindowDimensions","TabsHeader","setDragging","dragIndex","setDragIndex","dropTarget","setDropTarget","hovering","setHovering","hoveredTab","currTabs","windowDimensions","setWindowDimensions","handleResize","useWindowDimensions","onDragOverHoverTab","breakpoint","activeIndex","moveTab","effectAllowed","moveLeft","onDragEnd","renderedTabs","additionalTabs","Header","isToolsHeaderOpen","MainHeader","ToolsHeader","isHeaderDisabled","ConnectedToolsHeader","isToolsOverlayOpen","isToolsOverlayDisabled","isSignatureOverlayOpen","isSignatureOverlayDisabled","HeaderContainer","getWidthAfterTransition","oldTransition","expandContainerWidthBy","shrinkContainerWidthBy","PageNavOverlay","textInput","pageToGo","isCustomPageLabels","enableFadePageNavigation","FadeOut","showNavOverlay","isLogoBarEnabled","goToPrevPage","goToNextPage","isLeftPanelDisabled","ConnectedPageNavOverlay","zoomLevel","getActualZoomLevel","MarqueeZoomTool","ReaderModeStylePopup","popupRef","ReaderModeViewer","WebViewerReadingMode","wvReadingMode","pageNumberUpdateHandler","editStyleHandler","onEditStyle","setAddAnnotConfig","goToPage","readerModeElement","annotationTypes","AnnotationType","TextHighlightCreateTool","Highlight","TextUnderlineCreateTool","Underline","TextStrikeoutCreateTool","Strikeout","TextSquigglyCreateTool","Squiggly","annotType","getAnnotTypeFromToolMode","setAnnotStyleCb","doneSetAnnotColorCb","getColorMapKey","showStylePopup","originalMaxZoom","originalEnableFadePageNavigation","updateMaxZoom","renderDocument","handleOpacityChange","handleStylePopupClose","openedElementsMap","LazyLoadWrapper","onOpenHook","passedInProps","onOpenProps","elementWasOpened","ScaleOverlayContainer","MeasurementOverlay","ViewControlsOverlay","MenuOverlay","PageManipulationOverlay","AnnotationContentOverlay","RotatePopup","ThumbnailMoreOptionsPopup","ThumbnailMoreOptionsPopupSmall","AnnotationPopup","FormFieldEditPopup","TextPopup","ContextMenuPopup","RichTextPopup","InlineCommentingPopup","ContentEditLinkModal","SignatureModal","ScaleModal","PrintModal","ErrorModal","CreateStampModal","PageReplacementModal","LinkModal","FilterAnnotModal","PageRedactionModal","CalibrationModal","SettingsModal","SaveModal","InsertPageModal","LoadingModal","WarningModal","Model3DModal","ColorPickerModal","OpenFileModal","SignatureValidationModal","CustomModal","CreatePortfolioModal","LazyLoadComponents","SearchPanel","OfficeEditorToolsHeader","isMeasurementExcludeCalibration","measurement","useOnMeasurementToolOrAnnotationSelected","setAnnotations","selectedTool","setSelectedTool","measuredAnnotations","onScaleUpdated","changedAnnotations","isMeasurementToolWithInfo","isSmallAnnotation","minSize","getRectPadding","shouldShowInfo","showInfo","useOnCountMeasurementAnnotationSelected","prevActiveToolName","usePrevious","setAnnotation","isCountMeasurementAnnotation","validate","shouldShowCustomOverlay","DocumentContainer","isMouseWheelZoomEnabled","wheelToZoom","shouldGoUp","shouldGoDown","wheelToNavigatePages","pageUp","pageDown","showPageNavigationOverlay","debouncedHidePageNavigationOverlay","hidePageNavigationOverlay","isSearchOverlayOpen","updateContainerWidth","updateContainerSize","showAndFadeNavigationOverlay","isMultiTabEmptyPageOpen","documentContentContainerWidthStyle","bottomHeaderHeight","leftHeaderWidth","documentContainerLeftMargin","documentContainerClassName","isHeaderOpen","getClassName","documentClassName","showPageNav","footerStyle","onTransitionEnd","pageNavOnMouseEnter","pageNavOnMouseLeave","ConnectedDocumentContainer","LeftPanelTabs","activePanel","showPortfolio","isLeftPanelTabsDisabled","disabledCustomPanelTabs","PortfolioContext","getDecoratedComponent","currentRef","decoratedRef","isValidType","allowArray","Disposable","isDisposed","dispose","isDisposable","CompositeDisposable","disposables","shouldDispose","currentDisposables","SerialDisposable","old","decorateHandler","DecoratedComponent","createHandler","createMonitor","createConnector","registerHandler","containerDisplayName","_options$arePropsEqua","arePropsEqual","Decorated","DragDropContainer","getCurrentState","disposable","receiveProps","handlerId","currentType","receiveType","handlerMonitor","handlerConnector","_registerHandler2","unregister","receiveHandlerId","subscribeToStateChange","handlerIds","setDisposable","_jsx","receiveDragDropManager","_this2$handlerConnect","reconnect","_item$$$typeof","isRefForwardingComponent","getBackend","hoistStatics","ALLOWED_SPEC_METHODS","TargetImpl","spec","canDrop","createTargetFactory","DropTarget","createTarget","registerTarget","DropTargetMonitorImpl","TargetConnector","REQUIRED_SPEC_METHODS","SourceImpl","canDrag","globalMonitor","createSourceFactory","DragSource","createSource","registerSource","SourceConnector","DragSourceMonitorImpl","ItemTypes","DropLocation","anchorButton","shouldDisplayDeleteButton","onClosePopup","onRenameClick","onSetDestinationClick","onDownloadClick","onDeleteClick","onOpenClick","MoreOptionsContextMenuPopup","isAdding","isPortfolioRenaming","setPortfolioRenaming","setIsHovered","PortfolioItemContent","setAddingNewFolder","addNewFolder","refreshPortfolio","renamePortfolioItem","removePortfolioItem","openPortfolioItem","downloadPortfolioItem","isNameDuplicated","isDefault","setIsDefault","portfolioEditName","setPortfolioEditName","isContextMenuOpen","setContextMenuOpen","isRenameButtonDisabled","onAddFolder","onRenamePortfolioItem","onCancelPortfolio","wrapperClassName","fillWidth","messageText","movePortfolioInward","movePortfolioBeforeTarget","movePortfolioAfterTarget","connectDragSource","connectDragPreview","connectDropTarget","isDraggedUpwards","isDraggedDownwards","PortfolioItem","setActivePortfolioItem","isPortfolioItemActive","isAddingNewFolder","isRenaming","setIsRenaming","isHovered","setHovered","elementRef","getNode","togglePortfolioItem","PortfolioItemNested","dropTargetMonitor","dropTargetContainer","dragObject","dragPortfolioItem","dragSourceNode","dropPortfolioItem","dropTargetNode","dropLocation","dropTargetBoundingRect","dropTargetVerticalMiddlePoint","dropTargetClientY","getClientOffset","isOver","shallow","dropTargetState","dragSourceMonitor","dragSourceContainer","dragSourceState","dragSource","layerStyles","getItemStyles","initialOffset","WebkitTransform","PortfolioDragLayer","useDragLayer","dragLayerState","getInitialSourceClientOffset","renderDragItemPreview","PortfolioPanel","portfolioFiles","activePortfolioItem","onAddFile","addNewFile","dragItem","dropItem","moveFileInArray","dragItemId","dropItemId","moveDirection","fileArray","dropItemIndex","moveToIndex","MoveDirection","fileToRemove","DndProvider","TouchBackEnd","PageManipulationOverlayButtonContainer","PageManipulationOverlayButton","selectedPageIndexes","ThumbnailControls","isMoreOptionDisabled","isPageDeletionConfirmationModalEnabled","selectedIndexes","pageThumbnailControlMenuItems","isXod","isOffice","BUTTONS_MAP","isCustomized","occurredButtons","CHECKBOX","Thumbnail","onFinishLoading","onLoad","onRemove","isDraggable","shouldShowControls","thumbnailSize","isReaderModeOrReadOnly","canLoad","panelSelector","thumbSize","setDimensions","setLoaded","loadTimeout","thumbnailContainer","viewerRotation","childElement","ratio","cssTransform","allowUseOfOptimizedThumbnail","contentChanged","moved","added","isPageAdded","didPageChange","changedPage","didPageMove","movedPage","isPageRemoved","newPageCount","onRotationUpdated","useDidUpdate","pageLabel","checkboxRotateClass","checkboxToggled","multiSelectionKeyPressed","shiftKeyPressed","updatedSelectedPages","shiftKeyPivot","currSelectMinIndex","currSelectMaxIndex","thumbnailSelectionModes","lastSelectedPageIndex","selectionModes","DocumentControls","initialPagesString","previousPageString","setPreviousPageString","enableThumbnailSelectingPages","pageIndexes","updatedString","toggleDocumentControl","srcToMerge","mergeToPage","shouldFireEvent","mergeResults","DOCUMENT_MERGED","ThumbnailsPanel","isThumbnailMergingEnabled","isThumbnailReorderingEnabled","isThumbnailControlDisabled","isThumbnailSliderDisabled","totalPagesFromSecondaryDocumentViewer","isRightClickEnabled","listRef","pendingThumbs","thumbs","afterMovePageNumber","setCanLoad","draggingOverPageIndex","setDraggingOverPageIndex","isDraggingToPreviousPage","setDraggingToPreviousPage","numberOfColumns","setNumberOfColumns","setThumbnailSize","lastTimeTriggered","setLastTimeTriggered","globalIndex","setGlobalIndex","activeThumbRenders","thumbContainer","getThumbnailSize","annotCanvas","getCanvasMultiplier","overridePageRotation","overridePageCanvas","debouncedDraw","onBeginRendering","onFinishedRendering","needsMoreRendering","onPageComplete","updatedPagesIndexes","onPageNumberUpdated","scrollToRowHelper","thumbnail","hoverAreaHeight","draggingSelectedPage","pagesToMove","THUMBNAIL_DRAGGED","frameElement","extractedDataPromise","pagesExtracted","externalPageWebViewerFrameId","insertTo","viewerID","mergingDocument","otherWebViewerIframe","docToMerge","targetPageNumber","pageNumbersToMove","updatedPagesNumbers","THUMBNAIL_DROPPED","pageNumbersBeforeMove","pagesNumbersAfterMove","numberOfPagesMoved","thumbIsLoaded","thumbIsPending","removeFromPendingThumbs","getPendingThumbIndex","thumbStatus","canvases","renderThumbnails","columnsOfThumbnails","allowPageOperationsUI","thumbIndex","allowDragAndDrop","showPlaceHolder","updateNumberOfColumns","thumbnailHeight","thumbnailAutoScrollAreaStyle","aria-valuemin","aria-valuemax","aria-valuenow","OutlineContext","OutlineUtils","setDoc","setOutlineName","findPDFNetOutline","setTitle","bookmarkEventObject","bookmark","OUTLINE_BOOKMARKS_CHANGED","setOutlineDestination","getPage","Destination","createXYZ","Action","createGoto","setAction","addRootOutline","createOutlineXYZ","newOutline","addRootBookmark","addNewOutline","hasActiveOutline","getLastOutline","addChild","addNext","findPathInTree","addedOutlinePath","Bookmark","deleteOutline","moveOutlineUp","getPrev","addPrev","changedOutlinePath","moveOutlineDown","getNext","moveOutlineBeforeTarget","targetPath","currTarget","moveOutlineAfterTarget","moveOutlineOutward","getIndent","getParent","moveOutlineOutwardBeforeParent","moveOutlineOutwardBeforeAncestor","ancestorPath","ancestorTarget","moveOutlineInTarget","targetOutline","getLastChild","moveOutlineInward","getCanMoveState","outward","inward","getOutlineId","getSplitter","getFirstBookmark","childIdx","getFirstChild","rootOutline","isAncestor","parentOutline","getPathArray","pdfnetOutline","OutlineControls","activeOutlinePath","setActiveOutlinePath","updateOutlines","canMove","setCanMove","nextIndexRef","outlineUtils","setCanMoveState","nextIndex","outlinePath","isOutlineRenaming","setOutlineRenaming","isOutlineChangingDest","setOutlineChangingDest","textColor","OutlineContent","currentDestPage","currentDestText","editingOutlines","setEditingOutlines","isMultiSelectMode","isOutlineEditable","renameOutline","updateOutlineDest","removeOutlines","outlineText","setOutlineText","onAddOutline","onRenameOutline","onCancelOutline","editingOutlinesClone","isOutlineEditing","textStyle","setMultiSelected","Outline","isOutlineActive","setAddingNewOutline","isAddingNewOutline","isAnyOutlineRenaming","selectedOutlines","setIsSelected","isChangingDest","setChangingDest","clearSingleClick","setClearSingleClick","rgbObject","rValue","gValue","bValue","toggleOutline","onSingleClick","getChildren","OutlineNested","dragOutline","dropOutline","hoverIndex","DRAG_OUTLINE","draggedOutline","DROP_OUTLINE","OutlinesDragLayer","renderDragItem","OutlinesPanel","outlineEditingEnabled","defaultDestText","areaDestinationText","defaultDestCoord","setCurrentDestText","currentDestCoord","setCurrentDestCoord","setCurrentDestPage","setOutlineEditable","setAnyOutlineRenaming","setMultiSelectMode","setSelectedOutlines","nextPathRef","TOOL_NAME","isAnyEditing","onSetDestination","onOutlinesBookmarksChanged","getCurrentDestViewerCoord","getViewerCoordinates","outlineName","nextPath","clearOutlineDestination","generalMoveOutlineAction","dragPath","dropPath","outlinesToRemove","fullIndex","defaultLabel","isMultiSelectionMode","setSelected","onSave","bookmarkText","setBookmarkText","onSaveBookmark","onCancelBookmark","BookmarksPanel","isAddingNewBookmark","setAddingNewBookmark","setMultiSelectionMode","selectingBookmarks","setSelectingBookmarks","bm","onRemoveBookmarks","isSwitch","newText","updateLayerVisibililty","layerToUpdate","newVisibililtyState","newLayer","visible","prevVisibleState","updateChildrenDisabledState","parentLayer","newParentLayer","childLayer","newChildLayer","updateChildrenVisibilityState","optionalText","childrenId","labelClass","layer","layerUpdated","Layer","setExpanded","hasSubLayers","tooltipContent","isLabel","subLayer","modifiedSubLayer","LayersPanel","updatedLayer","newLayers","onLayerUpdated","layersMap","annotationManager","rawAnnotationObjects","getPageIterator","itr","getNumAnnots","numAnnots","getAnnot","rawAnnotation","getOptionalContent","optionalContent","getDictIterator","optionalContentDictIterator","optionalContentGroup","optionalContentGroupID","annotSDF","NMInfoDict","NMInfoObject","idString","Hidden","subType","subTypeObject","rawAnnotType","rawAnnotPDFCoord","rawAnnotPageNumber","viewerCoordsX1Y1","viewerCoordsX2Y2","rectFromRawAnnotation","positionMatched","equalTo","typeMatched","LayersPanelRedux","setLayersArray","toggleAnnotationsVisibility","refreshAll","updateView","reduxProps","updatedLayers","getActualFileName","renderAttachment","onClickCallback","showFileIdProcessSpinner","fileExtension","initialFilesDefault","FileAttachmentPanel","initialFiles","fileAttachments","setFileAttachments","setFileIdProcessSpinner","updateFileAttachments","attachmentPanelItemOnClick","fileAttachmentAnnot","newTabId","fileAttachmentAnnotsPerPage","ResizeBar","leftDirection","isMouseDownRef","dragMouseMove","PANEL_RESIZED","finishDrag","LeftPanelPageTabsMoreSmall","LeftPanelPageTabsRotateSmall","LeftPanelPageTabsInsertSmall","CustomLeftPanelOperations","operations","operation","InitialLeftPanelPageTabsSmall","multiPageManipulationControlsItems","childrenArray","LeftPanelPageTabsSmall","multiPageManipulationControlsItemsSmall","LeftPanelPageTabsMore","LeftPanelPageTabsInsert","onInsert","LeftPanelPageTabsRotate","onRotateClockwise","onRotateCounterClockwise","LeftPanelPageTabsOperations","onReplace","onExtractPages","onDeletePages","InitialLeftPanelPageTabs","LeftPanelPageTabs","LeftPanelPageTabsMove","moveToTop","moveToBottom","LeftPanelPageTabsLarge","LeftPanelPageTabsContainer","deleteModalEnabled","isPanelLarge","LeftPanel","isOfficeEditorToolsHeaderOpen","currentWidth","isBookmarkPanelEnabled","isMultiTabActive","topHeadersHeight","bottomHeadersHeight","getDisplay","legacyToolsHeaderOpen","legacyAllHeadersHidden","horizontalHeadersHeight","currentLeftPanelWidth","maxAllowedWidth","RightPanel","FilePickerHandler","SERVER","CopyTextHandler","aria-hidden","PrintHandler","setDocumentType","FontHandler","loadFont","fontType","isWebFont","fontTypes","ttf","woff","woff2","fontName","fontPath","__webpack_public_path__","FontFace","loadedFace","defaultFonts","thrush","proc","curry2to1","curry1to0","tup","always","joinProc","procs","publish","publisher","depot","handleNext","unsub","subscriptions","statefulStream","innerSubject","streamFromEmitter","statefulStreamFromEmitter","combineOperators","operators","subscriber","project","defaultComparator","distinctUntilChanged","mapTo","scanner","times","throttleTime","debounceTime","withLatestFrom","pendingCall","allCalled","bit","prevCalled","duc","combineLatest","emitters","systemToComponent","systemSpec","requiredPropNames","optionalPropNames","optional","methodNames","applyPropsToSystem","system","requiredPropName","optionalPropName","buildEventHandlers","currentSubscription","propsWithChildren","singletons","buildMethods","omit","usePublisher","useEmitterValue","_useState3","useEmitter","DEBUG","INFO","WARN","ERROR","VIRTUOSO_LOG_LEVEL","logLevel","callbackRef","knownSize","endIndex","virtuosoScroller","viewportType","viewportHeight","scrollerRef","scrollByCallback","scrollBy","scrollToCallback","behavior","scrollContainerState","footerHeight","smoothScrollTargetReached","react18ConcurrentRendering","statefulScrollTop","deviation","scrollingInProgress","et","tt","nt","ot","st","ut","ct","mt","dt","offsetTree","lastSize","ft","sizeTree","groupOffsetTree","pt","groupIndices","ht","vt","St","changed","firstItemIndex","prevSize","totalCount","sizeRanges","defaultItemSize","fixedItemSize","unshiftWith","shiftWith","shiftWithOffset","beforeUnshiftWith","listRefresh","statefulTotalCount","trackItemSizes","itemSize","It","Ct","Tt","topListHeight","wt","xt","atBottom","notAtBottomBecause","offsetBottom","yt","scrollTopDelta","atBottomBecause","jump","prevScrollTop","isAtTop","isAtBottom","atBottomState","atTopStateChange","atBottomStateChange","atBottomThreshold","atTopThreshold","scrollVelocity","lastJumpDueToItemResize","bt","propsReady","Et","scrolledToInitialItem","initialTopMostItemIndex","Ht","Rt","shouldFollow","followOutputBehavior","refreshed","followOutput","Lt","kt","groupCounts","topItemsIndexes","zt","Bt","Ft","Pt","Ot","listBoundary","overscan","fixedHeaderHeight","increaseViewportBy","visibleRange","Mt","topItems","Vt","originalIndex","groupIndex","Ut","At","Wt","Nt","Dt","listState","endReached","startReached","rangeChanged","itemsRendered","Gt","initialItemCount","_t","isSeeking","scrollSeekConfiguration","scrollSeekRangeChanged","jt","topItemCount","Kt","totalListHeight","totalListHeightChanged","Yt","amount","Zt","initialScrollTop","qt","alignToBottom","paddingTopAddition","Jt","useWindowScroll","customScrollParent","windowScrollContainerState","windowViewportRect","windowScrollTo","$t","Qt","Xt","fixedItemHeight","defaultItemHeight","visibleHeight","visibleWidth","itemContent","groupContent","computeItemKey","headerFooterTag","FooterComponent","HeaderComponent","TopItemListComponent","ListComponent","ItemComponent","GroupComponent","ScrollerComponent","EmptyPlaceholder","ScrollSeekPlaceholder","scrollingStateChange","adjustForPrependedItems","maxHeightCacheSize","footer","FooterContainer","ItemContainer","ScrollContainer","GroupContainer","ListContainer","emptyComponent","scrollSeek","overflowAnchor","showTopList","itemWidth","Ge","viewportDimensions","itemDimensions","gridState","itemClassName","listClassName","nn","tn","fixedHeaderContent","TableComponent","TableHeadComponent","TableBodyComponent","TableRowComponent","FillerRow","rn","an","ln","sn","pn","hn","un","cn","mn","vn","gn","borderSpacing","Sn","RedactionPanelContext","RedactionPanelProvider","selectedRedactionItemId","setSelectedRedactionItemId","isRedactionSearchActive","setIsRedactionSearchActive","activeSearchResultIndex","setActiveSearchResultIndex","redactionAnnotations","selectedAnnotationId","newActiveSearchResult","newActiveSearchResultIndex","searchResult","RedactionTextPreview","RedactionItem","onRedactionItemDelete","onRedactionItemSelection","textPreview","redactionPreview","formattedDate","dateAndAuthor","redactionType","customNoteSelectionFunction","CollapsiblePanelGroup","RedactionPageGroup","redactionItems","redactionItem","sortedRedactionItems","RedactionPanel","applyAllRedactions","deleteAllRedactionAnnotations","redactionTypesDictionary","redactionPageMap","setRedactionPageMap","redactionPageNumbers","setRedactionPageNumbers","isTestMode","testModeProps","noRedactionAnnotations","redactAllButtonClassName","clearAllButtonClassName","useOnRedactionAnnotationChanged","redactionAnnotationsList","setRedactionAnnotationsList","setRedactionAnnotations","mediaAnnotationTypes","CreatableMultiSelect","RedactionOption","RedactionSearchMultiSelect","redactionSearchOptions","redactionGroup","isDarkMode","buildSearchOptions","searchTerms","textSearch","RedactionSearchOverlay","setSearchTerms","executeRedactionSearch","textTerm","updatedSearchTerms","multiSearch","searchOptionsMap","searchArray","searchType","searchRegex","searchTextFullFactory","multiSearchFactory","RedactionSearchResult","isChecked","onClickResult","displayResult","ambientStr","resultStrStart","resultStrEnd","resultStr","textBeforeSearchValue","textAfterSearchValue","displayRedactionSearchResult","searchResultClassname","checkResult","RedactionSearchResultGroup","selectedSearchResultIndexes","setSelectedSearchResultIndexes","groupResultIndexes","allItemsChecked","setAllItemsChecked","allResultsSelected","allSelected","checkAllResults","resultIndex","RedactionSearchResults","redactionSearchResults","searchStatus","onCancelSearch","isProcessingRedactionResults","markSelectedResultsForRedaction","redactSelectedResults","redactionSearchResultPageMap","setRedactionSearchResultPageMap","selectedSearchResultIndexesMap","setSelectedSearchResultIndexesMap","setSelectedIndexes","selectedIndexesMap","redactionSearchResult","noResults","isEmptyList","resultsContainerClass","emptyList","redactAllButtonClass","markAllForRedactionButtonClass","shouldShowResultsCounterOptions","SearchStatus","searchResultIndexMap","resultGroupPageNumbers","renderSearchResults","createRedactionAnnotations","page_num","getPoints","result_str","defaultRedactionStyles","RedactionSearchResultsContainer","RedactionSearchPanel","clearRedactionSearchResults","useOnRedactionSearchCompleted","setSearchStatus","setRedactionSearchResults","setIsProcessingRedactionResults","searchPatterns","mapResultToType","resultType","onSearchResultsChanged","mappedResults","searchInProgressEventHandler","RedactionPanelContainer","closeRedactionPanel","originalApplyRedactions","hexToRGB","areColorsClose","hex1","hex2","rgb1","rgb2","calculateEuclideanDistance","TextEditingPanel","undoRedoProperties","freeTextMode","contentSelectMode","textEditProperties","handlePropertyChange","handleTextFormatChange","handleAddLinkToText","disableLinkButton","colorArray","DEFAULT_COLOR","closeMatchColor","undoRedoSection","handleUndo","handleRedo","closeMatch","rgbColor","selectionMode","setSelectionMode","getContentEditingFonts","annotationRef","contentEditorRef","selectedContentBox","setSelectedContentBox","setTextEditProperties","setFormat","getFontName","fontString","words","currentWord","handleSelectionChange","getTextAttributes","hexColor","fontColors","fontColor","fontObject","setTextAttributes","handleEditorStarted","handleEditorEnd","handleContentEditModeStart","handleContentEditModeEnd","handleAnnotationSelected","getContentEditAnnotationId","isContentEditPlaceholder","getTextEditPropertiesFromContentEditPlaceHolder","textAttributes","loadHyperLinkURL","setTextColor","applyFormat","formatKey","fontMap","fontKey","getContentEditType","Types","contentBoxId","editManager","getContentBoxAttributes","attribs","getContentEditHistoryManager","closeTextEditingPanel","setContentFont","setContentFontSize","alignContents","updatedDecorator","toggleBoldContents","toggleItalicContents","toggleUnderlineContents","randomUUID","crypto","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","rnds","PropertyKeyValuePair","GeneralValuesSection","entities","entity","setIsActive","GroupsContainer","combinedGroups","orderedGroup","orderArray","groupName","addOrderedGroups","HeaderTitle","createDataSet","dataMap","propertySet","combinedMap","dataPoint","checkForEmptyKeys","PropertiesElement","defaultItems","groupsItems","combinedGroupMap","generateGroupDataSet","Wv3dPropertiesPanel","closeWv3dPropertiesPanel","propertiesCollection","uuidv4","SnippingToolPopup","snippingMode","onSnippingModeChange","closeSnippingPopup","applySnipping","isSnipping","snippingNames","openSnippingConfirmationWarning","openSnippingCancellationWarning","useOnSnippingAnnotationChangedOrSelected","openSnippingPopup","snippingAnnotation","setSnippingAnnotation","SnippingToolPopupContainer","snippingToolName","snippingCreateTool","getIsSnipping","setIsSnipping","handleSnippingCancellation","SnippingCreateTool","setSnippingMode","snippingPopupRef","getSnippingPopupOffset","SNIPPING","useOnFormFieldsChanged","formFieldAnnotationsList","setFormFieldAnnotationsList","setFormFieldIndicators","formFieldIndicators","isFormFieldPlaceholder","fieldNameMap","getFieldLabels","FIELD_NAME","getShowIndicator","FormFieldIndicator","parameters","viewerBoundingRect","appBoundingRect","visiblePages","getVisiblePages","annotationBottomRight","annotationTopLeft","annotHeightInPixels","INDICATOR_HEIGHT","setIndicatorYPosition","isRightSidePage","isPlaceholder","isPageVisible","indicatorText","notePanelWidth","setIndicators","getIndicators","fieldAnnotation","createFormFieldIndicator","resetIndicators","MultiTabEmptyPage","addNewTab","DropArea","fileInput","docLoaded","isSyncing","DocumentHeader","setFileName","saveButtonDisabled","stopSyncing","onLoaded","unLoaded","onReady","scrollingUp","scrollingDown","pagesToNavigate","_setCurrentPage","zoom1","zoom2","CompareZoomOverlay","onClickMarqueeZoom1","onClickMarqueeZoom2","onClickZoomLevelOption1","onClickZoomLevelOption2","setPreRenderLevel","DisplayModes","getDefaultPageLabels","checkStampAnnotation","crossStampAnnotation","setIdsForChildren","parentLayerId","isParentDisabled","createNewLayer","layerId","newOCGLayers","currentOCGLayers","layersToSet","onFirstLoad","documentCompletePromise","enableAnnotations","disableAnnotations","setNextActivePanelDueToEmptyCurrentPanel","currentActivePanel","nextActivePanel","getLayersArray","currentLayers","onLayersUpdated","setZoomLevel","searchShortcutKeys","isDocumentClosed","documentUnloadedHandler","checkIfDocumentClosed","totalPageCount","displayedPageCount","errorLoadingDocument","getPageLabel","getLabelTitle","loadedFromServer","serverFailed","setPrintHandler","DOCUMENT_LOADED","overlays","storeStyle","currentTool","toolbarGroupNames","toolbarGroupName","groupItem","setActiveToolGroupAndToolsOverlay","stampAnnotation","signatureAnnotation","deleteReplies","InReplyTo","isUndoRedo","isInlineCommentDisabled","movedKeys","isEmptySignature","isEmptyInitialsSignature","requiresInitials","activeSavedSignatureTab","dotStampAnnotation","rubberStampAnnotation","loadPageText","textContainer","pageContainerElement","existingTextContainer","fileMeta","previewsPromise","newAnnotations","oldStrokeThickness","preview","numberOfSignaturesToRemove","getSignatureDataToStore","signaturesToStore","coreSavedSignatures","newSavedSignatures","formBuilderDefaultDisabledKeys","keysToEnable","BackendTypes","WASM","numberOfInitialsToRemove","initialsToStore","newSavedInitials","skipHotkeys","onBeforeDocumentLoaded","eventListeners","onCheckStampAnnotationAdded","onCrossStampAnnotationAdded","onDisplayModeUpdated","onFitModeUpdated","onToolUpdated","onToolModeUpdated","onUpdateAnnotationPermission","onStampAnnotationAdded","onSignatureAnnotationAdded","onStickyAnnotationAdded","onCaretAnnotationAdded","onFullScreenChange","onLocationSelected","onDotStampAnnotationAdded","onRubberStampAnnotationAdded","onReadOnlyModeChanged","onFileAttachmentAnnotationAdded","onFileAttachmentDataAvailable","onSignatureSaved","onSignatureDeleted","onHistoryChanged","onFormFieldCreationModeStarted","onFormFieldCreationModeEnded","onDigitalSignatureAvailable","onImageContentAdded","onInitialSaved","onInitialDeleted","onContentEditModeStarted","onContentEditModeEnded","onContentBoxEditStarted","onContentBoxEditEnded","addEventHandlers","removeEventHandlers","ComparisonButton","semanticDiffAnnotations","checkDisabled","documentsLoaded","document1IsValidType","document2IsValidType","startComparison","documentViewer2","startSemanticDiff","toggleComparisonOverlay","documentViewerOne","documentViewerTwo","stopSemanticDiff","addToolsToDocViewer","FreeHandCreateTool","FREEHAND2","FREEHAND3","FREEHAND4","FreeHandHighlightCreateTool","FREEHAND_HIGHLIGHT2","FREEHAND_HIGHLIGHT3","FREEHAND_HIGHLIGHT4","FreeTextCreateTool","FREETEXT2","FREETEXT3","FREETEXT4","MarkInsertTextCreateTool","MARK_INSERT_TEXT2","MARK_INSERT_TEXT3","MARK_INSERT_TEXT4","MarkReplaceTextCreateTool","MARK_REPLACE_TEXT2","MARK_REPLACE_TEXT3","MARK_REPLACE_TEXT4","DateFreeTextCreateTool","DATEFREETEXT2","DATEFREETEXT3","DATEFREETEXT4","CalloutCreateTool","CALLOUT2","CALLOUT3","CALLOUT4","StickyCreateTool","STICKY2","STICKY3","STICKY4","UNDERLINE2","UNDERLINE3","UNDERLINE4","STRIKEOUT2","STRIKEOUT3","STRIKEOUT4","SQUIGGLY2","SQUIGGLY3","SQUIGGLY4","RectangleCreateTool","RECTANGLE2","RECTANGLE3","RECTANGLE4","EllipseCreateTool","ELLIPSE2","ELLIPSE3","ELLIPSE4","PolygonCreateTool","POLYGON2","POLYGON3","POLYGON4","PolygonCloudCreateTool","POLYGON_CLOUD2","POLYGON_CLOUD3","POLYGON_CLOUD4","LineCreateTool","LINE2","LINE3","LINE4","PolylineCreateTool","POLYLINE2","POLYLINE3","POLYLINE4","AnnotationCreateArrow2","ArrowCreateTool","ARROW2","AnnotationCreateArrow3","ARROW3","AnnotationCreateArrow4","ARROW4","CountMeasurementCreateTool","COUNT_MEASUREMENT2","COUNT_MEASUREMENT3","COUNT_MEASUREMENT4","DistanceMeasurementCreateTool","DISTANCE_MEASUREMENT2","DISTANCE_MEASUREMENT3","DISTANCE_MEASUREMENT4","PerimeterMeasurementCreateTool","PERIMETER_MEASUREMENT2","PERIMETER_MEASUREMENT3","PERIMETER_MEASUREMENT4","AreaMeasurementCreateTool","AREA_MEASUREMENT2","AREA_MEASUREMENT3","AREA_MEASUREMENT4","EllipseMeasurementCreateTool","ELLIPSE_MEASUREMENT2","ELLIPSE_MEASUREMENT3","ELLIPSE_MEASUREMENT4","RectangularAreaMeasurementCreateTool","RECTANGULAR_AREA_MEASUREMENT2","RECTANGULAR_AREA_MEASUREMENT3","RECTANGULAR_AREA_MEASUREMENT4","TextFormFieldCreateTool2","TextFormFieldCreateTool","TEXT_FORM_FIELD2","TextFormFieldCreateTool3","TEXT_FORM_FIELD3","TextFormFieldCreateTool4","TEXT_FORM_FIELD4","SignatureFormFieldCreateTool2","SignatureFormFieldCreateTool","SIG_FORM_FIELD2","SignatureFormFieldCreateTool3","SIG_FORM_FIELD3","SignatureFormFieldCreateTool4","SIG_FORM_FIELD4","ListBoxFormFieldCreateTool2","ListBoxFormFieldCreateTool","LIST_BOX_FIELD2","ListBoxFormFieldCreateTool3","LIST_BOX_FIELD3","ListBoxFormFieldCreateTool4","LIST_BOX_FIELD4","ComboBoxFormFieldCreateTool2","ComboBoxFormFieldCreateTool","COMBO_BOX_FIELD2","ComboBoxFormFieldCreateTool3","COMBO_BOX_FIELD3","ComboBoxFormFieldCreateTool4","COMBO_BOX_FIELD4","CloudyRectangularAreaMeasurementCreateTool","CLOUDY_RECTANGULAR_AREA_MEASUREMENT2","CLOUDY_RECTANGULAR_AREA_MEASUREMENT3","CLOUDY_RECTANGULAR_AREA_MEASUREMENT4","ArcMeasurementCreateTool","ARC_MEASUREMENT2","ARC_MEASUREMENT3","ARC_MEASUREMENT4","ArcCreateTool","ARC2","ARC3","ARC4","REDACTION2","RedactionCreateTool","REDACTION3","REDACTION4","AnnotationCreateChangeViewTool","ChangeViewCreateTool","CHANGEVIEW","AnnotationCreateChangeViewTool2","CHANGEVIEW2","AnnotationCreateChangeViewTool3","CHANGEVIEW3","AnnotationCreateChangeViewTool4","CHANGEVIEW4","setupDocViewer","DEFAULT_MARGIN","TextColor","AnnotationCreateRedaction2","AnnotationCreateRedaction3","AnnotationCreateRedaction4","setDefaultToolStyle","defaultToolStylesMap","getParsedToolStyles","isKeyColorProperty","setDefaultToolStyles","addDocumentViewer","DocumentViewer","multiViewerHelper","matchedPages","isScrolledByClickingChangeItem","setIsScrolledByClickingChangeItem","MultiViewer","documentViewerKeys","initialSetup","setInitialSetup","oldHeaderItems","container2","doc1Loaded","setDoc1Loaded","doc2Loaded","setDoc2Loaded","width2","setWidth2","setIsSyncing","removeHandlerFunctions","funcRefs","updateScrollView","resizeObserverFunc","records","syncState","scrollTop1","scrollLeft1","scrollTop2","scrollLeft2","currentScrollContainer","topOverflow1","topOverflow2","page1","page2","rootContainerRef","resizeOberver","removeHandlersRef","readyDefaultState","eventFired","addHeaderItems","zoomOverlay","hiddenOnMobileDevices","resetHeaderItems","indexOfButton","onLoaded1","unLoaded1","onLoaded2","unLoaded2","force","keyWord","isDoc1Loaded","primarydocumentViewerKey","secondarydocumentViewerKey","annotationManager2","syncDocumentViewers","setupMultiViewer","updateActiveDocumentViewerKey","setFirstViewerActive","setSecondViewerActive","shouldSkipSyncEvent","createOnScrollHandler","otherViewerNumber","diffTop","diffLeft","otherContainer","topOverflow","bottomOverflow","otherDocumentViewer","mainPage","otherSidePages","thisSidePages","mainPageBoundingRect","otherSidePageBoundingRect","scrollRatio","heightRatio","currentDiffTop","adjustedDiffTop","visiblePageOtherSide","otherMainPage","secondaryPage","isTopOverflowPositive","isDiffTopPositive","isZero","onZoomHandler","startSyncing","primaryDocumentViewerKey","isScrollable","onScrollHandler","onPageUpdatedHandler","newPage2","createOnPageUpdateHandler","removeHandler","MULTI_VIEWER_READY","minValue","oldText","oldCount","newCount","new","ChangeListItem","viewerNumber","specialChar","ComparePanel","initialChangeListData","initialTotalChanges","changeListData","totalChanges","setTotalChanges","filteredListData","setFilteredListData","filterfuncRef","newData","updatePanelItems","doc1Annotations","doc2Annotations","diffCount","annotMap","doc1AnnotationsClone","doc2AnnotationsClone","annotationMatches1","annotationMatches2","pageNumbers1","pageNumbers2","side1Annotations","side2Annotations","checkIfAnnotionMatches1","checkIfAnnotionMatches2","annotPageNumber","doc1Pages","doc2Pages","matchedIds","otherAnnotations","unmatchedAnnotations1","unmatchedAnnotations2","aY","bY","resetPanelItems","shouldRenderItems","changeListItems","TextWatermarkPanel","WatermarkList","watermarks","watermark","ImageWatermarkPanel","imageWatermark","setImageData","redrawAnnotation","WatermarkPanelHeader","activeWatermarkType","setActiveWatermarkType","closeWatermarkPanel","isLeftSide","isRightSide","CustomButton","preset","headerPlacement","updateState","setActiveState","GroupedItems","headerDirection","grow","alwaysVisible","itemsGap","setItemsGap","itemValidTypes","validItems","overflowLabel","Divider","RibbonItem","isFlyoutItem","iconDOMElement","activeGroups","FlexDropdown","onFlyoutToggled","isElementActive","setIsElementActive","isThereAvailableSpace","itemsShown","parentRect","justification","firstItemRect","lastItemRect","isHorizontalHeader","lastItemEnd","parentRectEnd","firstItemStart","parentRectStart","getResponsiveItems","itemsToChange","previousItems","itemsToRemove","arrayBackup","oldArray","getItemsToHide","itemsDom","missingSpace","spaceToFree","allItems","itemsToHide","lastItem","lastItemDom","lastItemSpace","getIconDOMElement","currentItem","iconElement","getSubMenuDOMElement","validateItems","RibbonGroup","ribbonsHeight","setRibbonsHeight","containerHeight","setContainerHeight","overflowItems","setOverflowItems","ribbonItems","setRibbonItems","moreButtonRef","FLYOUT_NAME","moveItemsToRibbon","parentWidth","parentHeight","ribbonItemsShown","moreButtonRect","availableSpace","sizeNeededForButton","candidateItemsToHide","moveItemsToOverflow","largestItem","setOverflowFlyout","RibbonOverflowFlyout","getOverflowItems","getArrowDirection","callHandleClick","subMenuDOMElement","customClass","ZoomControls","setZoomHandler","isZoomFlyoutMenuActive","onFlyoutToggle","onZoomInClicked","onZoomOutClicked","getCurrentZoom","isZoomValueValid","ZoomContainer","initialSize","setZoomValue","zoomOptionsList","currentFlyout","onMarqueeZoom","getZoomItems","zoomItems","fitToWidthButton","fitToPageButton","marqueeButton","zoomInButton","zoomOutButton","zoomOptionsItem","zoomFlyoutMenu","GroupedTools","uniqueID","overflowFlyoutIdentifier","moreButtonIdentifier","moreButtonIcon","setMoreButtonIcon","itemsWidth","setItemsWidth","itemsHeight","setItemsHeight","visibleItems","setVisibleItems","visibleItemsRef","moveItemsToContainer","handleMoreButtonIcon","isItemIntoOverflow","activeItem","OverflowFlyout","InnerItem","ModularHeaderItems","ModularHeader","autohide","loadedFirstTime","setLoadedFirstTime","canRemoveItems","setCanRemoveItems","canApplyAnimation","setApplyAnimation","isClosed","originalItems","headerId","ModularHeaderContainer","memoizedItems","useFloatingHeaderSelectors","rightPanelWidth","rightHeaderWidth","topStartFloatingHeaders","bottomStartFloatingHeaders","bottomEndFloatingHeaders","topEndFloatingHeaders","FloatingHeader","opacityMode","hideFloatingHeader","FloatSection","isVertical","FloatingHeaderContainer","floatingHeaders","verticalHeaderWidth","panelsWidth","leftOffset","topFloatingHeaderOffset","bottomFloatingHeaderOffset","computeFloatContainerStyle","renderHeaders","positionPrefix","useResizeObserver","observedWidth","borderBoxSize","inlineSize","observedHeight","blockSize","LeftHeaderContainer","LeftHeader","leftHeaders","fullLengthHeaders","userDefinedStyle","styleObject","renderLeftHeader","RightHeaderContainer","RightHeader","rightHeaders","renderRightHeader","BottomHeader","fullLengthHeader","TopHeader","sortedTopHeaders","sortedHeaders","GenericOutlinesPanel","ZoomText","currentZoom","Flyout","flyoutProperties","horizontalHeadersUsedHeight","setActiveItem","flyoutRef","correctedPosition","setCorrectedPosition","maxHeightValue","setMaxHeightValue","appRect","referenceElement","referenceButtonRect","parentHeader","targetElement","availableSpaceLeft","availableSpaceRight","flyoutX","availableSpaceAbove","availableSpaceBelow","flyoutY","getFlyoutPositionOnElement","widthOverflow","maxElementHeight","heightOverflow","isZoomOptions","flyoutItem","isChild","renderFlyoutItem","itemIsATool","itemIsAToolGroup","itemIsARibbonItem","itemIsAZoomOptionsButton","itemsToRender","getFlyoutItemWrapper","elementDOM","additionalClass","isActiveClass","toolGroupElement","ribbonItemElement","zoomOptionsElement","flyoutStyles","activeChild","FlyoutContainer","GroupedToolsOverflowFlyout","useOnTextSelected","popupItems","selectedTextQuads","setSelectedTextQuads","textSelectTool","onSelectionComplete","startQuad","useOnRightClick","clickedOnInput","clickedOnTextarea","clickedOnFreeTextarea","useOnContextMenuOpen","clickPosition","setClickPosition","isMobileCSS","isRightClickAnnotationPopupEnabledRef","useOnAnnotationPopupOpen","isMeasurementOverlayOpen","focusedAnnotation","setFocusedAnnotation","selectedMultipleAnnotations","setSelectedMultipleAnnotations","setCanModify","isStylePopupOpen","setIsStylePopupOpen","isDatePickerOpen","setDatePickerOpen","isDatePickerMount","setDatePickerMount","hasAssociatedLink","setHasAssociatedLink","includesFormFieldAnnotation","setIncludesFormFieldAnnotation","stylePopupRepositionFlag","setStylePopupRepositionFlag","openPopup","closePopup","canAnnotationBeModified","isSignedByAppearance","groupedLinkAnnotations","getGroupedLinkAnnotations","isInContentEditFocusMode","actionOnOtherAnnotation","onMouseLeftUp","annotUnderMouse","useOnFormFieldAnnotationAddedOrSelected","currentFormAnnotation","setCurrentlyEditingFormAnnotation","useOnFreeTextEdit","setEditor","handleEditorFocus","useOnInlineCommentPopupOpen","leftPanelOpen","isFreeTextAnnotationAdded","setFreeTextAnnotationAdded","isNotesPanelOpenOrActive","closeAndReset","isFreeTextAnnotation","onAnnotationDoubleClicked","selectedAnnotationTool","isCommentingAnnotationSelected","useOnRightClickAnnotation","rightClickedAnnotation","setRightClickedAnnotation","useOnAnnotationContentOverlayOpen","customHandler","clientXY","setClientXY","isUsingCustomHandler","viewElement","onMouseHover","ungroupedAnnots","MultiViewerWrapper","TextEditingWrapper","tabletBreakpoint","App","timeoutReturn","isOfficeEditingEnabled","isMultiTabAlreadyEnabled","isMultiDoc","basePath","setBasePath","externalPath","showInvalidBookmarks","loadDocumentAndCleanup","loadInitialDocument","messageHandler","VIEWER_LOADED","visibilityState","createDisableFeatures","setDefaultDisabledElements","panels","panelName","renderPanel","VIEW","ANNOTATE","SHAPES","INSERT","MEASURE","EDIT_TEXT","FILL_AND_SIGN","FORMS","REDACT","EMAILS","CREDIT_CARDS","PHONE_NUMBERS","addSearchListenerHelper","PopupAPI","_getIndexByDataElement","getItems","createPopupAPI","castStringToArray","dataElementArray","bbAnnotManager","serverURL","BlackBoxAnnotationManager","mapExposedSelectors","getSideWindowVisibility","prevPage","mentionsManager","expose","methodsToExpose","MenuOverlayAPI","printOptions","customAnnotationCheckFunc","registerToolInToolModeMap","registerToolInRedux","updateColorMapInRedux","documentViewerNumber","removeSearchListenerHelper","docIdQuery","did","lowerCaseFirstLetter","SEARCH_UP","optionsForSearchListener","TYPES","checkTypes","STRING","mapPaletteToAnnotationColorProperty","mapAnnotationColorPropertyToPalette","currentOverride","isValidColor","isValidObject","customModal","FUNCTION","customPanel","fitFunction","headerGroups","_setIndex","getHeader","_resetIndex","newItem","_getIndexOfElement","_updateItems","translationObject","addResources","reloadResources","variables","isInsideRoot","isVariableDeclaration","previousActiveTheme","Theme","previousIsHighContrastMode","isHighContrastMode","updateColors","setVariables","themeVarString","themeVariables","themeVariable","useDefaultElements","dataElementSuffix","otherInstances","instances","Actions","toggleFullscreen","enableToolDefaultStyleUpdateFromAnnotationPopup","disableToolDefaultStyleUpdateFromAnnotationPopup","unregisterToolInHeader","unregisterToolInRedux","unregisterToolInToolModeMap","headerItem","setColorPalette","validateButtonOverrides","customOverlayInfo","newActiveResult","overrideSearchExecutionCallback","overrideSearchExecutionHelper","getPageNavOverlay","enableTextCollapse","disableTextCollapse","enableReplyCollapse","disableReplyCollapse","disableAutoExpandCommentThread","enableAutoExpandCommentThread","setCustomHeader","setCustomEmptyPanel","enableAttachmentPreview","disableAttachmentPreview","disableMultiSelect","setAttachmentHandler","attachmentHandler","enableMeasurementAnnotationFilter","disableMeasurementAnnotationFilter","previousDisplayMode","enableMultiselect","enableMultiSelect","disableMultiselect","selectPages","alreadySelected","outOfRangePages","pagesToSelect","unselectPages","pageNumbersToDeselect","NUMBER","indexesToDeselect","getSelectedPageNumbers","enableClearSearchOnPanelCloseClosure","disableClearSearchOnPanelCloseClosure","PageManipulationOverlayAPI","dataElementToInsertAfter","disableOpeningByRightClick","enableOpeningByRightClick","MultiPageManipulationControls","indexSmall","_getIndexByDataElementSmall","itemsSmall","getItemsSmall","indexLarge","_getIndexByDataElementLarge","itemsLarge","getItemsLarge","ThumbnailControlMenuAPI","FontsAPI","getAnnotationFonts","addAnnotationFont","removeAnnotationFont","fontIndex","setAnnotationFonts","addSignatureFont","removeSignatureFont","setSignatureFonts","TabManagerAPI","tabId","getAllTabs","presetName","presets","dateTimeFormat","validKeyFound","requiredKeys","redactionSearchPattern","annotationTabs","targetAnnotation","newColorMap","stepFactor","convertedZoomStepFactors","convertedZoomStepFactor","parsedStep","parsedStartZoom","signatureWidget","handleSignatureReady","currentSignature","getAssociatedSignatureAnnotation","headerList","groupedItem","setDefaultOptions","propsWithStore","isItemTypeValid","clonedItem","validateGroupedItems","addItemsHelper","validJustifications","float","setStyle","borderProperty","side","flyoutItemTypeBase","OPTIONAL","flyoutChildType","MULTI_TYPE","OBJECT","flyoutItemType","itemList","updateStore","newItems","ONE_OF","presetScale","enableMultipleScalesMode","disableMultipleScalesMode","isMultipleScalesModeEnabled","getLocalizedText","enableMultiViewerSync","primaryViewerKey","disableMultiViewerSync","isMultiViewerSyncing","SettingKeys","exportUserSettings","importUserSettings","userSettings","newShortcutKeyMap","darknessFactor","addFlyouts","flyoutList","getAllFlyouts","flyouts","setClickMiddleware","_setClickMiddleware","FEATURE_FLAGS","CUSTOMIZABLE_UI","getDefaultBackendType","wildCardMatch","allowedOrigins","allowedOrigin","wildcardToRegExp","regExpEscape","loadScript","scriptSrc","loadConfig","loadPath","addPath","allowMultiLoading","parsePayload","reloadInterval","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","resolvedLoadPath","loadUrl","parseErr","dataArray","resArray","_this$services","getAvailableLanguages","webViewerPath","boostrappedCb","_pStore","rootReducer","rehydrateAction","purge","purgeResult","flushResult","manualPersist","CanvasRenderingContext2D","fullAPIReady","enableFullPDF","disableLogs","disableObjectURLBlobs","_disableStreaming","setWorkerPath","setResourcesPath","workerTransportPromise","WebViewer","apryseWorkerTransportPromise","pdf","office","setWorkerTransportPromise","forceBackendType","disableOptimizedWorkers","CSSFile","loadCustomCSS","coreVersion","getVersion","coreBuild","getBuild","uiVersion","webViewerJSVersion","wvServer","coreMajorVersion","coreMinorVersion","uiMajorVersion","uiMinorVersion","webViewerJSMajorVersion","webViewerJSMinorVersion","webViewerComponents","majorVersion","minorVersion","comparison","warningText","majorVersionOutdatedComponents","minorVersionOutdatedComponents","latestComponent","outdatedComponents","logDebugInfo","setOpenURIHandler","isOpenInNewWindow","newWindow","opener","openURI","hideDetachedReplies","objForWebViewerCore","PartRetrievers","objForWebViewerUI","LayoutMode","ToolbarGroup","RedactionSearchPatterns","JustifyContent","displayErrorMessage","disableHighContrastMode","focusNote","getLayoutMode","hideOutlineControl","isToolDisabled","isHighContrastModeEnabled","settingsMenuOverlay","printInBackground","showOutlineControl","exportBookmarks","importBookmarks","setTranslations","setLayoutMode","setMeasurementUnits","setTheme","createToolbarGroup","dangerouslySetNoteTransformFunction","setActiveResult","toggleElementVisibility","toggleFullScreen","updateTool","updateElement","willUseEmbeddedPrinting","setCustomMeasurementOverlayInfo","setDisplayedSignaturesFilter","Panels","notesPanelDisableMultiSelect","Flyouts","FlyoutsAPI","setGroupedItemsGap","setGroupedItemsJustifyContent","setGroupedItemsGrow","Components","disableDownload","disableFilePicker","disableMeasurement","disableNotesPanel","disableNoteSubmissionWithEnter","disablePrint","disableTextSelection","disableTouchScrollLock","enableDownload","enableFilePicker","enableHighContrastMode","enableMeasurement","enableNotesPanel","enablePrint","enableTextSelection","enableTool","enableNativeScrolling","getAnnotationUser","getCurrentPageNumber","getShowSideWindow","setNotesPanelSort","disableTool","goToFirstPage","goToLastPage","saveAnnotations","setAnnotationUser","setCurrentPageNumber","toggleReaderMode","Fonts","reloadOutline","addDateTimeFormat","enableBookmarkIconShortcutVisibility","disableBookmarkIconShortcutVisibility","showFormFieldIndicators","hideFormFieldIndicators","signSignatureWidget","setSideWindowVisibility","FeatureFlags","getBBAnnotManager","getSelectors","reactElements","enableClearSearchOnPanelClose","disableClearSearchOnPanelClose","disableNativeScrolling","getAnnotationReadState","disableDesktopOnlyMode","getAnnotationStylePopupTabs","setAnnotationStylePopupTabs","enterMultiViewerMode","exitMultiViewerMode","CORE_NAMESPACE_KEY","UI_NAMESPACE_KEY","defineWebViewerInstanceUIAPIs","Utilities","setAnnotationSubjectHandler","setTextHandler","setInitialsTextHandler","i18nURL","HttpApi","lang","addRule","setupI18n","setUserPermission","ENABLE_AUTO_SWITCH","initTransports","workersToLoad","workerType","getWorkersToLoad","getBackendPromise","pdfType","initPDFWorkerTransports","workerLoadingProgress","sampleL","officeType","initOfficeWorkerTransports","initOfficeEditorWorkerTransports","initLegacyOfficeWorkerTransports","disableVirtualDisplayMode","STICKY","enableViewStateSaving","getAnnotsFromServer","originalData","getDocumentId","origData","setupLoadAnnotationsFromServer","retargetEvents","onTab","onMouse","useFocus","handleOnFocus","handleOnBlur","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","setClientOffset","sourceClientOffset","without","xor","ResetCoordinatesAction","createBeginDrag","sourceIds","_options$publishSourc","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","verifyItemIsObject","pinSource","getSourceType","isSourcePublic","canDragSource","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","targetIds","checkInvariants","removeNonMatchingTargetIds","hoverAllTargets","getTargetType","createDrop","getDroppableTargets","dropResult","determineDropResult","verifyDropResultType","getDropResult","getTargetIds","createEndDrag","verifyIsDragging","unpinSource","DragDropManagerImpl","shouldSetUp","refCount","setup","teardown","handleRefCountChange","createDragDropActions","boundActions","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","initialSourceClientOffset","initialClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","areDirty","dirtyIds","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","didChange","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","dragOperation","stateId","__IS_NONE__","__IS_ALL__","HandlerRole","DragDropMonitorImpl","prevStateId","currentStateId","nextUniqueId","validateType","getNextHandlerId","SOURCE","parseRoleFromHandlerId","mapContainsValue","isDone","_entries$next","HandlerRegistryImpl","validateSourceContract","addHandler","validateTargetContract","dragSources","dropTargets","includePinned","isSourceId","isPinned","pinnedSourceId","pinnedSource","isTargetId","createDragDropManager","backendFactory","backendOptions","debugMode","makeStoreInstance","receiveBackend","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","Check","ChevronDown","Circle","Close","Hide","Info","MultiPage","RotateRight","Show","SinglePage","Success","svgProps","iconClass","IconChild","tabObservable","AccessibleFocusObservable","_handleFirstTab","_setIsUserTabbing","_tabToMouseListener","_handleFirstMouse","_mouseToTabListener","_subscribers","_isUserTabbing","_removeAllListeners","isUserTabbing","leftLabel","disabledLabelChange","setIsUserTabbing","useAccessibleFocus","choiceID","_c","setChecked","choiceClass","inputClass","checkClass","labelElement","RadioObservable","_trigger","I18nextWithTranslation","forwardedRef","_useTranslation","_useTranslation2","passDownProps","padMessageText","rightElement","leftElement","rightIcon","wrapperClass","mainClass","addTarget","removeTarget","isCallingCanDrop","internalMonitor","isOverTarget","getInitialClientOffset","getDifferenceFromInitialOffset","clearDropTarget","dropTargetOptions","dropTargetRef","didHandlerIdChange","didDropTargetChange","didOptionsChange","disconnectDropTarget","lastConnectedHandlerId","lastConnectedDropTarget","lastConnectedDropTargetOptions","unsubscribeDropTarget","newHandlerId","dropTargetOptionsInternal","clearDragSource","dragSourceOptions","dragSourceRef","reconnectDragSource","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","dragSourceOptionsInternal","dragPreviewOptionsInternal","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedDragSource","lastConnectedDragSourceOptions","dragSourceUnsubscribe","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","isCallingCanDrag","isCallingIsDragging","isDraggingSource","subscribeToOffsetChange","_useCollector2","INSTANCE_SYM","_getDndContextValue2","getGlobalContext","createSingletonDndContext","isGlobalInstance","getDndContextValue","useFocusTrap","focusLastOnUnlock","focusRef","lockFocus","focusableElements","focusedItemIndex","checkFocus","toRef","toRefRef","focusLastOnUnlockRef"],"mappings":"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AAS,SACR,CACDr4F,KAAM,IACNq4F,QAAS,kBACR,CACDr4F,KAAM,IACNq4F,QAAS,sBACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,YACR,CACDr4F,KAAM,IACNq4F,QAAS,oBACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,+CACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,cACR,CACDr4F,KAAM,IACNq4F,QAAS,UACR,CACDr4F,KAAM,IACNq4F,QAAS,qBACR,CACDr4F,KAAM,IACNq4F,QAAS,qBACR,CACDr4F,KAAM,IACNq4F,QAAS,mBACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,sCACR,CACDr4F,KAAM,IACNq4F,QAAS,YACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,cACR,CACDr4F,KAAM,IACNq4F,QAAS,SACR,CACDr4F,KAAM,IACNq4F,QAAS,mBACR,CACDr4F,KAAM,IACNq4F,QAAS,kBACR,CACDr4F,KAAM,IACNq4F,QAAS,uCACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,OACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,KACNq4F,QAAS,MACR,CACDr4F,KAAM,KACNq4F,QAAS,KACR,CACDr4F,KAAM,IACNq4F,QAAS,aACR,CACDr4F,KAAM,IACNq4F,QAAS,iBACR,CACDr4F,KAAM,IACNq4F,QAAS,kBACR,CACDr4F,KAAM,KACNq4F,QAAS,MACR,CACDr4F,KAAM,IACNq4F,QAAS,mCACR,CACDr4F,KAAM,IACNq4F,QAAS,UACR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,CAAExwB,OAAQ,SAAUg0B,MAAM,GAAQ,CAClCy9E,iBAAkB,oB,cCLpBvzG,EAAOD,QAAU,8yC,cCAjBC,EAAOD,QAAU,i6C,cCAjBC,EAAOD,QAAU,i8C,cCAjBC,EAAOD,QAAU,ywB,cCAjBC,EAAOD,QAAU,w4B,cCAjBC,EAAOD,QAAU,wzC,cCAjBC,EAAOD,QAAU,y5C,cCAjBC,EAAOD,QAAU,qpF,cCAjBC,EAAOD,QAAU,6oB,cCAjBC,EAAOD,QAAU,m8F,cCAjBC,EAAOD,QAAU,iuF,cCAjBC,EAAOD,QAAU,sW,cCAjBC,EAAOD,QAAU,sgF,cCAjBC,EAAOD,QAAU,q+D,cCAjBC,EAAOD,QAAU,m/D,cCAjBC,EAAOD,QAAU,8tG,cCAjBC,EAAOD,QAAU,6mD,cCAjBC,EAAOD,QAAU,2nC,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,8f,cCAjBC,EAAOD,QAAU,oe,cCAjBC,EAAOD,QAAU,4uB,cCAjBC,EAAOD,QAAU,4R,cCAjBC,EAAOD,QAAU,0xB,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,8wB,cCAjBC,EAAOD,QAAU,siB,cCAjBC,EAAOD,QAAU,2b,cCAjBC,EAAOD,QAAU,md,cCAjBC,EAAOD,QAAU,siB,cCAjBC,EAAOD,QAAU,g8E,cCAjBC,EAAOD,QAAU,wW,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,uM,cCAjBC,EAAOD,QAAU,4L,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,4P,cCAjBC,EAAOD,QAAU,2Q,cCAjBC,EAAOD,QAAU,+M,cCAjBC,EAAOD,QAAU,ivB,cCAjBC,EAAOD,QAAU,6pB,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,0d,cCAjBC,EAAOD,QAAU,6T,cCAjBC,EAAOD,QAAU,yvB,cCAjBC,EAAOD,QAAU,6+D,cCAjBC,EAAOD,QAAU,o0I,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,k9B,cCAjBC,EAAOD,QAAU,s9B,cCAjBC,EAAOD,QAAU,4e,cCAjBC,EAAOD,QAAU,wY,cCAjBC,EAAOD,QAAU,mf,cCAjBC,EAAOD,QAAU,g7B,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,wwB,cCAjBC,EAAOD,QAAU,s0B,cCAjBC,EAAOD,QAAU,+pB,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,sN,cCAjBC,EAAOD,QAAU,mJ,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,sJ,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,oP,cCAjBC,EAAOD,QAAU,+K,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,8Y,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,wN,cCAjBC,EAAOD,QAAU,sN,cCAjBC,EAAOD,QAAU,ob,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,2V,cCAjBC,EAAOD,QAAU,8+C,cCAjBC,EAAOD,QAAU,y9C,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,0W,cCAjBC,EAAOD,QAAU,gb,cCAjBC,EAAOD,QAAU,kyB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,s9B,cCAjBC,EAAOD,QAAU,owC,cCAjBC,EAAOD,QAAU,8sC,cCAjBC,EAAOD,QAAU,yoC,cCAjBC,EAAOD,QAAU,g6F,cCAjBC,EAAOD,QAAU,owE,cCAjBC,EAAOD,QAAU,qY,cCAjBC,EAAOD,QAAU,i9B,cCAjBC,EAAOD,QAAU,od,cCAjBC,EAAOD,QAAU,kS,cCAjBC,EAAOD,QAAU,kU,cCAjBC,EAAOD,QAAU,0+B,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,q0B,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,mjB,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,uoC,cCAjBC,EAAOD,QAAU,60I,cCAjBC,EAAOD,QAAU,oW,cCAjBC,EAAOD,QAAU,wV,cCAjBC,EAAOD,QAAU,wuB,cCAjBC,EAAOD,QAAU,kyC,cCAjBC,EAAOD,QAAU,oX,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,mT,cCAjBC,EAAOD,QAAU,qkB,cCAjBC,EAAOD,QAAU,iS,cCAjBC,EAAOD,QAAU,8jB,cCAjBC,EAAOD,QAAU,sqB,cCAjBC,EAAOD,QAAU,u9B,cCAjBC,EAAOD,QAAU,03C,cCAjBC,EAAOD,QAAU,u6D,cCAjBC,EAAOD,QAAU,mS,cCAjBC,EAAOD,QAAU,0U,cCAjBC,EAAOD,QAAU,wQ,cCAjBC,EAAOD,QAAU,gS,cCAjBC,EAAOD,QAAU,mS,cCAjBC,EAAOD,QAAU,2M,cCAjBC,EAAOD,QAAU,+N,cCAjBC,EAAOD,QAAU,qQ,cCAjBC,EAAOD,QAAU,kQ,cCAjBC,EAAOD,QAAU,0T,cCAjBC,EAAOD,QAAU,+I,cCAjBC,EAAOD,QAAU,0e,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,oP,cCAjBC,EAAOD,QAAU,mN,cCAjBC,EAAOD,QAAU,qI,cCAjBC,EAAOD,QAAU,uK,cCAjBC,EAAOD,QAAU,sP,cCAjBC,EAAOD,QAAU,qQ,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,2K,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,4S,cCAjBC,EAAOD,QAAU,+P,cCAjBC,EAAOD,QAAU,8P,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,oY,cCAjBC,EAAOD,QAAU,2X,cCAjBC,EAAOD,QAAU,yX,cCAjBC,EAAOD,QAAU,6U,cCAjBC,EAAOD,QAAU,8V,cCAjBC,EAAOD,QAAU,uY,cCAjBC,EAAOD,QAAU,oU,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,0a,cCAjBC,EAAOD,QAAU,wT,cCAjBC,EAAOD,QAAU,mU,cCAjBC,EAAOD,QAAU,+0B,cCAjBC,EAAOD,QAAU,0f,cCAjBC,EAAOD,QAAU,kqB,cCAjBC,EAAOD,QAAU,+3B,cCAjBC,EAAOD,QAAU,+O,cCAjBC,EAAOD,QAAU,8R,cCAjBC,EAAOD,QAAU,04C,cCAjBC,EAAOD,QAAU,wzB,cCAjBC,EAAOD,QAAU,qiC,cCAjBC,EAAOD,QAAU,8xF,cCAjBC,EAAOD,QAAU,g9T,cCAjBC,EAAOD,QAAU,6lY,cCAjBC,EAAOD,QAAU,4iU,cCAjBC,EAAOD,QAAU,umW,cCAjBC,EAAOD,QAAU,+wN,cCAjBC,EAAOD,QAAU,ymD,cCAjBC,EAAOD,QAAU,k2B,cCAjBC,EAAOD,QAAU,g9C,cCAjBC,EAAOD,QAAU,suB,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,yb,cCAjBC,EAAOD,QAAU,sb,cCAjBC,EAAOD,QAAU,goB,cCAjBC,EAAOD,QAAU,6iC,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,qf,cCAjBC,EAAOD,QAAU,6a,cCAjBC,EAAOD,QAAU,sgB,cCAjBC,EAAOD,QAAU,inB,cCAjBC,EAAOD,QAAU,mgB,cCAjBC,EAAOD,QAAU,8pB,cCAjBC,EAAOD,QAAU,+xB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,wV,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,sa,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,ib,cCAjBC,EAAOD,QAAU,mL,cCAjBC,EAAOD,QAAU,4f,cCAjBC,EAAOD,QAAU,uf,cCAjBC,EAAOD,QAAU,of,cCAjBC,EAAOD,QAAU,4rB,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,wZ,cCAjBC,EAAOD,QAAU,4tB,cCAjBC,EAAOD,QAAU,yoB,cCAjBC,EAAOD,QAAU,wrB,cCAjBC,EAAOD,QAAU,8b,cCAjBC,EAAOD,QAAU,oe,cCAjBC,EAAOD,QAAU,0lB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,44B,cCAjBC,EAAOD,QAAU,iuB,cCAjBC,EAAOD,QAAU,+wB,cCAjBC,EAAOD,QAAU,ikC,cCAjBC,EAAOD,QAAU,ujB,cCAjBC,EAAOD,QAAU,wkB,cCAjBC,EAAOD,QAAU,4zM,cCAjBC,EAAOD,QAAU,4V,cCAjBC,EAAOD,QAAU,6wB,cCAjBC,EAAOD,QAAU,6+C,cCAjBC,EAAOD,QAAU,24B,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,mmD,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,iV,cCAjBC,EAAOD,QAAU,80B,cCAjBC,EAAOD,QAAU,wR,cCAjBC,EAAOD,QAAU,0pB,cCAjBC,EAAOD,QAAU,mlB,cCAjBC,EAAOD,QAAU,2d,cCAjBC,EAAOD,QAAU,qf,cCAjBC,EAAOD,QAAU,knC,cCAjBC,EAAOD,QAAU,6rB,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,oc,cCAjBC,EAAOD,QAAU,kzB,cCAjBC,EAAOD,QAAU,wc,cCAjBC,EAAOD,QAAU,qa,cCAjBC,EAAOD,QAAU,quB,cCAjBC,EAAOD,QAAU,8vB,cCAjBC,EAAOD,QAAU,+V,cCAjBC,EAAOD,QAAU,sV,cCAjBC,EAAOD,QAAU,0f,cCAjBC,EAAOD,QAAU,8rB,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,ge,cCAjBC,EAAOD,QAAU,6Y,cCAjBC,EAAOD,QAAU,8yB,cCAjBC,EAAOD,QAAU,2tC,cCAjBC,EAAOD,QAAU,2T,cCAjBC,EAAOD,QAAU,yZ,cCAjBC,EAAOD,QAAU,2kB,cCAjBC,EAAOD,QAAU,ioC,cCAjBC,EAAOD,QAAU,+qC,cCAjBC,EAAOD,QAAU,khE,gBCAjB,IAAI0sH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8zFAAi0F,KAG11Fe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,6BCDvB,IAAIs5L,EAAuB,EAAQ,KAEnC,SAASC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CtmT,EAAOD,QAAU,WACf,SAAS0mT,EAAK/9R,EAAOmkK,EAAUr1E,EAAepW,EAAUslN,EAAcC,GACpE,GAAIA,IAAWN,EAAf,CAIA,IAAIviT,EAAM,IAAIzC,MACZ,mLAKF,MADAyC,EAAI9B,KAAO,sBACL8B,GAGR,SAAS8iT,IACP,OAAOH,EAFTA,EAAK98Q,WAAa88Q,EAMlB,IAAII,EAAiB,CACnB5gR,MAAOwgR,EACPK,OAAQL,EACRhwR,KAAMgwR,EACNtvR,KAAMsvR,EACN19S,OAAQ09S,EACR9iT,OAAQ8iT,EACRn1R,OAAQm1R,EACR/yR,OAAQ+yR,EAERpvH,IAAKovH,EACLrgH,QAASwgH,EACTx4S,QAASq4S,EACTne,YAAame,EACb3kH,WAAY8kH,EACZp1P,KAAMi1P,EACNM,SAAUH,EACVjxJ,MAAOixJ,EACP/vR,UAAW+vR,EACX/2C,MAAO+2C,EACPI,MAAOJ,EAEPK,eAAgBV,EAChBC,kBAAmBF,GAKrB,OAFAO,EAAerwR,UAAYqwR,EAEpBA,I,6BCpDT7mT,EAAOD,QAFoB,gD,cCL3BC,EAAOD,QAJP,SAAyBwK,GACvB,GAAI3B,MAAMyrB,QAAQ9pB,GAAM,OAAOA,GAGCvK,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,cC0BvGC,EAAOD,QA9BP,SAA+BwK,EAAKvL,GAClC,IAAIujC,EAAY,MAAPh4B,EAAc,KAAyB,oBAAXvH,QAA0BuH,EAAIvH,OAAO6pG,WAAatiG,EAAI,cAE3F,GAAU,MAANg4B,EAAJ,CACA,IAIIm1F,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKv1F,EAAKA,EAAGjjC,KAAKiL,KAAQstH,GAAMH,EAAKn1F,EAAGhf,QAAQ2N,QAC9C0mG,EAAKp4H,KAAKk4H,EAAGx0H,QAETlE,GAAK44H,EAAK14H,SAAWF,GAH4B64H,GAAK,IAK5D,MAAO/zH,GACPg0H,GAAK,EACLH,EAAK7zH,EACL,QACA,IACO+zH,GAAsB,MAAhBt1F,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIu1F,EAAI,MAAMH,GAIlB,OAAOC,IAG+B53H,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,cC1B7GC,EAAOD,QAJP,WACE,MAAM,IAAIgmC,UAAU,8IAGa/lC,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,gBCJxG,IAAI0sH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,o/CAA6/C,KAGthDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wmDAAymD,KAGloDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ynEAA0nE,KAGnpEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,k5EAAm5E,KAG56Ee,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wvCAAyvC,KAGlxCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ijEAAkjE,KAG3kEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,cCKvB/sH,EAAOD,QAfP,SAAuCgjC,EAAQsrE,GAC7C,GAAc,MAAVtrE,EAAgB,MAAO,GAC3B,IAEIv/B,EAAKxE,EAFL8C,EAAS,GACT0sG,EAAarvG,OAAO8qB,KAAK8Y,GAG7B,IAAK/jC,EAAI,EAAGA,EAAIwvG,EAAWtvG,OAAQF,IACjCwE,EAAMgrG,EAAWxvG,GACbqvG,EAASh1E,QAAQ71B,IAAQ,IAC7B1B,EAAO0B,GAAOu/B,EAAOv/B,IAGvB,OAAO1B,GAGuC9B,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,iBCfrHA,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,k3GAAm3G,KAG54Ge,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+PAAgQ,M,gBCLzR,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,6pFAA8pF,KAGvrFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,u1FAAw1F,KAGj3Fe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,07BAA27B,M,gBCLp9B,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,2qHAA4qH,KAGrsHe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,62FAA82F,KAGv4Fe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAI78B,EAAO,EAAQ,KAsBnBlwF,EAAOD,QAJG,WACR,OAAOmwF,EAAKn2D,KAAKC,Q,iBCnBnB,YACA,IAAIuqP,EAA8B,iBAAV/yP,GAAsBA,GAAUA,EAAOryB,SAAWA,QAAUqyB,EAEpFxxB,EAAOD,QAAUwkR,I,iCCiBjBvkR,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,gBCjBT,IAAIupH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+DAAgE,M,gBCLzF,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ymBAA0mB,M,gBCLnoB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,24BAA44B,M,cCer6BgB,EAAOD,QAXP,SAAkBkmC,EAAOihR,GAKvB,IAJA,IAAIj2R,GAAS,EACT/xB,EAAkB,MAAT+mC,EAAgB,EAAIA,EAAM/mC,OACnCyQ,EAAS/G,MAAM1J,KAEV+xB,EAAQ/xB,GACfyQ,EAAOshB,GAASi2R,EAASjhR,EAAMhV,GAAQA,EAAOgV,GAEhD,OAAOt2B,I,cCGT3P,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,gBCjBT,IAAIikT,EAAU,EAAQ,KAClBC,EAAU,EAAQ,KAClBC,EAAW,EAAQ,KA2BvBrnT,EAAOD,QAhBP,SAAoB4D,EAAQqwN,EAAOppC,GAKjC,IAJA,IAAI35J,GAAS,EACT/xB,EAAS80N,EAAM90N,OACfyQ,EAAS,KAEJshB,EAAQ/xB,GAAQ,CACvB,IAAIutC,EAAOunL,EAAM/iM,GACb/tB,EAAQikT,EAAQxjT,EAAQ8oC,GAExBm+I,EAAU1nL,EAAOupC,IACnB26Q,EAAQz3S,EAAQ03S,EAAS56Q,EAAM9oC,GAAST,GAG5C,OAAOyM,I,cCdT3P,EAAOD,QAJP,SAAkB4D,EAAQH,GACxB,OAAiB,MAAVG,OAAiBzB,EAAYyB,EAAOH,K,gBCT7C,IAAI8jT,EAAc,EAAQ,KACtBD,EAAW,EAAQ,KACnBv/L,EAAU,EAAQ,KAClBvzF,EAAW,EAAQ,KACnBgzR,EAAQ,EAAQ,KA8CpBvnT,EAAOD,QAlCP,SAAiB4D,EAAQ8oC,EAAMvpC,EAAOskT,GACpC,IAAKjzR,EAAS5wB,GACZ,OAAOA,EAST,IALA,IAAIstB,GAAS,EACT/xB,GAHJutC,EAAO46Q,EAAS56Q,EAAM9oC,IAGJzE,OACds8C,EAAYt8C,EAAS,EACrBuoT,EAAS9jT,EAEI,MAAV8jT,KAAoBx2R,EAAQ/xB,GAAQ,CACzC,IAAIsE,EAAM+jT,EAAM96Q,EAAKxb,IACjB6b,EAAW5pC,EAEf,GAAY,cAARM,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOG,EAGT,GAAIstB,GAASuqB,EAAW,CACtB,IAAI2oO,EAAWsjC,EAAOjkT,QAELtB,KADjB4qC,EAAW06Q,EAAaA,EAAWrjC,EAAU3gR,EAAKikT,QAAUvlT,KAE1D4qC,EAAWvY,EAAS4vP,GAChBA,EACCr8J,EAAQr7E,EAAKxb,EAAQ,IAAM,GAAK,IAGzCq2R,EAAYG,EAAQjkT,EAAKspC,GACzB26Q,EAASA,EAAOjkT,GAElB,OAAOG,I,gBC/CT,IAAI+jT,EAAY,EAAQ,KAEpB9kT,EAAkB,WACpB,IACE,IAAIu0B,EAAOuwR,EAAUvoT,OAAQ,kBAE7B,OADAg4B,EAAK,GAAI,GAAI,IACNA,EACP,MAAOj3B,KALU,GAQrBF,EAAOD,QAAU6C,G,cCEjB5C,EAAOD,QAJP,SAAkB4D,EAAQH,GACxB,OAAiB,MAAVG,OAAiBzB,EAAYyB,EAAOH,K,cCR7C,IAGImkT,EAAW,mBAoBf3nT,EAAOD,QAVP,SAAiBmD,EAAOhE,GACtB,IAAI0C,SAAcsB,EAGlB,SAFAhE,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAAR0C,GACU,UAARA,GAAoB+lT,EAAS3rQ,KAAK94C,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQhE,I,cCDjDc,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,gBCjBT,IAAIupH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ymEAA0mE,KAGnoEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ujDAAwjD,KAGjlDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ylJAA0lJ,KAGnnJe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,s2LAAu2L,KAGh4Le,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,u6EAAw6E,KAGj8Ee,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,yuDAA0uD,KAGnwDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,uhDAAwhD,KAGjjDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,k1DAAm1D,KAG52De,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,6HAA8H,M,gBCLvJ,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,suIAAuuI,KAGhwIe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,62EAA82E,KAGv4Ee,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ksDAAmsD,KAG5tDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,6BCRvBhtH,EAAQsD,YAAa,EACrBtD,EAAQ81B,QAMR,SAA0Bj0B,GACxB,IAAIgmT,GAAU,EAAIC,EAAYhyR,SAASj0B,GACvC,MAAO,CACL4gF,QAAS,SAAiBh/E,GACxB,OAAO,IAAIlD,SAAQ,SAAUC,EAASC,GACpCD,EAAQqnT,EAAQplO,QAAQh/E,QAG5BokF,QAAS,SAAiBpkF,EAAKm8B,GAC7B,OAAO,IAAIr/B,SAAQ,SAAUC,EAASC,GACpCD,EAAQqnT,EAAQhgO,QAAQpkF,EAAKm8B,QAGjCmoR,WAAY,SAAoBtkT,GAC9B,OAAO,IAAIlD,SAAQ,SAAUC,EAASC,GACpCD,EAAQqnT,EAAQE,WAAWtkT,UAnBnC,IAEgCuyB,EAF5B8xR,GAE4B9xR,EAFS,EAAQ,OAEIA,EAAI1yB,WAAa0yB,EAAM,CAAEF,QAASE,I,6BCFvF,SAASy8C,EAAQz8C,GAAwT,OAAtOy8C,EAArD,mBAAXxvE,QAAoD,iBAApBA,OAAO6pG,SAAmC,SAAiB92E,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX/yB,QAAyB+yB,EAAI9C,cAAgBjwB,QAAU+yB,IAAQ/yB,OAAO5D,UAAY,gBAAkB22B,IAAyBA,GAExV,SAASuoB,KALTv+C,EAAQsD,YAAa,EACrBtD,EAAQ81B,QA+BR,SAAoBj0B,GAClB,IAAImmT,EAAc,GAAGjoR,OAAOl+B,EAAM,WAClC,OArBF,SAAoBmmT,GAClB,GAAoE,YAA/C,oBAAT3kR,KAAuB,YAAcovC,EAAQpvC,UAAyB2kR,KAAe3kR,MAC/F,OAAO,EAGT,IACE,IAAIwkR,EAAUxkR,KAAK2kR,GACfC,EAAU,iBAAiBloR,OAAOioR,EAAa,SACnDH,EAAQhgO,QAAQogO,EAAS,QACzBJ,EAAQplO,QAAQwlO,GAChBJ,EAAQE,WAAWE,GACnB,MAAO9nT,GAEP,OAAO,EAGT,OAAO,EAKH+nT,CAAWF,GAAqB3kR,KAAK2kR,GAKhCG,GAhCX,IAAIA,EAAc,CAChB1lO,QAASlkC,EACTspC,QAAStpC,EACTwpQ,WAAYxpQ,I,gBCZd,IAAImuE,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,s0CAAu0C,KAGh2Ce,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8xCAA+xC,KAGxzCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,6gCAA8gC,KAGviCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,GAAI,M,gBCL7B,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ktNAAmtN,KAG5uNe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,m4BAAo4B,M,gBCL75B,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,kgFAAmgF,KAG5hFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,mEAAoE,M,gBCL7F,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,qkFAAskF,KAG/lFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,uwBAAwwB,M,iBCLjyBe,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ygFAA0gF,KAGniFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,4vGAA6vG,KAGtxGe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,koHAAmoH,KAG5pHe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIz6F,EAAI,EAAQ,IAGZ61R,EAASnzR,KAAK0yD,MACdvuC,EAAMnkB,KAAKmkB,IACXgvD,EAAOnzE,KAAKmzE,KAQhB71E,EAAE,CAAExwB,OAAQ,OAAQg0B,MAAM,EAAMuQ,MAAO,EAAGzS,SAJ5Bu0R,GAAUA,EAAOloJ,IAAUn4H,OAASm4H,KAIS,CAEzDv4E,MAAO,SAAe0gO,EAAQC,GAM5B,IALA,IAIIp7R,EAAKq7R,EAJLppG,EAAM,EACNlgN,EAAI,EACJupT,EAAOp9R,UAAUjsB,OACjBspT,EAAO,EAEJxpT,EAAIupT,GAELC,GADJv7R,EAAMksB,EAAIhuB,UAAUnsB,QAGlBkgN,EAAMA,GADNopG,EAAME,EAAOv7R,GACKq7R,EAAM,EACxBE,EAAOv7R,GAGPiyL,GAFSjyL,EAAM,GACfq7R,EAAMr7R,EAAMu7R,GACCF,EACDr7R,EAEhB,OAAOu7R,IAASvoJ,IAAWA,IAAWuoJ,EAAOrgN,EAAK+2G,O,gBChCtD,IAAIzyF,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,krFAAmrF,KAG5sFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIz6F,EAAI,EAAQ,IACZ2+C,EAAa,EAAQ,KAKzB3+C,EAAE,CAAExwB,OAAQ,SAAUg0B,MAAM,EAAMlC,OAAQyjB,OAAO45B,YAAcA,GAAc,CAC3EA,WAAYA,K,6BCLd,SAASuB,EAAQz8C,GAAkC,OAAOy8C,EAAU,mBAAqBxvE,QAAU,iBAAmBA,OAAO6pG,SAAW,SAAU92E,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqB/yB,QAAU+yB,EAAI9C,cAAgBjwB,QAAU+yB,IAAQ/yB,OAAO5D,UAAY,gBAAkB22B,IAAgBA,GAEzU52B,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAET/D,OAAOyD,eAAe7C,EAAS,gBAAiB,CAC9C8C,YAAY,EACZC,IAAK,WACH,OAAO2lT,EAAe5yR,WAG1B91B,EAAQ81B,aAAU,EAElB,IAAI0F,EAwBJ,SAAiCxF,EAAKq0L,GAAe,IAAKA,GAAer0L,GAAOA,EAAI1yB,WAAc,OAAO0yB,EAAO,GAAY,OAARA,GAAiC,WAAjBy8C,EAAQz8C,IAAoC,mBAARA,EAAsB,MAAO,CAAEF,QAASE,GAAS,IAAImkC,EAAQmwJ,EAAyBD,GAAc,GAAIlwJ,GAASA,EAAM+xC,IAAIl2E,GAAQ,OAAOmkC,EAAMp3D,IAAIizB,GAAQ,IAAIoM,EAAS,GAAQmoL,EAAwBnrN,OAAOyD,gBAAkBzD,OAAO2nC,yBAA0B,IAAK,IAAItjC,KAAOuyB,EAAO,GAAY,YAARvyB,GAAqBrE,OAAOC,UAAUC,eAAeC,KAAKy2B,EAAKvyB,GAAM,CAAE,IAAImwB,EAAO22L,EAAwBnrN,OAAO2nC,yBAAyB/Q,EAAKvyB,GAAO,KAAUmwB,IAASA,EAAK7wB,KAAO6wB,EAAK1qB,KAAQ9J,OAAOyD,eAAeu/B,EAAQ3+B,EAAKmwB,GAAgBwO,EAAO3+B,GAAOuyB,EAAIvyB,GAAY2+B,EAAOtM,QAAUE,EAASmkC,GAASA,EAAMjxD,IAAI8sB,EAAKoM,GAAW,OAAOA,EAxBjxBooL,CAAwB,EAAQ,IAExCm+F,EAAatzH,EAAuB,EAAQ,IAE5CuzH,EAAYvzH,EAAuB,EAAQ,KAE3CwzH,EAASxzH,EAAuB,EAAQ,MAExCs1C,EAAU,EAAQ,KAElBm+E,EAAe,EAAQ,KAEvB7/F,EAAS,EAAQ,KAEjBy/F,EAAiBrzH,EAAuB,EAAQ,MAEhD0zH,EAAO1zH,EAAuB,EAAQ,MAEtCjwK,EAAY,CAAC,OAAQ,SAAU,WAAY,kBAAmB,mBAAoB,2BAA4B,0BAA2B,WAAY,iBAAkB,SAE3K,SAASiwK,EAAuBr/J,GAAO,OAAOA,GAAOA,EAAI1yB,WAAa0yB,EAAM,CAAEF,QAASE,GAEvF,SAASs0L,EAAyBD,GAAe,GAAuB,mBAAZ/9G,QAAwB,OAAO,KAAM,IAAIm+G,EAAoB,IAAIn+G,QAAeo+G,EAAmB,IAAIp+G,QAAW,OAAQg+G,EAA2B,SAAkCD,GAAe,OAAOA,EAAcK,EAAmBD,IAAsBJ,GAIhU,SAASvxJ,IAA2Q,OAA9PA,EAAW15D,OAAO25D,QAAU,SAAUh3D,GAAU,IAAK,IAAI9C,EAAI,EAAGA,EAAImsB,UAAUjsB,OAAQF,IAAK,CAAE,IAAI+jC,EAAS5X,UAAUnsB,GAAI,IAAK,IAAIwE,KAAOu/B,EAAc5jC,OAAOC,UAAUC,eAAeC,KAAKyjC,EAAQv/B,KAAQ1B,EAAO0B,GAAOu/B,EAAOv/B,IAAY,OAAO1B,IAA2BikB,MAAMiL,KAAM7F,WAEhT,SAAS0+F,EAAyB9mF,EAAQsrE,GAAY,GAAc,MAAVtrE,EAAgB,MAAO,GAAI,IAAkEv/B,EAAKxE,EAAnE8C,EAEzF,SAAuCihC,EAAQsrE,GAAY,GAAc,MAAVtrE,EAAgB,MAAO,GAAI,IAA2Dv/B,EAAKxE,EAA5D8C,EAAS,GAAQ0sG,EAAarvG,OAAO8qB,KAAK8Y,GAAqB,IAAK/jC,EAAI,EAAGA,EAAIwvG,EAAWtvG,OAAQF,IAAOwE,EAAMgrG,EAAWxvG,GAAQqvG,EAASh1E,QAAQ71B,IAAQ,IAAa1B,EAAO0B,GAAOu/B,EAAOv/B,IAAQ,OAAO1B,EAFxMysG,CAA8BxrE,EAAQsrE,GAAuB,GAAIlvG,OAAOgrC,sBAAuB,CAAE,IAAImkE,EAAmBnvG,OAAOgrC,sBAAsBpH,GAAS,IAAK/jC,EAAI,EAAGA,EAAIsvG,EAAiBpvG,OAAQF,IAAOwE,EAAM8qG,EAAiBtvG,GAAQqvG,EAASh1E,QAAQ71B,IAAQ,GAAkBrE,OAAOC,UAAUw9D,qBAAqBt9D,KAAKyjC,EAAQv/B,KAAgB1B,EAAO0B,GAAOu/B,EAAOv/B,IAAU,OAAO1B,EAIne,SAASooC,EAAQvmC,EAAQu7D,GAAkB,IAAIj1C,EAAO9qB,OAAO8qB,KAAKtmB,GAAS,GAAIxE,OAAOgrC,sBAAuB,CAAE,IAAIg1B,EAAUhgE,OAAOgrC,sBAAsBxmC,GAASu7D,IAAmBC,EAAUA,EAAQv+B,QAAO,SAAUwJ,GAAO,OAAOjrC,OAAO2nC,yBAAyBnjC,EAAQymC,GAAKvnC,eAAiBonB,EAAKzqB,KAAKumB,MAAMkE,EAAMk1C,GAAY,OAAOl1C,EAE9U,SAASggB,EAAcnoC,GAAU,IAAK,IAAI9C,EAAI,EAAGA,EAAImsB,UAAUjsB,OAAQF,IAAK,CAAE,IAAI+jC,EAAS,MAAQ5X,UAAUnsB,GAAKmsB,UAAUnsB,GAAK,GAAIA,EAAI,EAAIkrC,EAAQ/qC,OAAO4jC,IAAS,GAAI15B,SAAQ,SAAU7F,GAAOm0E,EAAgB71E,EAAQ0B,EAAKu/B,EAAOv/B,OAAYrE,OAAOi9D,0BAA4Bj9D,OAAO+8D,iBAAiBp6D,EAAQ3C,OAAOi9D,0BAA0Br5B,IAAWmH,EAAQ/qC,OAAO4jC,IAAS15B,SAAQ,SAAU7F,GAAOrE,OAAOyD,eAAed,EAAQ0B,EAAKrE,OAAO2nC,yBAAyB/D,EAAQv/B,OAAa,OAAO1B,EAEjf,SAAS21H,EAAeltH,EAAKvL,GAAK,OAUlC,SAAyBuL,GAAO,GAAI3B,MAAMyrB,QAAQ9pB,GAAM,OAAOA,EAVtB8gO,CAAgB9gO,IAQzD,SAA+BA,EAAKvL,GAAK,IAAIujC,EAAY,MAAPh4B,EAAc,KAAyB,oBAAXvH,QAA0BuH,EAAIvH,OAAO6pG,WAAatiG,EAAI,cAAe,GAAU,MAANg4B,EAAY,OAAQ,IAAkDm1F,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKv1F,EAAKA,EAAGjjC,KAAKiL,KAAQstH,GAAMH,EAAKn1F,EAAGhf,QAAQ2N,QAAoB0mG,EAAKp4H,KAAKk4H,EAAGx0H,QAAYlE,GAAK44H,EAAK14H,SAAWF,GAA3D64H,GAAK,IAAoE,MAAO/zH,GAAOg0H,GAAK,EAAMH,EAAK7zH,EAAO,QAAU,IAAW+zH,GAAsB,MAAhBt1F,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIu1F,EAAI,MAAMH,GAAQ,OAAOC,EARzb0zG,CAAsB/gO,EAAKvL,IAI5F,SAAqC2D,EAAGwnM,GAAU,IAAKxnM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAOg/K,EAAkBh/K,EAAGwnM,GAAS,IAAIzmM,EAAIvE,OAAOC,UAAU6wB,SAAS3wB,KAAKqD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAEswB,cAAavvB,EAAIf,EAAEswB,YAAYjxB,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOkF,MAAMC,KAAKlG,GAAI,GAAU,cAANe,GAAqB,2CAA2Cs4C,KAAKt4C,GAAI,OAAOi+K,EAAkBh/K,EAAGwnM,GAJpTD,CAA4B3/L,EAAKvL,IAEnI,WAA8B,MAAM,IAAI+mC,UAAU,6IAFuFwlM,GAMzI,SAAS5pD,EAAkBp3K,EAAK+7B,IAAkB,MAAPA,GAAeA,EAAM/7B,EAAIrL,UAAQonC,EAAM/7B,EAAIrL,QAAQ,IAAK,IAAIF,EAAI,EAAG6oH,EAAO,IAAIj/G,MAAM09B,GAAMtnC,EAAIsnC,EAAKtnC,IAAO6oH,EAAK7oH,GAAKuL,EAAIvL,GAAM,OAAO6oH,EAQhL,SAAShrD,EAAkB/6D,EAAQ4mB,GAAS,IAAK,IAAI1pB,EAAI,EAAGA,EAAI0pB,EAAMxpB,OAAQF,IAAK,CAAE,IAAIglD,EAAat7B,EAAM1pB,GAAIglD,EAAWnhD,WAAamhD,EAAWnhD,aAAc,EAAOmhD,EAAWvwB,cAAe,EAAU,UAAWuwB,IAAYA,EAAWhuB,UAAW,GAAM72B,OAAOyD,eAAed,EAAQkiD,EAAWxgD,IAAKwgD,IAM7S,SAASsiJ,EAAgB3jM,EAAGzB,GAA+G,OAA1GolM,EAAkBnnM,OAAOqkD,gBAAkB,SAAyB7gD,EAAGzB,GAAsB,OAAjByB,EAAEgwE,UAAYzxE,EAAUyB,IAA6BA,EAAGzB,GAErK,SAASk+D,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUhkC,KAAM,OAAO,EAAO,GAAqB,mBAAVikC,MAAsB,OAAO,EAAM,IAAsF,OAAhFl7C,QAAQnlB,UAAUi0B,QAAQ/zB,KAAKigE,QAAQC,UAAUj7C,QAAS,IAAI,iBAAyB,EAAQ,MAAOrkB,GAAK,OAAO,GAN9Pw/D,GAA6B,OAAO,WAAkC,IAAsC/vD,EAAlCgwD,EAAQ+S,EAAgBrT,GAAkB,GAAIC,EAA2B,CAAE,IAAIM,EAAY8S,EAAgB1hD,MAAMiC,YAAatjB,EAAS4vD,QAAQC,UAAUG,EAAOx0C,UAAWy0C,QAAqBjwD,EAASgwD,EAAM55C,MAAMiL,KAAM7F,WAAc,OAAO08D,EAA2B72D,KAAMrhB,IAE5Z,SAASk4E,EAA2BzkD,EAAM9jC,GAAQ,GAAIA,IAA2B,WAAlBkzE,EAAQlzE,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIymC,UAAU,4DAA+D,OAAO+mE,EAAuB1pE,GAExR,SAAS0pE,EAAuB1pE,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAI/J,SAASsvC,EAAgB/vE,GAAwJ,OAAnJ+vE,EAAkBvzE,OAAOqkD,eAAiBrkD,OAAOokD,eAAiB,SAAyB5gD,GAAK,OAAOA,EAAEgwE,WAAaxzE,OAAOokD,eAAe5gD,KAA8BA,GAExM,SAASg1E,EAAgB5hD,EAAKvyB,EAAKN,GAAiK,OAApJM,KAAOuyB,EAAO52B,OAAOyD,eAAemzB,EAAKvyB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM4wB,cAAc,EAAMuC,UAAU,IAAkBD,EAAIvyB,GAAON,EAAgB6yB,EAK3M,IAAIi7F,EAAyB,SAAUy9H,IAnBvC,SAAmB77K,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI9sC,UAAU,sDAAyD6sC,EAASxzE,UAAYD,OAAOoE,OAAOsvE,GAAcA,EAAWzzE,UAAW,CAAE6zB,YAAa,CAAE/vB,MAAO0vE,EAAU58C,UAAU,EAAMvC,cAAc,KAAWt0B,OAAOyD,eAAegwE,EAAU,YAAa,CAAE58C,UAAU,IAAc68C,GAAYyzH,EAAgB1zH,EAAUC,GAoBpbiV,CAAUkpC,EAAWy9H,GAErB,IAxBoBr5N,EAAa0nC,EAAYC,EAwBzCgG,EAAS3D,EAAa4xD,GAE1B,SAASA,EAAUtoG,GAGjB,IAAIsjB,EAoHJ,OArJJ,SAAyBywB,EAAUrnC,GAAe,KAAMqnC,aAAoBrnC,GAAgB,MAAM,IAAI2Q,UAAU,qCAmC5G0xC,CAAgBzmD,KAAMggG,GAItBr5C,EAAgBm1B,EAFhB9gE,EAAQ+2B,EAAOzjE,KAAK0xB,KAAMtI,IAEqB,eAAe,SAAUxoB,EAAGgqO,GAMzE,IALA,EAAI4+E,EAAKjzR,SAAS,6BAA8Bq0M,IAK5B,IAHFl+L,EAAMtjB,MAAMkmG,QAAQ1uH,GAAG,EAAI2oT,EAAa5+E,qBAAqBn9H,EAAuB9gE,GAAQk+L,IAGnF,OAAO,EAElCl+L,EAAMu3B,SAAS,CACbwrM,UAAU,EACVg6C,SAAS,OAIbpxO,EAAgBm1B,EAAuB9gE,GAAQ,UAAU,SAAU9rC,EAAGgqO,GACpE,IAAKl+L,EAAM31B,MAAM04P,SAAU,OAAO,GAClC,EAAI+5C,EAAKjzR,SAAS,wBAAyBq0M,GAC3C,IAAI8+E,GAAS,EAAIH,EAAa5+E,qBAAqBn9H,EAAuB9gE,GAAQk+L,GAC9Ege,EAEF,CACA77O,EAAG28S,EAAO38S,EACVC,EAAG08S,EAAO18S,GAGZ,GAAI0/B,EAAMtjB,MAAMo0E,OAAQ,CAEtB,IAAIzwF,EAAI67O,EAAS77O,EACbC,EAAI47O,EAAS57O,EAIjB47O,EAAS77O,GAAK2/B,EAAM31B,MAAM4yS,OAC1B/gE,EAAS57O,GAAK0/B,EAAM31B,MAAM6yS,OAE1B,IACIC,EAAqB1xL,GADD,EAAIoxL,EAAa1+E,kBAAkBr9H,EAAuB9gE,GAAQk8M,EAAS77O,EAAG67O,EAAS57O,GACpD,GACvD88S,EAAYD,EAAmB,GAC/BE,EAAYF,EAAmB,GAEnCjhE,EAAS77O,EAAI+8S,EACblhE,EAAS57O,EAAI+8S,EAEbnhE,EAAS+gE,OAASj9Q,EAAM31B,MAAM4yS,QAAU58S,EAAI67O,EAAS77O,GACrD67O,EAASghE,OAASl9Q,EAAM31B,MAAM6yS,QAAU58S,EAAI47O,EAAS57O,GAErD08S,EAAO38S,EAAI67O,EAAS77O,EACpB28S,EAAO18S,EAAI47O,EAAS57O,EACpB08S,EAAO95L,OAASg5H,EAAS77O,EAAI2/B,EAAM31B,MAAMhK,EACzC28S,EAAO75L,OAAS+4H,EAAS57O,EAAI0/B,EAAM31B,MAAM/J,EAM3C,IAAqB,IAFF0/B,EAAMtjB,MAAM4gS,OAAOppT,EAAG8oT,GAEb,OAAO,EAEnCh9Q,EAAMu3B,SAAS2kL,MAGjBvwK,EAAgBm1B,EAAuB9gE,GAAQ,cAAc,SAAU9rC,EAAGgqO,GACxE,IAAKl+L,EAAM31B,MAAM04P,SAAU,OAAO,EAIlC,IAAuB,IAFF/iO,EAAMtjB,MAAM6gS,OAAOrpT,GAAG,EAAI2oT,EAAa5+E,qBAAqBn9H,EAAuB9gE,GAAQk+L,IAElF,OAAO,GACrC,EAAI4+E,EAAKjzR,SAAS,4BAA6Bq0M,GAC/C,IAAIge,EAEF,CACA6mB,UAAU,EACVk6C,OAAQ,EACRC,OAAQ,GAMV,GAFiB3kS,QAAQynB,EAAMtjB,MAAM1gB,UAErB,CACd,IAAIwhT,EAAuBx9Q,EAAMtjB,MAAM1gB,SACnCqE,EAAIm9S,EAAqBn9S,EACzBC,EAAIk9S,EAAqBl9S,EAC7B47O,EAAS77O,EAAIA,EACb67O,EAAS57O,EAAIA,EAGf0/B,EAAMu3B,SAAS2kL,MAGjBl8M,EAAM31B,MAAQ,CAEZ04P,UAAU,EAEVg6C,SAAS,EAET18S,EAAGqc,EAAM1gB,SAAW0gB,EAAM1gB,SAASqE,EAAIqc,EAAM+gS,gBAAgBp9S,EAC7DC,EAAGoc,EAAM1gB,SAAW0gB,EAAM1gB,SAASsE,EAAIoc,EAAM+gS,gBAAgBn9S,EAC7Do9S,kBAAmBz/Q,EAAc,GAAIvhB,EAAM1gB,UAE3CihT,OAAQ,EACRC,OAAQ,EAERS,cAAc,IAGZjhS,EAAM1gB,UAAc0gB,EAAM4gS,QAAU5gS,EAAM6gS,QAE5CxlT,QAAQ0mC,KAAK,6NAGRuB,EAmHT,OApQoB5W,EAoJP47F,EApJgCj0D,EAyOzC,CAAC,CACHv5D,IAAK,2BACLN,MAEA,SAAkCyhB,EAAMyC,GAGtC,IAAIpf,EAAW2c,EAAK3c,SAChB0hT,EAAoBtiS,EAAMsiS,kBAG9B,OAAI1hT,GAAc0hT,GAAqB1hT,EAASqE,IAAMq9S,EAAkBr9S,GAAKrE,EAASsE,IAAMo9S,EAAkBp9S,EAYvG,OAXL,EAAIw8S,EAAKjzR,SAAS,yCAA0C,CAC1D7tB,SAAUA,EACV0hT,kBAAmBA,IAEd,CACLr9S,EAAGrE,EAASqE,EACZC,EAAGtE,EAASsE,EACZo9S,kBAAmBz/Q,EAAc,GAAIjiC,SA5PZ80D,EAoJT,CAAC,CACvBt5D,IAAK,oBACLN,MAAO,gBAE4B,IAAtBe,OAAOqwQ,YAA8BtjP,KAAK+4M,wBAAyB9lO,OAAOqwQ,YACnFtjP,KAAKuyC,SAAS,CACZomP,cAAc,MAInB,CACDnmT,IAAK,uBACLN,MAAO,WACL8tB,KAAKuyC,SAAS,CACZwrM,UAAU,MAKb,CACDvrQ,IAAK,cACLN,MAAO,WAGL,IAAI0mT,EAAuB1mP,EAAa2mP,EAExC,OAA4O,QAApOD,EAAuD,QAA9B1mP,EAAclyC,KAAKtI,aAAmC,IAAhBw6C,GAAkF,QAA/C2mP,EAAsB3mP,EAAY4mP,eAA6C,IAAxBD,OAAjE,EAA2GA,EAAoBtjS,eAA+C,IAA1BqjS,EAAmCA,EAAwBjB,EAAU9yR,QAAQk0M,YAAY/4M,QAE9U,CACDxtB,IAAK,SACLN,MAAO,WAGL,IAAI6mT,EAEAzkP,EAAet0C,KAAKtI,MAGpB7D,GAFOygD,EAAaokK,KACXpkK,EAAaw3B,OACXx3B,EAAazgD,UACxB4kS,EAAkBnkP,EAAamkP,gBAC/BO,EAAmB1kP,EAAa0kP,iBAChCC,EAA2B3kP,EAAa2kP,yBACxCC,EAA0B5kP,EAAa4kP,wBACvCliT,EAAWs9D,EAAat9D,SACxB0gN,EAAiBpjJ,EAAaojJ,eAE9ByhG,GADQ7kP,EAAajuD,MACAwyG,EAAyBvkD,EAAcngD,IAE5DjR,EAAQ,GACRk2S,EAAe,KAGf3gF,GADallN,QAAQvc,IACMgpB,KAAK3a,MAAM04P,SACtCs7C,EAAgBriT,GAAYyhT,EAC5Ba,EAAgB,CAElBj+S,GAAG,EAAIw8S,EAAar/E,UAAUx4M,OAASy4M,EAAYz4M,KAAK3a,MAAMhK,EAAIg+S,EAAch+S,EAEhFC,GAAG,EAAIu8S,EAAal/E,UAAU34M,OAASy4M,EAAYz4M,KAAK3a,MAAM/J,EAAI+9S,EAAc/9S,GAG9E0kB,KAAK3a,MAAMszS,aACbS,GAAe,EAAI1/E,EAAQ5hB,oBAAoBwhG,EAAe5hG,GAM9Dx0M,GAAQ,EAAIw2N,EAAQliB,oBAAoB8hG,EAAe5hG,GAIzD,IAAIzxL,GAAY,EAAI2xR,EAAO/yR,SAAShR,EAAS6D,MAAMuO,WAAa,GAAI+yR,GAA+BryO,EAAZoyO,EAAQ,GAA2BE,EAA0Bj5R,KAAK3a,MAAM04P,UAAWp3L,EAAgBoyO,EAAOG,EAAyBl5R,KAAK3a,MAAM0yS,SAAUgB,IAG/O,OAAoBxuR,EAAM36B,cAAc6nT,EAAe5yR,QAASgjC,EAAS,GAAIsxP,EAAoB,CAC/Fv7L,QAAS59F,KAAKu5R,YACdjB,OAAQt4R,KAAKs4R,OACbC,OAAQv4R,KAAKw5R,aACEjvR,EAAMyvE,aAAazvE,EAAMotP,SAASC,KAAK/jQ,GAAW,CACjEoS,UAAWA,EACX/iB,MAAO+1B,EAAcA,EAAc,GAAIplB,EAAS6D,MAAMxU,OAAQA,GAC9D24D,UAAWu9O,UAtO2DvtP,EAAkBznC,EAAYh2B,UAAW09D,GAAiBC,GAAaF,EAAkBznC,EAAa2nC,GAAc59D,OAAOyD,eAAewyB,EAAa,YAAa,CAAEY,UAAU,IAoQrPg7F,EA/OoB,CAgP3Bz1F,EAAMy7E,WAERj3G,EAAQ81B,QAAUm7F,EAElBr5C,EAAgBq5C,EAAW,cAAe,aAE1Cr5C,EAAgBq5C,EAAW,YAAa/mF,EAAcA,EAAc,GAAIw+Q,EAAe5yR,QAAQS,WAAY,GAAI,CAc7GozM,KAAMg/E,EAAW7yR,QAAQ8/H,MAAM,CAAC,OAAQ,IAAK,IAAK,SA4BlD74D,OAAQ4rN,EAAW7yR,QAAQgB,UAAU,CAAC6xR,EAAW7yR,QAAQg6O,MAAM,CAC7D7qM,KAAM0jP,EAAW7yR,QAAQ9sB,OACzB28D,MAAOgjP,EAAW7yR,QAAQ9sB,OAC1B80D,IAAK6qP,EAAW7yR,QAAQ9sB,OACxB+1D,OAAQ4pP,EAAW7yR,QAAQ9sB,SACzB2/S,EAAW7yR,QAAQvE,OAAQo3R,EAAW7yR,QAAQ8/H,MAAM,EAAC,MACzDq0J,iBAAkBtB,EAAW7yR,QAAQvE,OACrC24R,yBAA0BvB,EAAW7yR,QAAQvE,OAC7C44R,wBAAyBxB,EAAW7yR,QAAQvE,OAmB5Cm4R,gBAAiBf,EAAW7yR,QAAQg6O,MAAM,CACxCxjQ,EAAGq8S,EAAW7yR,QAAQ9sB,OACtBuD,EAAGo8S,EAAW7yR,QAAQ9sB,SAExB2/M,eAAgBggG,EAAW7yR,QAAQg6O,MAAM,CACvCxjQ,EAAGq8S,EAAW7yR,QAAQgB,UAAU,CAAC6xR,EAAW7yR,QAAQ9sB,OAAQ2/S,EAAW7yR,QAAQvE,SAC/EhlB,EAAGo8S,EAAW7yR,QAAQgB,UAAU,CAAC6xR,EAAW7yR,QAAQ9sB,OAAQ2/S,EAAW7yR,QAAQvE,WAuBjFtpB,SAAU0gT,EAAW7yR,QAAQg6O,MAAM,CACjCxjQ,EAAGq8S,EAAW7yR,QAAQ9sB,OACtBuD,EAAGo8S,EAAW7yR,QAAQ9sB,SAMxBkuB,UAAW+xL,EAAOp8B,UAClB14K,MAAO80M,EAAOp8B,UACd//G,UAAWm8I,EAAOp8B,aAGpBj1G,EAAgBq5C,EAAW,eAAgB/mF,EAAcA,EAAc,GAAIw+Q,EAAe5yR,QAAQ8uC,cAAe,GAAI,CACnH+kK,KAAM,OACN5sI,QAAQ,EACRktN,iBAAkB,kBAClBC,yBAA0B,2BAC1BC,wBAAyB,0BACzBT,gBAAiB,CACfp9S,EAAG,EACHC,EAAG,GAEL+K,MAAO,M,6BCrcTlY,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ8oN,mBAAqBA,EAC7B9oN,EAAQ0qT,qBAuCR,SAA8Bn9Q,EAE5BxC,GAKA,OAAOA,EAAS,IAAIhL,OAAOgL,EAAOuF,cAAe,KAAKvQ,OAAOwN,GAAQA,GA7CvEvtC,EAAQ81B,aAAU,EAClB91B,EAAQ2qT,UAAYA,EACpB,IAAIC,EAAW,CAAC,MAAO,SAAU,IAAK,MAEtC,SAASD,IAGP,IAAIE,EAAkBC,EAElBv9Q,EAEFniB,UAAUjsB,OAAS,QAAsBgD,IAAjBipB,UAAU,GAAmBA,UAAU,GAAK,YAGtE,GAAsB,oBAAXlnB,OAAwB,MAAO,GAG1C,IAAIiQ,EAAiD,QAAxC02S,EAAmB3mT,OAAOtD,gBAA2C,IAArBiqT,GAAsG,QAA9DC,EAAwBD,EAAiBroQ,uBAAuD,IAA1BsoQ,OAAhF,EAA4HA,EAAsB32S,MAC7O,IAAKA,EAAO,MAAO,GACnB,GAAIo5B,KAAQp5B,EAAO,MAAO,GAE1B,IAAK,IAAIlV,EAAI,EAAGA,EAAI2rT,EAASzrT,OAAQF,IACnC,GAAI6pN,EAAmBv7K,EAAMq9Q,EAAS3rT,MAAOkV,EAAO,OAAOy2S,EAAS3rT,GAGtE,MAAO,GAGT,SAAS6pN,EAAmBv7K,EAE1BxC,GAKA,OAAOA,EAAS,GAAGhL,OAAOgL,GAAQhL,OAapC,SAA0B0N,GAQxB,IAHA,IAAIkrF,EAAM,GACNoyL,GAAmB,EAEd9rT,EAAI,EAAGA,EAAIwuC,EAAItuC,OAAQF,IAC1B8rT,GACFpyL,GAAOlrF,EAAIxuC,GAAGy2C,cACdq1Q,GAAmB,GACC,MAAXt9Q,EAAIxuC,GACb8rT,GAAmB,EAEnBpyL,GAAOlrF,EAAIxuC,GAIf,OAAO05H,EAhCkCqyL,CAAiBz9Q,IAASA,EAsCrE,IAAI6kL,EAAYu4F,IAIhB3qT,EAAQ81B,QAAUs8L,G,6BClFlB,SAAS3/I,EAAQz8C,GAAkC,OAAOy8C,EAAU,mBAAqBxvE,QAAU,iBAAmBA,OAAO6pG,SAAW,SAAU92E,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqB/yB,QAAU+yB,EAAI9C,cAAgBjwB,QAAU+yB,IAAQ/yB,OAAO5D,UAAY,gBAAkB22B,IAAgBA,GAEzU52B,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ81B,aAAU,EAElB,IAAI0F,EAkBJ,SAAiCxF,EAAKq0L,GAAe,IAAKA,GAAer0L,GAAOA,EAAI1yB,WAAc,OAAO0yB,EAAO,GAAY,OAARA,GAAiC,WAAjBy8C,EAAQz8C,IAAoC,mBAARA,EAAsB,MAAO,CAAEF,QAASE,GAAS,IAAImkC,EAAQmwJ,EAAyBD,GAAc,GAAIlwJ,GAASA,EAAM+xC,IAAIl2E,GAAQ,OAAOmkC,EAAMp3D,IAAIizB,GAAQ,IAAIoM,EAAS,GAAQmoL,EAAwBnrN,OAAOyD,gBAAkBzD,OAAO2nC,yBAA0B,IAAK,IAAItjC,KAAOuyB,EAAO,GAAY,YAARvyB,GAAqBrE,OAAOC,UAAUC,eAAeC,KAAKy2B,EAAKvyB,GAAM,CAAE,IAAImwB,EAAO22L,EAAwBnrN,OAAO2nC,yBAAyB/Q,EAAKvyB,GAAO,KAAUmwB,IAASA,EAAK7wB,KAAO6wB,EAAK1qB,KAAQ9J,OAAOyD,eAAeu/B,EAAQ3+B,EAAKmwB,GAAgBwO,EAAO3+B,GAAOuyB,EAAIvyB,GAAY2+B,EAAOtM,QAAUE,EAASmkC,GAASA,EAAMjxD,IAAI8sB,EAAKoM,GAAW,OAAOA,EAlBjxBooL,CAAwB,EAAQ,IAExCm+F,EAAatzH,EAAuB,EAAQ,IAE5CuzH,EAAYvzH,EAAuB,EAAQ,KAE3Cs1C,EAAU,EAAQ,KAElBm+E,EAAe,EAAQ,KAEvB7/F,EAAS,EAAQ,KAEjB8/F,EAAO1zH,EAAuB,EAAQ,MAE1C,SAASA,EAAuBr/J,GAAO,OAAOA,GAAOA,EAAI1yB,WAAa0yB,EAAM,CAAEF,QAASE,GAEvF,SAASs0L,EAAyBD,GAAe,GAAuB,mBAAZ/9G,QAAwB,OAAO,KAAM,IAAIm+G,EAAoB,IAAIn+G,QAAeo+G,EAAmB,IAAIp+G,QAAW,OAAQg+G,EAA2B,SAAkCD,GAAe,OAAOA,EAAcK,EAAmBD,IAAsBJ,GAIhU,SAAS3yF,EAAeltH,EAAKvL,GAAK,OAUlC,SAAyBuL,GAAO,GAAI3B,MAAMyrB,QAAQ9pB,GAAM,OAAOA,EAVtB8gO,CAAgB9gO,IAQzD,SAA+BA,EAAKvL,GAAK,IAAIujC,EAAY,MAAPh4B,EAAc,KAAyB,oBAAXvH,QAA0BuH,EAAIvH,OAAO6pG,WAAatiG,EAAI,cAAe,GAAU,MAANg4B,EAAY,OAAQ,IAAkDm1F,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKv1F,EAAKA,EAAGjjC,KAAKiL,KAAQstH,GAAMH,EAAKn1F,EAAGhf,QAAQ2N,QAAoB0mG,EAAKp4H,KAAKk4H,EAAGx0H,QAAYlE,GAAK44H,EAAK14H,SAAWF,GAA3D64H,GAAK,IAAoE,MAAO/zH,GAAOg0H,GAAK,EAAMH,EAAK7zH,EAAO,QAAU,IAAW+zH,GAAsB,MAAhBt1F,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIu1F,EAAI,MAAMH,GAAQ,OAAOC,EARzb0zG,CAAsB/gO,EAAKvL,IAI5F,SAAqC2D,EAAGwnM,GAAU,IAAKxnM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAOg/K,EAAkBh/K,EAAGwnM,GAAS,IAAIzmM,EAAIvE,OAAOC,UAAU6wB,SAAS3wB,KAAKqD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAEswB,cAAavvB,EAAIf,EAAEswB,YAAYjxB,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOkF,MAAMC,KAAKlG,GAAI,GAAU,cAANe,GAAqB,2CAA2Cs4C,KAAKt4C,GAAI,OAAOi+K,EAAkBh/K,EAAGwnM,GAJpTD,CAA4B3/L,EAAKvL,IAEnI,WAA8B,MAAM,IAAI+mC,UAAU,6IAFuFwlM,GAMzI,SAAS5pD,EAAkBp3K,EAAK+7B,IAAkB,MAAPA,GAAeA,EAAM/7B,EAAIrL,UAAQonC,EAAM/7B,EAAIrL,QAAQ,IAAK,IAAIF,EAAI,EAAG6oH,EAAO,IAAIj/G,MAAM09B,GAAMtnC,EAAIsnC,EAAKtnC,IAAO6oH,EAAK7oH,GAAKuL,EAAIvL,GAAM,OAAO6oH,EAMhL,SAASpwC,EAAgBhb,EAAUrnC,GAAe,KAAMqnC,aAAoBrnC,GAAgB,MAAM,IAAI2Q,UAAU,qCAEhH,SAAS82B,EAAkB/6D,EAAQ4mB,GAAS,IAAK,IAAI1pB,EAAI,EAAGA,EAAI0pB,EAAMxpB,OAAQF,IAAK,CAAE,IAAIglD,EAAat7B,EAAM1pB,GAAIglD,EAAWnhD,WAAamhD,EAAWnhD,aAAc,EAAOmhD,EAAWvwB,cAAe,EAAU,UAAWuwB,IAAYA,EAAWhuB,UAAW,GAAM72B,OAAOyD,eAAed,EAAQkiD,EAAWxgD,IAAKwgD,IAM7S,SAASsiJ,EAAgB3jM,EAAGzB,GAA+G,OAA1GolM,EAAkBnnM,OAAOqkD,gBAAkB,SAAyB7gD,EAAGzB,GAAsB,OAAjByB,EAAEgwE,UAAYzxE,EAAUyB,IAA6BA,EAAGzB,GAErK,SAASk+D,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUhkC,KAAM,OAAO,EAAO,GAAqB,mBAAVikC,MAAsB,OAAO,EAAM,IAAsF,OAAhFl7C,QAAQnlB,UAAUi0B,QAAQ/zB,KAAKigE,QAAQC,UAAUj7C,QAAS,IAAI,iBAAyB,EAAQ,MAAOrkB,GAAK,OAAO,GAN9Pw/D,GAA6B,OAAO,WAAkC,IAAsC/vD,EAAlCgwD,EAAQ+S,EAAgBrT,GAAkB,GAAIC,EAA2B,CAAE,IAAIM,EAAY8S,EAAgB1hD,MAAMiC,YAAatjB,EAAS4vD,QAAQC,UAAUG,EAAOx0C,UAAWy0C,QAAqBjwD,EAASgwD,EAAM55C,MAAMiL,KAAM7F,WAAc,OAAO08D,EAA2B72D,KAAMrhB,IAE5Z,SAASk4E,EAA2BzkD,EAAM9jC,GAAQ,GAAIA,IAA2B,WAAlBkzE,EAAQlzE,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIymC,UAAU,4DAA+D,OAAO+mE,EAAuB1pE,GAExR,SAAS0pE,EAAuB1pE,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAI/J,SAASsvC,EAAgB/vE,GAAwJ,OAAnJ+vE,EAAkBvzE,OAAOqkD,eAAiBrkD,OAAOokD,eAAiB,SAAyB5gD,GAAK,OAAOA,EAAEgwE,WAAaxzE,OAAOokD,eAAe5gD,KAA8BA,GAExM,SAASg1E,EAAgB5hD,EAAKvyB,EAAKN,GAAiK,OAApJM,KAAOuyB,EAAO52B,OAAOyD,eAAemzB,EAAKvyB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM4wB,cAAc,EAAMuC,UAAU,IAAkBD,EAAIvyB,GAAON,EAAgB6yB,EAG3M,IAAIi1R,EACK,CACL91R,MAAO,aACP48H,KAAM,YACNk1B,KAAM,YAJNgkI,EAMK,CACL91R,MAAO,YACP48H,KAAM,YACNk1B,KAAM,WAINikI,EAAeD,EAgDf/5L,EAA6B,SAAUw9H,IA9E3C,SAAmB77K,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI9sC,UAAU,sDAAyD6sC,EAASxzE,UAAYD,OAAOoE,OAAOsvE,GAAcA,EAAWzzE,UAAW,CAAE6zB,YAAa,CAAE/vB,MAAO0vE,EAAU58C,UAAU,EAAMvC,cAAc,KAAWt0B,OAAOyD,eAAegwE,EAAU,YAAa,CAAE58C,UAAU,IAAc68C,GAAYyzH,EAAgB1zH,EAAUC,GA+EpbiV,CAAUmpC,EAAew9H,GAEzB,IAnFoBr5N,EAAa0nC,EAAYC,EAmFzCgG,EAAS3D,EAAa6xD,GAE1B,SAASA,IACP,IAAIjlF,EAEJyrC,EAAgBzmD,KAAMigG,GAEtB,IAAK,IAAIhmF,EAAO9f,UAAUjsB,OAAQqrC,EAAO,IAAI3hC,MAAMqiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EX,EAAKW,GAAQ/f,UAAU+f,GA8MzB,OAzMAysC,EAAgBm1B,EAFhB9gE,EAAQ+2B,EAAOzjE,KAAKymB,MAAMg9C,EAAQ,CAAC/xC,MAAM8O,OAAOyK,KAED,QAAS,CACtDwkO,UAAU,EAEVjlC,MAAOhiM,IACPkiM,MAAOliM,IACP8iM,gBAAiB,OAGnBjzJ,EAAgBm1B,EAAuB9gE,GAAQ,WAAW,GAE1D2rC,EAAgBm1B,EAAuB9gE,GAAQ,mBAAmB,SAAU9rC,GAK1E,GAHA8rC,EAAMtjB,MAAMqxE,YAAY75F,IAGnB8rC,EAAMtjB,MAAMwiS,eAAqC,iBAAbhrT,EAAE0iI,QAAoC,IAAb1iI,EAAE0iI,OAAc,OAAO,EAEzF,IAAIwnI,EAAWp+N,EAAM+9L,cAErB,IAAKqgC,IAAaA,EAASptK,gBAAkBotK,EAASptK,cAAc7iE,KAClE,MAAM,IAAI94B,MAAM,6CAGlB,IAAI27F,EAAgBotK,EAASptK,cAE7B,KAAIhxD,EAAMtjB,MAAM4P,YAAcp4B,EAAE4B,kBAAkBk7F,EAAcC,YAAYw1H,OAASzmL,EAAMtjB,MAAMsmB,UAAW,EAAI07L,EAAQthB,6BAA6BlpN,EAAE4B,OAAQkqC,EAAMtjB,MAAMsmB,OAAQo7N,IAAap+N,EAAMtjB,MAAM2hF,SAAU,EAAIqgI,EAAQthB,6BAA6BlpN,EAAE4B,OAAQkqC,EAAMtjB,MAAM2hF,OAAQ+/J,IAA7R,CAMe,eAAXlqQ,EAAE0B,MAAuB1B,EAAEm2B,iBAI/B,IAAIu0M,GAAkB,EAAIF,EAAQzhB,oBAAoB/oN,GAEtD8rC,EAAMu3B,SAAS,CACbqnK,gBAAiBA,IAInB,IAAI5iO,GAAW,EAAI6gT,EAAal+E,oBAAoBzqO,EAAG0qO,EAAiB99H,EAAuB9gE,IAC/F,GAAgB,MAAZhkC,EAAJ,CAEA,IAAIqE,EAAIrE,EAASqE,EACbC,EAAItE,EAASsE,EAEb6+S,GAAY,EAAItC,EAAaj/E,gBAAgB98H,EAAuB9gE,GAAQ3/B,EAAGC,IACnF,EAAIw8S,EAAKjzR,SAAS,qCAAsCs1R,IAExD,EAAIrC,EAAKjzR,SAAS,UAAWmW,EAAMtjB,MAAMkmG,UAIpB,IAFF5iF,EAAMtjB,MAAMkmG,QAAQ1uH,EAAGirT,KAEM,IAAlBn/Q,EAAMhQ,UAGhCgQ,EAAMtjB,MAAM0iS,uBAAsB,EAAI1gF,EAAQpiB,qBAAqBtrH,GAIvEhxD,EAAMu3B,SAAS,CACbwrM,UAAU,EACVjlC,MAAOz9N,EACP29N,MAAO19N,KAMT,EAAIo+N,EAAQ7mH,UAAU7mB,EAAeiuN,EAAan5J,KAAM9lH,EAAMq/Q,aAC9D,EAAI3gF,EAAQ7mH,UAAU7mB,EAAeiuN,EAAajkI,KAAMh7I,EAAMs/Q,sBAGhE3zO,EAAgBm1B,EAAuB9gE,GAAQ,cAAc,SAAU9rC,GAErE,IAAI8H,GAAW,EAAI6gT,EAAal+E,oBAAoBzqO,EAAG8rC,EAAM31B,MAAMu0N,gBAAiB99H,EAAuB9gE,IAC3G,GAAgB,MAAZhkC,EAAJ,CACA,IAAIqE,EAAIrE,EAASqE,EACbC,EAAItE,EAASsE,EAEjB,GAAI1D,MAAMyrB,QAAQ2X,EAAMtjB,MAAMsiN,MAAO,CACnC,IAAI97G,EAAS7iH,EAAI2/B,EAAM31B,MAAMyzN,MACzB36G,EAAS7iH,EAAI0/B,EAAM31B,MAAM2zN,MAIzBuhF,EAAe9zL,GAFD,EAAIoxL,EAAa99E,YAAY/+L,EAAMtjB,MAAMsiN,KAAM97G,EAAQC,GAE1B,GAI/C,GAFAD,EAASq8L,EAAa,GACtBp8L,EAASo8L,EAAa,IACjBr8L,IAAWC,EAAQ,OAExB9iH,EAAI2/B,EAAM31B,MAAMyzN,MAAQ56G,EAAQ5iH,EAAI0/B,EAAM31B,MAAM2zN,MAAQ76G,EAG1D,IAAIg8L,GAAY,EAAItC,EAAaj/E,gBAAgB98H,EAAuB9gE,GAAQ3/B,EAAGC,GAKnF,IAJA,EAAIw8S,EAAKjzR,SAAS,gCAAiCs1R,IAI9B,IAFFn/Q,EAAMtjB,MAAM4gS,OAAOppT,EAAGirT,KAEO,IAAlBn/Q,EAAMhQ,QAqBpCgQ,EAAMu3B,SAAS,CACbumK,MAAOz9N,EACP29N,MAAO19N,SAtBP,IAEE0/B,EAAMs/Q,eAAe,IAAIh+M,WAAW,YACpC,MAAOxpG,GAEP,IAAIxC,EAAUX,SAAS+jD,YAAY,eAOnCpjD,EAAMisG,eAAe,WAAW,GAAM,EAAMtpG,OAAQ,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAElG+nC,EAAMs/Q,eAAehqT,QAY3Bq2E,EAAgBm1B,EAAuB9gE,GAAQ,kBAAkB,SAAU9rC,GACzE,GAAK8rC,EAAM31B,MAAM04P,SAAjB,CACA,IAAI/mQ,GAAW,EAAI6gT,EAAal+E,oBAAoBzqO,EAAG8rC,EAAM31B,MAAMu0N,gBAAiB99H,EAAuB9gE,IAC3G,GAAgB,MAAZhkC,EAAJ,CACA,IAAIqE,EAAIrE,EAASqE,EACbC,EAAItE,EAASsE,EAEjB,GAAI1D,MAAMyrB,QAAQ2X,EAAMtjB,MAAMsiN,MAAO,CACnC,IAAI97G,EAAS7iH,EAAI2/B,EAAM31B,MAAMyzN,OAAS,EAClC36G,EAAS7iH,EAAI0/B,EAAM31B,MAAM2zN,OAAS,EAIlCwhF,EAAe/zL,GAFA,EAAIoxL,EAAa99E,YAAY/+L,EAAMtjB,MAAMsiN,KAAM97G,EAAQC,GAE1B,GAEhDD,EAASs8L,EAAa,GACtBr8L,EAASq8L,EAAa,GACtBn/S,EAAI2/B,EAAM31B,MAAMyzN,MAAQ56G,EAAQ5iH,EAAI0/B,EAAM31B,MAAM2zN,MAAQ76G,EAG1D,IAAIg8L,GAAY,EAAItC,EAAaj/E,gBAAgB98H,EAAuB9gE,GAAQ3/B,EAAGC,GAInF,IAAuB,IAFF0/B,EAAMtjB,MAAM6gS,OAAOrpT,EAAGirT,KAEO,IAAlBn/Q,EAAMhQ,QAAmB,OAAO,EAEhE,IAAIouO,EAAWp+N,EAAM+9L,cAEjBqgC,GAEEp+N,EAAMtjB,MAAM0iS,uBAAsB,EAAI1gF,EAAQ1gB,wBAAwBogD,EAASptK,gBAGrF,EAAI8rN,EAAKjzR,SAAS,oCAAqCs1R,GAEvDn/Q,EAAMu3B,SAAS,CACbwrM,UAAU,EACVjlC,MAAOhiM,IACPkiM,MAAOliM,MAGLsiO,KAEF,EAAI0+C,EAAKjzR,SAAS,qCAClB,EAAI60M,EAAQ3gB,aAAaqgD,EAASptK,cAAeiuN,EAAan5J,KAAM9lH,EAAMq/Q,aAC1E,EAAI3gF,EAAQ3gB,aAAaqgD,EAASptK,cAAeiuN,EAAajkI,KAAMh7I,EAAMs/Q,sBAI9E3zO,EAAgBm1B,EAAuB9gE,GAAQ,eAAe,SAAU9rC,GAGtE,OAFA+qT,EAAeD,EAERh/Q,EAAM61E,gBAAgB3hH,MAG/By3E,EAAgBm1B,EAAuB9gE,GAAQ,aAAa,SAAU9rC,GAEpE,OADA+qT,EAAeD,EACRh/Q,EAAMs/Q,eAAeprT,MAG9By3E,EAAgBm1B,EAAuB9gE,GAAQ,gBAAgB,SAAU9rC,GAGvE,OADA+qT,EAAeD,EACRh/Q,EAAM61E,gBAAgB3hH,MAG/By3E,EAAgBm1B,EAAuB9gE,GAAQ,cAAc,SAAU9rC,GAGrE,OADA+qT,EAAeD,EACRh/Q,EAAMs/Q,eAAeprT,MAGvB8rC,EAoET,OA7WoB5W,EA4SP67F,GA5SoBn0D,EA4SL,CAAC,CAC3Bt5D,IAAK,oBACLN,MAAO,WACL8tB,KAAKgL,SAAU,EAGf,IAAIouO,EAAWp5O,KAAK+4M,cAEhBqgC,IACF,EAAI1/B,EAAQ7mH,UAAUumJ,EAAU4gD,EAAgB91R,MAAOlE,KAAK8qG,aAAc,CACxE74C,SAAS,MAId,CACDz/E,IAAK,uBACLN,MAAO,WACL8tB,KAAKgL,SAAU,EAGf,IAAIouO,EAAWp5O,KAAK+4M,cAEpB,GAAIqgC,EAAU,CACZ,IAAIptK,EAAgBotK,EAASptK,eAC7B,EAAI0tI,EAAQ3gB,aAAa/sH,EAAeguN,EAAgBl5J,KAAM9gI,KAAKq6R,aACnE,EAAI3gF,EAAQ3gB,aAAa/sH,EAAeguN,EAAgBl5J,KAAM9gI,KAAKq6R,aACnE,EAAI3gF,EAAQ3gB,aAAa/sH,EAAeguN,EAAgBhkI,KAAMh2J,KAAKs6R,iBACnE,EAAI5gF,EAAQ3gB,aAAa/sH,EAAeguN,EAAgBhkI,KAAMh2J,KAAKs6R,iBACnE,EAAI5gF,EAAQ3gB,aAAaqgD,EAAU4gD,EAAgB91R,MAAOlE,KAAK8qG,aAAc,CAC3E74C,SAAS,IAEPjyD,KAAKtI,MAAM0iS,uBAAsB,EAAI1gF,EAAQ1gB,wBAAwBhtH,MAK5E,CACDx5F,IAAK,cACLN,MAAO,WAGL,IAAIggE,EAAaoC,EAAcmmP,EAE/B,OAAsC,QAA9BvoP,EAAclyC,KAAKtI,aAAmC,IAAhBw6C,GAA0BA,EAAY4mP,QAA0C,QAA/BxkP,EAAet0C,KAAKtI,aAAoC,IAAjB48C,GAAqF,QAAjDmmP,EAAuBnmP,EAAawkP,eAA8C,IAAzB2B,OAAnE,EAA8GA,EAAqBllS,QAAUoiS,EAAU9yR,QAAQk0M,YAAY/4M,QAE5U,CACDxtB,IAAK,SACLN,MAAO,WAKL,OAAoBq4B,EAAMyvE,aAAazvE,EAAMotP,SAASC,KAAK53P,KAAKtI,MAAM7D,UAAW,CAG/Ek1E,YAAa/oE,KAAK+oE,YAClB1iE,UAAWrG,KAAKqG,UAIhB2iE,WAAYhpE,KAAKgpE,kBAxWqDn9B,EAAkBznC,EAAYh2B,UAAW09D,GAAiBC,GAAaF,EAAkBznC,EAAa2nC,GAAc59D,OAAOyD,eAAewyB,EAAa,YAAa,CAAEY,UAAU,IA6WrPi7F,EA7RwB,CA8R/B11F,EAAMy7E,WAERj3G,EAAQ81B,QAAUo7F,EAElBt5C,EAAgBs5C,EAAe,cAAe,iBAE9Ct5C,EAAgBs5C,EAAe,YAAa,CAO1Ci6L,cAAexC,EAAW7yR,QAAQY,KAMlC6B,SAAUowR,EAAW7yR,QAAQY,KAO7B20R,qBAAsB1C,EAAW7yR,QAAQY,KAMzCuqC,aAAc,SAAsBt4C,EAElCmkK,GAGA,GAAInkK,EAAMmkK,IAA0C,IAA7BnkK,EAAMmkK,GAAU1yE,SACrC,MAAM,IAAI94G,MAAM,iDAOpB2pO,KAAM09E,EAAW7yR,QAAQuwK,QAAQsiH,EAAW7yR,QAAQ9sB,QAsBpDimC,OAAQ05Q,EAAW7yR,QAAQvE,OAsB3B+4E,OAAQq+M,EAAW7yR,QAAQvE,OAmB3Bw4R,QAASpB,EAAW7yR,QAAQlyB,OAM5BirH,QAAS85L,EAAW7yR,QAAQsB,KAM5BmyR,OAAQZ,EAAW7yR,QAAQsB,KAM3BoyR,OAAQb,EAAW7yR,QAAQsB,KAM3B4iE,YAAa2uN,EAAW7yR,QAAQsB,KAKhC9f,MAAOqxS,EAAW7yR,QAAQ9sB,OAK1BkuB,UAAW+xL,EAAOp8B,UAClB14K,MAAO80M,EAAOp8B,UACd//G,UAAWm8I,EAAOp8B,YAGpBj1G,EAAgBs5C,EAAe,eAAgB,CAC7Ci6L,eAAe,EAEf5yR,UAAU,EACV8yR,sBAAsB,EACtBx8L,QAAS,aACT06L,OAAQ,aACRC,OAAQ,aACRxvN,YAAa,aACb1iF,MAAO,K,gBCvjBT,IAAIo1G,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,mqGAAoqG,KAG7rGe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,omGAAqmG,KAG9nGe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,GAAI,M,gBCL7B,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,m/CAAo/C,KAG7gDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,spBAAupB,M,gBCLhrB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,28DAA48D,M,gBCLr+D,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,GAAI,M;;;;;;;;GCGhB,EAAQ,KAAiB,IAAIuxB,EAAE,EAAQ,GAAS8rD,EAAE,MAA6B,GAAvBt8E,EAAQusH,SAAS,MAAS,mBAAoBtpH,QAAQA,OAAO6kR,IAAI,CAAC,IAAI5rM,EAAEj5E,OAAO6kR,IAAIxrM,EAAEJ,EAAE,iBAAiBl8E,EAAQusH,SAASrwC,EAAE,kBAAkB,IAAI15E,EAAEguB,EAAEs4P,mDAAmDJ,kBAAkB/kR,EAAEvE,OAAOC,UAAUC,eAAe6B,EAAE,CAACsC,KAAI,EAAGgmB,KAAI,EAAG2+P,QAAO,EAAGC,UAAS,GACrW,SAASnrO,EAAEz6C,EAAE4qB,EAAEkI,GAAG,IAAIjI,EAAE5qB,EAAE,GAAGvC,EAAE,KAAKD,EAAE,KAAiF,IAAIotB,UAAhF,IAASiI,IAAIp1B,EAAE,GAAGo1B,QAAG,IAASlI,EAAE5pB,MAAMtD,EAAE,GAAGktB,EAAE5pB,UAAK,IAAS4pB,EAAE5D,MAAMvpB,EAAEmtB,EAAE5D,KAAc4D,EAAE1pB,EAAEpE,KAAK8tB,EAAEC,KAAKnsB,EAAE7B,eAAeguB,KAAK5qB,EAAE4qB,GAAGD,EAAEC,IAAI,GAAG7qB,GAAGA,EAAEmiE,aAAa,IAAIt3C,KAAKD,EAAE5qB,EAAEmiE,kBAAe,IAASliE,EAAE4qB,KAAK5qB,EAAE4qB,GAAGD,EAAEC,IAAI,MAAM,CAACo5C,SAAS4V,EAAEz6E,KAAKY,EAAEgB,IAAItD,EAAEspB,IAAIvpB,EAAEyoB,MAAMjmB,EAAE4lR,OAAO9lR,EAAEgkB,SAASxmB,EAAQ2rT,IAAIzuQ,EAAEl9C,EAAQ4rT,KAAK1uQ,G,6BCRvV,IAkBM+G,EAlBF1xB,EAAI,EAAQ,IACZC,EAAc,EAAQ,IACtBuU,EAA2B,EAAQ,KAAmDvW,EACtFmjE,EAAW,EAAQ,KACnBzjE,EAAW,EAAQ,KACnB8oC,EAAa,EAAQ,KACrBC,EAAyB,EAAQ,KACjCC,EAAuB,EAAQ,KAC/BxoC,EAAU,EAAQ,KAGlBm7R,EAAcr5R,EAAY,GAAG20K,UAC7B/iM,EAAQouB,EAAY,GAAGpuB,OACvB46D,EAAM/pC,KAAK+pC,IAEX+3F,EAA0B79F,EAAqB,YASnD3mC,EAAE,CAAExwB,OAAQ,SAAUmzB,OAAO,EAAMrB,UAPXnD,GAAYqmI,IAC9B9yG,EAAald,EAAyBzV,OAAOjyB,UAAW,aACrD4kD,GAAeA,EAAWhuB,aAK8B8gI,GAA2B,CAC1FowC,SAAU,SAAkB/tI,GAC1B,IAAI8hC,EAAOhrE,EAAS+oC,EAAuBhoC,OAC3C+nC,EAAWI,GACX,IAAI0yP,EAAc1gS,UAAUjsB,OAAS,EAAIisB,UAAU,QAAKjpB,EACpDokC,EAAM20D,EAAK/7F,OACXi2B,OAAsBjzB,IAAhB2pT,EAA4BvlR,EAAMy4B,EAAI20B,EAASm4N,GAAcvlR,GACnEywH,EAAS9mI,EAASkpC,GACtB,OAAOyyP,EACHA,EAAY3wN,EAAM87D,EAAQ5hI,GAC1BhxB,EAAM82F,EAAM9lE,EAAM4hI,EAAO73J,OAAQi2B,KAAS4hI,M,gBCdlD/2J,EAAOD,QAAUqtN,EAEjB,IAAI0+F,EAAK,EAAQ,KAAUjgR,aAkB3B,SAASuhL,IACP0+F,EAAGxsT,KAAK0xB,MAlBK,EAAQ,IAEvBgvH,CAASotE,EAAQ0+F,GACjB1+F,EAAOntE,SAAW,EAAQ,KAC1BmtE,EAAOltE,SAAW,EAAQ,MAC1BktE,EAAOttE,OAAS,EAAQ,MACxBstE,EAAOC,UAAY,EAAQ,MAC3BD,EAAOE,YAAc,EAAQ,MAG7BF,EAAOA,OAASA,EAWhBA,EAAOhuN,UAAUiyN,KAAO,SAAS6d,EAAMthO,GACrC,IAAIm1B,EAAS/R,KAEb,SAAS8+M,EAAOpuO,GACVwtO,EAAKl5M,WACH,IAAUk5M,EAAKhuI,MAAMx/F,IAAUqhC,EAAOmtM,OACxCntM,EAAOmtM,QAOb,SAASL,IACH9sM,EAAOo9G,UAAYp9G,EAAOotM,QAC5BptM,EAAOotM,SAJXptM,EAAOgc,GAAG,OAAQ+wL,GAQlBZ,EAAKnwL,GAAG,QAAS8wL,GAIZX,EAAK68E,UAAcn+S,IAA2B,IAAhBA,EAAQunB,MACzC4N,EAAOgc,GAAG,MAAOshG,GACjBt9G,EAAOgc,GAAG,QAAS4wL,IAGrB,IAAIq8E,GAAW,EACf,SAAS3rK,IACH2rK,IACJA,GAAW,EAEX98E,EAAK/5M,OAIP,SAASw6M,IACHq8E,IACJA,GAAW,EAEiB,mBAAjB98E,EAAK1e,SAAwB0e,EAAK1e,WAI/C,SAASjvN,EAAQyrN,GAEf,GADAi/F,IACwC,IAApCH,EAAGn/F,cAAc37L,KAAM,SACzB,MAAMg8L,EAQV,SAASi/F,IACPlpR,EAAOshH,eAAe,OAAQyrF,GAC9BZ,EAAK7qF,eAAe,QAASwrF,GAE7B9sM,EAAOshH,eAAe,MAAOhE,GAC7Bt9G,EAAOshH,eAAe,QAASsrF,GAE/B5sM,EAAOshH,eAAe,QAAS9iJ,GAC/B2tO,EAAK7qF,eAAe,QAAS9iJ,GAE7BwhC,EAAOshH,eAAe,MAAO4nK,GAC7BlpR,EAAOshH,eAAe,QAAS4nK,GAE/B/8E,EAAK7qF,eAAe,QAAS4nK,GAW/B,OA5BAlpR,EAAOgc,GAAG,QAASx9C,GACnB2tO,EAAKnwL,GAAG,QAASx9C,GAmBjBwhC,EAAOgc,GAAG,MAAOktQ,GACjBlpR,EAAOgc,GAAG,QAASktQ,GAEnB/8E,EAAKnwL,GAAG,QAASktQ,GAEjB/8E,EAAK9gM,KAAK,OAAQrL,GAGXmsM,I,6BC3HTnvO,EAAQ83J,WAuCR,SAAqBq0J,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClDvsT,EAAQogK,YAiDR,SAAsB+rJ,GACpB,IAAInhO,EAcA/rF,EAbAmtT,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvB5hT,EAAM,IAAIgiT,EAVhB,SAAsBL,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BE,CAAYN,EAAKG,EAAUC,IAEzCG,EAAU,EAGVnmR,EAAMgmR,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKrtT,EAAI,EAAGA,EAAIsnC,EAAKtnC,GAAK,EACxB+rF,EACG2hO,EAAUR,EAAI/kR,WAAWnoC,KAAO,GAChC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,KAAO,GACpC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,KAAO,EACrC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,IAC/BuL,EAAIkiT,KAAc1hO,GAAO,GAAM,IAC/BxgF,EAAIkiT,KAAc1hO,GAAO,EAAK,IAC9BxgF,EAAIkiT,KAAmB,IAAN1hO,EAGK,IAApBuhO,IACFvhO,EACG2hO,EAAUR,EAAI/kR,WAAWnoC,KAAO,EAChC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,KAAO,EACvCuL,EAAIkiT,KAAmB,IAAN1hO,GAGK,IAApBuhO,IACFvhO,EACG2hO,EAAUR,EAAI/kR,WAAWnoC,KAAO,GAChC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,KAAO,EACpC0tT,EAAUR,EAAI/kR,WAAWnoC,EAAI,KAAO,EACvCuL,EAAIkiT,KAAc1hO,GAAO,EAAK,IAC9BxgF,EAAIkiT,KAAmB,IAAN1hO,GAGnB,OAAOxgF,GA3FTxK,EAAQ46J,cAkHR,SAAwBgyJ,GAQtB,IAPA,IAAI5hO,EACAzkD,EAAMqmR,EAAMztT,OACZ0tT,EAAatmR,EAAM,EACnBuJ,EAAQ,GAIH7wC,EAAI,EAAG6tT,EAAOvmR,EAAMsmR,EAAY5tT,EAAI6tT,EAAM7tT,GAH9B,MAInB6wC,EAAMrwC,KAAKstT,EAAYH,EAAO3tT,EAAIA,EAJf,MAIqC6tT,EAAOA,EAAQ7tT,EAJpD,QAQF,IAAf4tT,GACF7hO,EAAM4hO,EAAMrmR,EAAM,GAClBuJ,EAAMrwC,KACJutT,EAAOhiO,GAAO,GACdgiO,EAAQhiO,GAAO,EAAK,IACpB,OAEsB,IAAf6hO,IACT7hO,GAAO4hO,EAAMrmR,EAAM,IAAM,GAAKqmR,EAAMrmR,EAAM,GAC1CuJ,EAAMrwC,KACJutT,EAAOhiO,GAAO,IACdgiO,EAAQhiO,GAAO,EAAK,IACpBgiO,EAAQhiO,GAAO,EAAK,IACpB,MAIJ,OAAOl7C,EAAMja,KAAK,KAzIpB,IALA,IAAIm3R,EAAS,GACTL,EAAY,GACZH,EAA4B,oBAAfl3O,WAA6BA,WAAazsE,MAEvDg/B,EAAO,mEACF5oC,EAAI,EAAGsnC,EAAMsB,EAAK1oC,OAAQF,EAAIsnC,IAAOtnC,EAC5C+tT,EAAO/tT,GAAK4oC,EAAK5oC,GACjB0tT,EAAU9kR,EAAKT,WAAWnoC,IAAMA,EAQlC,SAASotT,EAASF,GAChB,IAAI5lR,EAAM4lR,EAAIhtT,OAEd,GAAIonC,EAAM,EAAI,EACZ,MAAM,IAAIjlC,MAAM,kDAKlB,IAAIgrT,EAAWH,EAAI7yR,QAAQ,KAO3B,OANkB,IAAdgzR,IAAiBA,EAAW/lR,GAMzB,CAAC+lR,EAJcA,IAAa/lR,EAC/B,EACA,EAAK+lR,EAAW,GAsEtB,SAASS,EAAaH,EAAOz3R,EAAOC,GAGlC,IAFA,IAAI41D,EARoBkiG,EASpBziJ,EAAS,GACJxrC,EAAIk2B,EAAOl2B,EAAIm2B,EAAKn2B,GAAK,EAChC+rF,GACI4hO,EAAM3tT,IAAM,GAAM,WAClB2tT,EAAM3tT,EAAI,IAAM,EAAK,QACP,IAAf2tT,EAAM3tT,EAAI,IACbwrC,EAAOhrC,KAdFutT,GADiB9/H,EAeMliG,IAdT,GAAK,IACxBgiO,EAAO9/H,GAAO,GAAK,IACnB8/H,EAAO9/H,GAAO,EAAI,IAClB8/H,EAAa,GAAN9/H,IAaT,OAAOziJ,EAAO5U,KAAK,IAjGrB82R,EAAU,IAAIvlR,WAAW,IAAM,GAC/BulR,EAAU,IAAIvlR,WAAW,IAAM,I,cCnB/BpnC,EAAQw9C,KAAO,SAAUuvF,EAAQ/nE,EAAQioP,EAAMC,EAAMC,GACnD,IAAIhtT,EAAGqC,EACH4qT,EAAiB,EAATD,EAAcD,EAAO,EAC7BvP,GAAQ,GAAKyP,GAAQ,EACrBxP,EAAQD,GAAQ,EAChBG,GAAS,EACT7+S,EAAIguT,EAAQE,EAAS,EAAK,EAC1BzqT,EAAIuqT,GAAQ,EAAI,EAChB5oT,EAAI0oI,EAAO/nE,EAAS/lE,GAOxB,IALAA,GAAKyD,EAELvC,EAAIkE,GAAM,IAAOy5S,GAAU,EAC3Bz5S,KAAQy5S,EACRA,GAASsP,EACFtP,EAAQ,EAAG39S,EAAS,IAAJA,EAAW4sI,EAAO/nE,EAAS/lE,GAAIA,GAAKyD,EAAGo7S,GAAS,GAKvE,IAHAt7S,EAAIrC,GAAM,IAAO29S,GAAU,EAC3B39S,KAAQ29S,EACRA,GAASoP,EACFpP,EAAQ,EAAGt7S,EAAS,IAAJA,EAAWuqI,EAAO/nE,EAAS/lE,GAAIA,GAAKyD,EAAGo7S,GAAS,GAEvE,GAAU,IAAN39S,EACFA,EAAI,EAAIy9S,MACH,IAAIz9S,IAAMw9S,EACf,OAAOn7S,EAAIulC,IAAsBm4H,KAAd77J,GAAK,EAAI,GAE5B7B,GAAQyyB,KAAKg+H,IAAI,EAAGi6J,GACpB/sT,GAAQy9S,EAEV,OAAQv5S,GAAK,EAAI,GAAK7B,EAAIyyB,KAAKg+H,IAAI,EAAG9yJ,EAAI+sT,IAG5CltT,EAAQmhG,MAAQ,SAAU4rC,EAAQ5pI,EAAO6hE,EAAQioP,EAAMC,EAAMC,GAC3D,IAAIhtT,EAAGqC,EAAGC,EACN2qT,EAAiB,EAATD,EAAcD,EAAO,EAC7BvP,GAAQ,GAAKyP,GAAQ,EACrBxP,EAAQD,GAAQ,EAChBE,EAAe,KAATqP,EAAcj4R,KAAKg+H,IAAI,GAAI,IAAMh+H,KAAKg+H,IAAI,GAAI,IAAM,EAC1Dh0J,EAAIguT,EAAO,EAAKE,EAAS,EACzBzqT,EAAIuqT,EAAO,GAAK,EAChB5oT,EAAIlB,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ8xB,KAAKmkB,IAAIj2C,GAEbijJ,MAAMjjJ,IAAUA,IAAU+8J,KAC5B19J,EAAI4jJ,MAAMjjJ,GAAS,EAAI,EACvBhD,EAAIw9S,IAEJx9S,EAAI80B,KAAKwnD,MAAMxnD,KAAKsV,IAAIpnC,GAAS8xB,KAAKghQ,KAClC9yR,GAASV,EAAIwyB,KAAKg+H,IAAI,GAAI9yJ,IAAM,IAClCA,IACAsC,GAAK,IAGLU,GADEhD,EAAIy9S,GAAS,EACNC,EAAKp7S,EAELo7S,EAAK5oR,KAAKg+H,IAAI,EAAG,EAAI2qJ,IAEpBn7S,GAAK,IACftC,IACAsC,GAAK,GAGHtC,EAAIy9S,GAASD,GACfn7S,EAAI,EACJrC,EAAIw9S,GACKx9S,EAAIy9S,GAAS,GACtBp7S,GAAMW,EAAQV,EAAK,GAAKwyB,KAAKg+H,IAAI,EAAGi6J,GACpC/sT,GAAQy9S,IAERp7S,EAAIW,EAAQ8xB,KAAKg+H,IAAI,EAAG2qJ,EAAQ,GAAK3oR,KAAKg+H,IAAI,EAAGi6J,GACjD/sT,EAAI,IAID+sT,GAAQ,EAAGngL,EAAO/nE,EAAS/lE,GAAS,IAAJuD,EAAUvD,GAAKyD,EAAGF,GAAK,IAAK0qT,GAAQ,GAI3E,IAFA/sT,EAAKA,GAAK+sT,EAAQ1qT,EAClB4qT,GAAQF,EACDE,EAAO,EAAGrgL,EAAO/nE,EAAS/lE,GAAS,IAAJkB,EAAUlB,GAAKyD,EAAGvC,GAAK,IAAKitT,GAAQ,GAE1ErgL,EAAO/nE,EAAS/lE,EAAIyD,IAAU,IAAJ2B,I,6CC9E5B,IAAIizJ,EAAS,EAAQ,KAAeA,OAChCtX,EAAO,EAAQ,MAMnB//I,EAAOD,QAAU,WACf,SAASqsO,KAVX,SAAyB3vK,EAAUrnC,GAAe,KAAMqnC,aAAoBrnC,GAAgB,MAAM,IAAI2Q,UAAU,qCAW5G0xC,CAAgBzmD,KAAMo7M,GAEtBp7M,KAAK5uB,KAAO,KACZ4uB,KAAK09M,KAAO,KACZ19M,KAAK9xB,OAAS,EAqDhB,OAlDAktO,EAAWhtO,UAAUI,KAAO,SAAc28C,GACxC,IAAImhD,EAAQ,CAAE3+F,KAAMw9C,EAAG54B,KAAM,MACzByN,KAAK9xB,OAAS,EAAG8xB,KAAK09M,KAAKnrN,KAAO+5E,EAAWtsE,KAAK5uB,KAAOk7F,EAC7DtsE,KAAK09M,KAAOpxI,IACVtsE,KAAK9xB,QAGTktO,EAAWhtO,UAAUikH,QAAU,SAAiBlnE,GAC9C,IAAImhD,EAAQ,CAAE3+F,KAAMw9C,EAAG54B,KAAMyN,KAAK5uB,MACd,IAAhB4uB,KAAK9xB,SAAc8xB,KAAK09M,KAAOpxI,GACnCtsE,KAAK5uB,KAAOk7F,IACVtsE,KAAK9xB,QAGTktO,EAAWhtO,UAAUO,MAAQ,WAC3B,GAAoB,IAAhBqxB,KAAK9xB,OAAT,CACA,IAAIg/C,EAAMltB,KAAK5uB,KAAKzD,KAGpB,OAFoB,IAAhBqyB,KAAK9xB,OAAc8xB,KAAK5uB,KAAO4uB,KAAK09M,KAAO,KAAU19M,KAAK5uB,KAAO4uB,KAAK5uB,KAAKmhB,OAC7EyN,KAAK9xB,OACAg/C,IAGTkuL,EAAWhtO,UAAUgkB,MAAQ,WAC3B4N,KAAK5uB,KAAO4uB,KAAK09M,KAAO,KACxB19M,KAAK9xB,OAAS,GAGhBktO,EAAWhtO,UAAUw2B,KAAO,SAAcxxB,GACxC,GAAoB,IAAhB4sB,KAAK9xB,OAAc,MAAO,GAG9B,IAFA,IAAIgC,EAAI8vB,KAAK5uB,KACT87C,EAAM,GAAKh9C,EAAEvC,KACVuC,EAAIA,EAAEqiB,MACX26B,GAAO95C,EAAIlD,EAAEvC,KACd,OAAOu/C,GAGVkuL,EAAWhtO,UAAU0gC,OAAS,SAAgBp8B,GAC5C,GAAoB,IAAhBstB,KAAK9xB,OAAc,OAAOm4J,EAAOiE,MAAM,GAC3C,GAAoB,IAAhBtqI,KAAK9xB,OAAc,OAAO8xB,KAAK5uB,KAAKzD,KAIxC,IAHA,IApDgBsC,EAAKa,EAAQijE,EAoDzB7mB,EAAMm5G,EAAOK,YAAYh0J,IAAM,GAC/BxC,EAAI8vB,KAAK5uB,KACTpD,EAAI,EACDkC,GAvDSD,EAwDHC,EAAEvC,KAxDMmD,EAwDAo8C,EAxDQ6mB,EAwDH/lE,EAvD5BiC,EAAIkwC,KAAKrvC,EAAQijE,GAwDb/lE,GAAKkC,EAAEvC,KAAKO,OACZgC,EAAIA,EAAEqiB,KAER,OAAO26B,GAGFkuL,EA3DQ,GA8DbrsF,GAAQA,EAAKsc,SAAWtc,EAAKsc,QAAQ/5B,SACvCtiI,EAAOD,QAAQX,UAAU2gJ,EAAKsc,QAAQ/5B,QAAU,WAC9C,IAAIvsG,EAAMgqH,EAAKsc,QAAQ,CAAEn9J,OAAQ8xB,KAAK9xB,SACtC,OAAO8xB,KAAKiC,YAAYjxB,KAAO,IAAM+zB,K,iCC5EzC,iCAC6B,oBAATqN,MAAwBA,MAChCn/B,OACR8hB,EAAQiO,SAAS50B,UAAU2mB,MAiB/B,SAASqnS,EAAQtzR,EAAIuzR,GACnBr8R,KAAKs8R,IAAMxzR,EACX9I,KAAKu8R,SAAWF,EAflBttT,EAAQoC,WAAa,WACnB,OAAO,IAAIirT,EAAQrnS,EAAMzmB,KAAK6C,WAAYisD,EAAOjjC,WAAY1pB,eAE/D1B,EAAQqjO,YAAc,WACpB,OAAO,IAAIgqF,EAAQrnS,EAAMzmB,KAAK8jO,YAAah1K,EAAOjjC,WAAYqiS,gBAEhEztT,EAAQ0B,aACR1B,EAAQytT,cAAgB,SAAS1sT,GAC3BA,GACFA,EAAQixG,SAQZq7M,EAAQhuT,UAAUquT,MAAQL,EAAQhuT,UAAUoqB,IAAM,aAClD4jS,EAAQhuT,UAAU2yG,MAAQ,WACxB/gF,KAAKu8R,SAASjuT,KAAK8uD,EAAOp9B,KAAKs8R,MAIjCvtT,EAAQ2tT,OAAS,SAAS/tR,EAAMguR,GAC9BlsT,aAAak+B,EAAKiuR,gBAClBjuR,EAAKkuR,aAAeF,GAGtB5tT,EAAQ+tT,SAAW,SAASnuR,GAC1Bl+B,aAAak+B,EAAKiuR,gBAClBjuR,EAAKkuR,cAAgB,GAGvB9tT,EAAQguT,aAAehuT,EAAQ+6B,OAAS,SAAS6E,GAC/Cl+B,aAAak+B,EAAKiuR,gBAElB,IAAID,EAAQhuR,EAAKkuR,aACbF,GAAS,IACXhuR,EAAKiuR,eAAiBzrT,YAAW,WAC3Bw9B,EAAKquR,YACPruR,EAAKquR,eACNL,KAKP,EAAQ,MAIR5tT,EAAQguN,aAAgC,oBAAT3qL,MAAwBA,KAAK2qL,mBAClB,IAAXv8L,GAA0BA,EAAOu8L,cACxC/8L,MAAQA,KAAK+8L,aACrChuN,EAAQ+/N,eAAkC,oBAAT18L,MAAwBA,KAAK08L,qBAClB,IAAXtuM,GAA0BA,EAAOsuM,gBACxC9uM,MAAQA,KAAK8uM,iB,oCC9DvC,6BACI,aAEA,IAAItuM,EAAOu8L,aAAX,CAIA,IAIIkgG,EA6HIz8M,EAZAmuH,EArBAuuF,EACAC,EAjGJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxBlmT,EAAMopB,EAAO7wB,SAoJb4tT,EAAWpvT,OAAOokD,gBAAkBpkD,OAAOokD,eAAe/xB,GAC9D+8R,EAAWA,GAAYA,EAASpsT,WAAaosT,EAAW/8R,EAGf,qBAArC,GAAGvB,SAAS3wB,KAAKkyB,EAAO2d,SApFxB8+Q,EAAoB,SAASj/Q,GACzBG,EAAQqxG,UAAS,WAAcguK,EAAax/Q,QAIpD,WAGI,GAAIxd,EAAO4uM,cAAgB5uM,EAAOivM,cAAe,CAC7C,IAAIguF,GAA4B,EAC5BC,EAAel9R,EAAOgvM,UAM1B,OALAhvM,EAAOgvM,UAAY,WACfiuF,GAA4B,GAEhCj9R,EAAO4uM,YAAY,GAAI,KACvB5uM,EAAOgvM,UAAYkuF,EACZD,GAwEJE,GAIAn9R,EAAOwuM,iBA9CVL,EAAU,IAAIK,gBACVO,MAAMC,UAAY,SAASl/N,GAE/BktT,EADaltT,EAAM3C,OAIvBsvT,EAAoB,SAASj/Q,GACzB2wL,EAAQW,MAAMF,YAAYpxL,KA2CvB5mC,GAAO,uBAAwBA,EAAIxH,cAAc,WAtCpD4wG,EAAOppG,EAAIm6C,gBACf0rQ,EAAoB,SAASj/Q,GAGzB,IAAItuC,EAAS0H,EAAIxH,cAAc,UAC/BF,EAAOo3Q,mBAAqB,WACxB02C,EAAax/Q,GACbtuC,EAAOo3Q,mBAAqB,KAC5BtmK,EAAKl3E,YAAY55B,GACjBA,EAAS,MAEb8wG,EAAKnvG,YAAY3B,KAKrButT,EAAoB,SAASj/Q,GACzB7sC,WAAWqsT,EAAc,EAAGx/Q,KAlD5Bk/Q,EAAgB,gBAAkBl5R,KAAK85E,SAAW,IAClDq/M,EAAkB,SAAS7sT,GACvBA,EAAMyhC,SAAWvR,GACK,iBAAflwB,EAAM3C,MACyB,IAAtC2C,EAAM3C,KAAK06B,QAAQ60R,IACnBM,GAAcltT,EAAM3C,KAAKwF,MAAM+pT,EAAchvT,UAIjDsyB,EAAOjd,iBACPid,EAAOjd,iBAAiB,UAAW45S,GAAiB,GAEpD38R,EAAOuyF,YAAY,YAAaoqM,GAGpCF,EAAoB,SAASj/Q,GACzBxd,EAAO4uM,YAAY8tF,EAAgBl/Q,EAAQ,OAgEnDu/Q,EAASxgG,aA1KT,SAAsB98M,GAEI,mBAAbA,IACTA,EAAW,IAAI+iB,SAAS,GAAK/iB,IAI/B,IADA,IAAIs5B,EAAO,IAAI3hC,MAAMuiB,UAAUjsB,OAAS,GAC/BF,EAAI,EAAGA,EAAIurC,EAAKrrC,OAAQF,IAC7BurC,EAAKvrC,GAAKmsB,UAAUnsB,EAAI,GAG5B,IAAIs0O,EAAO,CAAEriO,SAAUA,EAAUs5B,KAAMA,GAGvC,OAFA8jR,EAAcD,GAAc96E,EAC5B26E,EAAkBG,GACXA,KA6JTG,EAASzuF,eAAiBA,EA1J1B,SAASA,EAAe9wL,UACbq/Q,EAAcr/Q,GAyBzB,SAASw/Q,EAAax/Q,GAGlB,GAAIs/Q,EAGAnsT,WAAWqsT,EAAc,EAAGx/Q,OACzB,CACH,IAAIskM,EAAO+6E,EAAcr/Q,GACzB,GAAIskM,EAAM,CACNg7E,GAAwB,EACxB,KAjCZ,SAAah7E,GACT,IAAIriO,EAAWqiO,EAAKriO,SAChBs5B,EAAO+oM,EAAK/oM,KAChB,OAAQA,EAAKrrC,QACb,KAAK,EACD+R,IACA,MACJ,KAAK,EACDA,EAASs5B,EAAK,IACd,MACJ,KAAK,EACDt5B,EAASs5B,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACDt5B,EAASs5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACIt5B,EAAS8U,WAnDrB,EAmDsCwkB,IAiBlBm9G,CAAI4rF,GACN,QACExT,EAAe9wL,GACfs/Q,GAAwB,MAvE5C,CAyLkB,oBAATlrR,UAAyC,IAAX5R,EAAyBR,KAAOQ,EAAS4R,Q,uDCjIhF,SAAS45E,EAAQh7G,GAEf,IACE,IAAKwvB,EAAO+wD,aAAc,OAAO,EACjC,MAAOvF,GACP,OAAO,EAET,IAAIr0C,EAAMnX,EAAO+wD,aAAavgF,GAC9B,OAAI,MAAQ2mC,GACyB,SAA9BtX,OAAOsX,GAAK0H,cA5DrBrwC,EAAOD,QAoBP,SAAoBuyD,EAAIs8P,GACtB,GAAI5xM,EAAO,iBACT,OAAO1qD,EAGT,IAAI05J,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAIhvG,EAAO,oBACT,MAAM,IAAI37G,MAAMutT,GACP5xM,EAAO,oBAChBj5G,QAAQ8qT,MAAMD,GAEd7qT,QAAQ0mC,KAAKmkR,GAEf5iG,GAAS,EAEX,OAAO15J,EAAGvsC,MAAMiL,KAAM7F,e,mCCzC1B,IAAI2hH,EAAS,EAAQ,KACjBuqB,EAASvqB,EAAOuqB,OAGpB,SAASk2D,EAAWtsN,EAAKq/J,GACvB,IAAK,IAAI98J,KAAOvC,EACdq/J,EAAI98J,GAAOvC,EAAIuC,GAWnB,SAASgqN,EAAYvgM,EAAKwqI,EAAkBv4J,GAC1C,OAAOm4J,EAAOpqI,EAAKwqI,EAAkBv4J,GATnCm4J,EAAOxuJ,MAAQwuJ,EAAOiE,OAASjE,EAAOK,aAAeL,EAAO0E,gBAC9D/7J,EAAOD,QAAU+sI,GAGjBygF,EAAUzgF,EAAQ/sI,GAClBA,EAAQs3J,OAASm2D,GAQnBD,EAAUl2D,EAAQm2D,GAElBA,EAAW3kN,KAAO,SAAUokB,EAAKwqI,EAAkBv4J,GACjD,GAAmB,iBAAR+tB,EACT,MAAM,IAAI8Y,UAAU,iCAEtB,OAAOsxH,EAAOpqI,EAAKwqI,EAAkBv4J,IAGvCsuN,EAAWlyD,MAAQ,SAAU3zF,EAAMm0F,EAAM9D,GACvC,GAAoB,iBAATrwF,EACT,MAAM,IAAI5hC,UAAU,6BAEtB,IAAIyzH,EAAMnC,EAAO1vF,GAUjB,YATazlE,IAAT45J,EACsB,iBAAb9D,EACTwB,EAAIsC,KAAKA,EAAM9D,GAEfwB,EAAIsC,KAAKA,GAGXtC,EAAIsC,KAAK,GAEJtC,GAGTg0D,EAAW91D,YAAc,SAAU/vF,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAI5hC,UAAU,6BAEtB,OAAOsxH,EAAO1vF,IAGhB6lJ,EAAWzxD,gBAAkB,SAAUp0F,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAI5hC,UAAU,6BAEtB,OAAO+mG,EAAOuuB,WAAW1zF,K,6BCjC3B3nE,EAAOD,QAAUutN,EAEjB,IAAID,EAAY,EAAQ,KAGpBttE,EAAO5gJ,OAAOoE,OAAO,EAAQ,MAMjC,SAAS+pN,EAAY1/M,GACnB,KAAMojB,gBAAgBs8L,GAAc,OAAO,IAAIA,EAAY1/M,GAE3Dy/M,EAAU/tN,KAAK0xB,KAAMpjB,GARvBmyI,EAAKC,SAAW,EAAQ,KAGxBD,EAAKC,SAASstE,EAAaD,GAQ3BC,EAAYluN,UAAUkzO,WAAa,SAAU5wO,EAAOs2J,EAAU1nC,GAC5DA,EAAG,KAAM5uH,K,gBC7CX1B,EAAOD,QAAU,EAAQ,M,gBCAzBC,EAAOD,QAAU,EAAQ,M,gBCAzBC,EAAOD,QAAU,EAAQ,KAAcstN,W,gBCAvCrtN,EAAOD,QAAU,EAAQ,KAAcutN,a,iBCAvC,YAqBA,IAAIlxJ,EAA4Bj9D,OAAOi9D,2BACrC,SAAmCrmC,GAGjC,IAFA,IAAI9L,EAAO9qB,OAAO8qB,KAAK8L,GACnB+4R,EAAc,GACT9vT,EAAI,EAAGA,EAAIirB,EAAK/qB,OAAQF,IAC/B8vT,EAAY7kS,EAAKjrB,IAAMG,OAAO2nC,yBAAyB/Q,EAAK9L,EAAKjrB,IAEnE,OAAO8vT,GAGPC,EAAe,WACnBhvT,EAAQ05C,OAAS,SAASlpB,GACxB,IAAKo6H,EAASp6H,GAAI,CAEhB,IADA,IAAI4kE,EAAU,GACLn2F,EAAI,EAAGA,EAAImsB,UAAUjsB,OAAQF,IACpCm2F,EAAQ31F,KAAK68J,EAAQlxI,UAAUnsB,KAEjC,OAAOm2F,EAAQv/D,KAAK,KAGlB52B,EAAI,EAmBR,IAnBA,IACIurC,EAAOpf,UACPmb,EAAMiE,EAAKrrC,OACXsuC,EAAMnc,OAAOd,GAAGgD,QAAQw7R,GAAc,SAAS1iT,GACjD,GAAU,OAANA,EAAY,MAAO,IACvB,GAAIrN,GAAKsnC,EAAK,OAAOj6B,EACrB,OAAQA,GACN,IAAK,KAAM,OAAOglB,OAAOkZ,EAAKvrC,MAC9B,IAAK,KAAM,OAAOq4C,OAAO9M,EAAKvrC,MAC9B,IAAK,KACH,IACE,OAAO0iC,KAAKC,UAAU4I,EAAKvrC,MAC3B,MAAOg+E,GACP,MAAO,aAEX,QACE,OAAO3wE,MAGJA,EAAIk+B,EAAKvrC,GAAIA,EAAIsnC,EAAKj6B,EAAIk+B,IAAOvrC,GACpCkjK,EAAO71J,KAAOkoB,EAASloB,GACzBmhC,GAAO,IAAMnhC,EAEbmhC,GAAO,IAAM6uH,EAAQhwJ,GAGzB,OAAOmhC,GAOTztC,EAAQm2C,UAAY,SAASoc,EAAIs8P,GAC/B,QAAuB,IAAZz/Q,IAAqD,IAA1BA,EAAQ6/Q,cAC5C,OAAO18P,EAIT,QAAuB,IAAZnjB,EACT,OAAO,WACL,OAAOpvC,EAAQm2C,UAAUoc,EAAIs8P,GAAK7oS,MAAMiL,KAAM7F,YAIlD,IAAI6gM,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAI78K,EAAQ8/Q,iBACV,MAAM,IAAI5tT,MAAMutT,GACPz/Q,EAAQ+/Q,iBACjBnrT,QAAQ8qT,MAAMD,GAEd7qT,QAAQ3C,MAAMwtT,GAEhB5iG,GAAS,EAEX,OAAO15J,EAAGvsC,MAAMiL,KAAM7F,aAO1B,IACIgkS,EADAC,EAAS,GA6Bb,SAAS/yJ,EAAQtmI,EAAKoqB,GAEpB,IAAI0kD,EAAM,CACRwqN,KAAM,GACNC,QAASC,GAkBX,OAfIpkS,UAAUjsB,QAAU,IAAG2lG,EAAIw9C,MAAQl3H,UAAU,IAC7CA,UAAUjsB,QAAU,IAAG2lG,EAAItiC,OAASp3C,UAAU,IAC9C82I,EAAU9hH,GAEZ0kD,EAAI2qN,WAAarvQ,EACRA,GAETpgD,EAAQ0vT,QAAQ5qN,EAAK1kD,GAGnBkiH,EAAYx9D,EAAI2qN,cAAa3qN,EAAI2qN,YAAa,GAC9CntJ,EAAYx9D,EAAIw9C,SAAQx9C,EAAIw9C,MAAQ,GACpCggB,EAAYx9D,EAAItiC,UAASsiC,EAAItiC,QAAS,GACtC8/F,EAAYx9D,EAAI6qN,iBAAgB7qN,EAAI6qN,eAAgB,GACpD7qN,EAAItiC,SAAQsiC,EAAIyqN,QAAUK,GACvBC,EAAY/qN,EAAK9uE,EAAK8uE,EAAIw9C,OAoCnC,SAASstK,EAAiBniR,EAAKqiR,GAC7B,IAAI37S,EAAQmoJ,EAAQhiG,OAAOw1P,GAE3B,OAAI37S,EACK,KAAYmoJ,EAAQ95F,OAAOruD,GAAO,GAAK,IAAMs5B,EAC7C,KAAY6uH,EAAQ95F,OAAOruD,GAAO,GAAK,IAEvCs5B,EAKX,SAAS+hR,EAAe/hR,EAAKqiR,GAC3B,OAAOriR,EAeT,SAASoiR,EAAY/qN,EAAK3hG,EAAO4sT,GAG/B,GAAIjrN,EAAI6qN,eACJxsT,GACAu/J,EAAWv/J,EAAMm5J,UAEjBn5J,EAAMm5J,UAAYt8J,EAAQs8J,WAExBn5J,EAAM+vB,aAAe/vB,EAAM+vB,YAAY7zB,YAAc8D,GAAQ,CACjE,IAAIg7C,EAAMh7C,EAAMm5J,QAAQyzJ,EAAcjrN,GAItC,OAHK8lD,EAASzsG,KACZA,EAAM0xQ,EAAY/qN,EAAK3mD,EAAK4xQ,IAEvB5xQ,EAIT,IAAI6xQ,EA+FN,SAAyBlrN,EAAK3hG,GAC5B,GAAIm/J,EAAYn/J,GACd,OAAO2hG,EAAIyqN,QAAQ,YAAa,aAClC,GAAI3kK,EAASznJ,GAAQ,CACnB,IAAIs+E,EAAS,IAAO9/C,KAAKC,UAAUz+B,GAAOqwB,QAAQ,SAAU,IAClBA,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAAO,IACjE,OAAOsxE,EAAIyqN,QAAQ9tO,EAAQ,UAE7B,GAAI4gF,EAASl/J,GACX,OAAO2hG,EAAIyqN,QAAQ,GAAKpsT,EAAO,UACjC,GAAI++J,EAAU/+J,GACZ,OAAO2hG,EAAIyqN,QAAQ,GAAKpsT,EAAO,WAEjC,GAAIg/J,EAAOh/J,GACT,OAAO2hG,EAAIyqN,QAAQ,OAAQ,QA9GbU,CAAgBnrN,EAAK3hG,GACrC,GAAI6sT,EACF,OAAOA,EAIT,IAAI9lS,EAAO9qB,OAAO8qB,KAAK/mB,GACnB+sT,EApCN,SAAqBhqR,GACnB,IAAI8gM,EAAO,GAMX,OAJA9gM,EAAM58B,SAAQ,SAASs/B,EAAKsQ,GAC1B8tL,EAAKp+L,IAAO,KAGPo+L,EA6BWmpF,CAAYjmS,GAQ9B,GANI46E,EAAI2qN,aACNvlS,EAAO9qB,OAAO0nC,oBAAoB3jC,IAKhCs/J,EAAQt/J,KACJ+mB,EAAKoP,QAAQ,YAAc,GAAKpP,EAAKoP,QAAQ,gBAAkB,GACrE,OAAO82R,EAAYjtT,GAIrB,GAAoB,IAAhB+mB,EAAK/qB,OAAc,CACrB,GAAIujK,EAAWv/J,GAAQ,CACrB,IAAIlB,EAAOkB,EAAMlB,KAAO,KAAOkB,EAAMlB,KAAO,GAC5C,OAAO6iG,EAAIyqN,QAAQ,YAActtT,EAAO,IAAK,WAE/C,GAAIsgK,EAASp/J,GACX,OAAO2hG,EAAIyqN,QAAQ10Q,OAAOx7C,UAAU6wB,SAAS3wB,KAAK4D,GAAQ,UAE5D,GAAIq/J,EAAOr/J,GACT,OAAO2hG,EAAIyqN,QAAQv1R,KAAK36B,UAAU6wB,SAAS3wB,KAAK4D,GAAQ,QAE1D,GAAIs/J,EAAQt/J,GACV,OAAOitT,EAAYjtT,GAIvB,IA2CIsnC,EA3CA5K,EAAO,GAAIqG,GAAQ,EAAOmqR,EAAS,CAAC,IAAK,MAGzC/7R,EAAQnxB,KACV+iC,GAAQ,EACRmqR,EAAS,CAAC,IAAK,MAIb3tJ,EAAWv/J,MAEb08B,EAAO,cADC18B,EAAMlB,KAAO,KAAOkB,EAAMlB,KAAO,IACf,KAkB5B,OAdIsgK,EAASp/J,KACX08B,EAAO,IAAMgb,OAAOx7C,UAAU6wB,SAAS3wB,KAAK4D,IAI1Cq/J,EAAOr/J,KACT08B,EAAO,IAAM7F,KAAK36B,UAAU6hF,YAAY3hF,KAAK4D,IAI3Cs/J,EAAQt/J,KACV08B,EAAO,IAAMuwR,EAAYjtT,IAGP,IAAhB+mB,EAAK/qB,QAAkB+mC,GAAyB,GAAhB/iC,EAAMhE,OAItC4wT,EAAe,EACbxtJ,EAASp/J,GACJ2hG,EAAIyqN,QAAQ10Q,OAAOx7C,UAAU6wB,SAAS3wB,KAAK4D,GAAQ,UAEnD2hG,EAAIyqN,QAAQ,WAAY,YAInCzqN,EAAIwqN,KAAK7vT,KAAK0D,GAIZsnC,EADEvE,EAsCN,SAAqB4+D,EAAK3hG,EAAO4sT,EAAcG,EAAahmS,GAE1D,IADA,IAAIugB,EAAS,GACJxrC,EAAI,EAAGiB,EAAIiD,EAAMhE,OAAQF,EAAIiB,IAAKjB,EACrCK,EAAe6D,EAAOmuB,OAAOryB,IAC/BwrC,EAAOhrC,KAAK6wT,EAAexrN,EAAK3hG,EAAO4sT,EAAcG,EACjD5+R,OAAOryB,IAAI,IAEfwrC,EAAOhrC,KAAK,IAShB,OANAyqB,EAAK5gB,SAAQ,SAAS7F,GACfA,EAAIwpB,MAAM,UACbwd,EAAOhrC,KAAK6wT,EAAexrN,EAAK3hG,EAAO4sT,EAAcG,EACjDzsT,GAAK,OAGNgnC,EArDI8lR,CAAYzrN,EAAK3hG,EAAO4sT,EAAcG,EAAahmS,GAEnDA,EAAKvgB,KAAI,SAASlG,GACzB,OAAO6sT,EAAexrN,EAAK3hG,EAAO4sT,EAAcG,EAAazsT,EAAKyiC,MAItE4+D,EAAIwqN,KAAKn6Q,MA6GX,SAA8B1K,EAAQ5K,EAAMwwR,GAQ1C,GANa5lR,EAAO0R,QAAO,SAASv4B,EAAM4sS,GAGxC,OADIA,EAAIl3R,QAAQ,OAAS,GAAGm3R,EACrB7sS,EAAO4sS,EAAIh9R,QAAQ,kBAAmB,IAAIr0B,OAAS,IACzD,GAEU,GACX,OAAOkxT,EAAO,IACG,KAATxwR,EAAc,GAAKA,EAAO,OAC3B,IACA4K,EAAO5U,KAAK,SACZ,IACAw6R,EAAO,GAGhB,OAAOA,EAAO,GAAKxwR,EAAO,IAAM4K,EAAO5U,KAAK,MAAQ,IAAMw6R,EAAO,GA5H1DK,CAAqBjmR,EAAQ5K,EAAMwwR,IAxBjCA,EAAO,GAAKxwR,EAAOwwR,EAAO,GA+CrC,SAASD,EAAYjtT,GACnB,MAAO,IAAM7B,MAAMjC,UAAU6wB,SAAS3wB,KAAK4D,GAAS,IAwBtD,SAASmtT,EAAexrN,EAAK3hG,EAAO4sT,EAAcG,EAAazsT,EAAKyiC,GAClE,IAAIjkC,EAAMwrC,EAAK7Z,EAsCf,IArCAA,EAAOx0B,OAAO2nC,yBAAyB5jC,EAAOM,IAAQ,CAAEN,MAAOA,EAAMM,KAC5DV,IAEL0qC,EADE7Z,EAAK1qB,IACD47F,EAAIyqN,QAAQ,kBAAmB,WAE/BzqN,EAAIyqN,QAAQ,WAAY,WAG5B37R,EAAK1qB,MACPukC,EAAMq3D,EAAIyqN,QAAQ,WAAY,YAG7BjwT,EAAe4wT,EAAazsT,KAC/BxB,EAAO,IAAMwB,EAAM,KAEhBgqC,IACCq3D,EAAIwqN,KAAKh2R,QAAQ1F,EAAKzwB,OAAS,GAE/BsqC,EADE00H,EAAO4tJ,GACHF,EAAY/qN,EAAKlxE,EAAKzwB,MAAO,MAE7B0sT,EAAY/qN,EAAKlxE,EAAKzwB,MAAO4sT,EAAe,IAE5Cz2R,QAAQ,OAAS,IAErBmU,EADEvH,EACIuH,EAAItF,MAAM,MAAMx+B,KAAI,SAASy4I,GACjC,MAAO,KAAOA,KACbvsH,KAAK,MAAMkpG,OAAO,GAEf,KAAOtxF,EAAItF,MAAM,MAAMx+B,KAAI,SAASy4I,GACxC,MAAO,MAAQA,KACdvsH,KAAK,OAIZ4X,EAAMq3D,EAAIyqN,QAAQ,aAAc,YAGhCjtJ,EAAYrgK,GAAO,CACrB,GAAIikC,GAASziC,EAAIwpB,MAAM,SACrB,OAAOwgB,GAETxrC,EAAO0/B,KAAKC,UAAU,GAAKn+B,IAClBwpB,MAAM,iCACbhrB,EAAOA,EAAK88H,OAAO,EAAG98H,EAAK9C,OAAS,GACpC8C,EAAO6iG,EAAIyqN,QAAQttT,EAAM,UAEzBA,EAAOA,EAAKuxB,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,KAChCvxB,EAAO6iG,EAAIyqN,QAAQttT,EAAM,WAI7B,OAAOA,EAAO,KAAOwrC,EA2BvB,SAASnZ,EAAQq8R,GACf,OAAO9nT,MAAMyrB,QAAQq8R,GAIvB,SAASzuJ,EAAUh1I,GACjB,MAAsB,kBAARA,EAIhB,SAASi1I,EAAOj1I,GACd,OAAe,OAARA,EAST,SAASm1I,EAASn1I,GAChB,MAAsB,iBAARA,EAIhB,SAAS09H,EAAS19H,GAChB,MAAsB,iBAARA,EAShB,SAASo1I,EAAYp1I,GACnB,YAAe,IAARA,EAIT,SAASq1I,EAASrtE,GAChB,OAAO1gE,EAAS0gE,IAA8B,oBAAvB+sE,EAAe/sE,GAIxC,SAAS1gE,EAAStH,GAChB,MAAsB,iBAARA,GAA4B,OAARA,EAIpC,SAASs1I,EAAO9/J,GACd,OAAO8xB,EAAS9xB,IAA4B,kBAAtBu/J,EAAev/J,GAIvC,SAAS+/J,EAAQtiK,GACf,OAAOq0B,EAASr0B,KACW,mBAAtB8hK,EAAe9hK,IAA2BA,aAAamB,OAI9D,SAASohK,EAAWx1I,GAClB,MAAsB,mBAARA,EAgBhB,SAAS+0I,EAAer/J,GACtB,OAAOxD,OAAOC,UAAU6wB,SAAS3wB,KAAKqD,GAIxC,SAASguT,EAAIjtT,GACX,OAAOA,EAAI,GAAK,IAAMA,EAAEusB,SAAS,IAAMvsB,EAAEusB,SAAS,IApbpDlwB,EAAQmsO,SAAW,SAASjjO,GAI1B,GAHIo5J,EAAY8sJ,KACdA,EAAehgR,EAAQ44G,IAAI6oK,YAAc,IAC3C3nT,EAAMA,EAAIwsC,eACL25Q,EAAOnmT,GACV,GAAI,IAAI2xC,OAAO,MAAQ3xC,EAAM,MAAO,KAAK+yC,KAAKmzQ,GAAe,CAC3D,IAAI0B,EAAM1hR,EAAQ0hR,IAClBzB,EAAOnmT,GAAO,WACZ,IAAI2lT,EAAM7uT,EAAQ05C,OAAO1zB,MAAMhmB,EAASorB,WACxCpnB,QAAQ3C,MAAM,YAAa6H,EAAK4nT,EAAKjC,SAGvCQ,EAAOnmT,GAAO,aAGlB,OAAOmmT,EAAOnmT,IAoChBlJ,EAAQs8J,QAAUA,EAIlBA,EAAQ95F,OAAS,CACf,KAAS,CAAC,EAAG,IACb,OAAW,CAAC,EAAG,IACf,UAAc,CAAC,EAAG,IAClB,QAAY,CAAC,EAAG,IAChB,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,QAAY,CAAC,GAAI,IACjB,IAAQ,CAAC,GAAI,IACb,OAAW,CAAC,GAAI,KAIlB85F,EAAQhiG,OAAS,CACf,QAAW,OACX,OAAU,SACV,QAAW,SACX,UAAa,OACb,KAAQ,OACR,OAAU,QACV,KAAQ,UAER,OAAU,OAkRZt6D,EAAQs0B,QAAUA,EAKlBt0B,EAAQkiK,UAAYA,EAKpBliK,EAAQmiK,OAASA,EAKjBniK,EAAQoiK,kBAHR,SAA2Bl1I,GACzB,OAAc,MAAPA,GAOTltB,EAAQqiK,SAAWA,EAKnBriK,EAAQ4qJ,SAAWA,EAKnB5qJ,EAAQ4mC,SAHR,SAAkB1Z,GAChB,MAAsB,iBAARA,GAOhBltB,EAAQsiK,YAAcA,EAKtBtiK,EAAQuiK,SAAWA,EAKnBviK,EAAQw0B,SAAWA,EAKnBx0B,EAAQwiK,OAASA,EAMjBxiK,EAAQyiK,QAAUA,EAKlBziK,EAAQ0iK,WAAaA,EAUrB1iK,EAAQ2iK,YARR,SAAqBz1I,GACnB,OAAe,OAARA,GACe,kBAARA,GACQ,iBAARA,GACQ,iBAARA,GACQ,iBAARA,QACQ,IAARA,GAIhBltB,EAAQq4J,SAAW,EAAQ,MAY3B,IAAIh8E,EAAS,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACxD,MAAO,MAAO,OAG5B,SAAS00O,IACP,IAAIruT,EAAI,IAAIs3B,KACR2vE,EAAO,CAACinN,EAAIluT,EAAEy7E,YACNyyO,EAAIluT,EAAE27E,cACNuyO,EAAIluT,EAAE67E,eAAe1oD,KAAK,KACtC,MAAO,CAACnzB,EAAEq7E,UAAW1B,EAAO35E,EAAEm7E,YAAa8rB,GAAM9zE,KAAK,KAqCxD,SAASv2B,EAAe02B,EAAKuX,GAC3B,OAAOnuC,OAAOC,UAAUC,eAAeC,KAAKy2B,EAAKuX,GAjCnDvtC,EAAQuqC,IAAM,WACZvmC,QAAQumC,IAAI,UAAWwmR,IAAa/wT,EAAQ05C,OAAO1zB,MAAMhmB,EAASorB,aAiBpEprB,EAAQigJ,SAAW,EAAQ,MAE3BjgJ,EAAQ0vT,QAAU,SAAS7hN,EAAQ1zE,GAEjC,IAAKA,IAAQ3F,EAAS2F,GAAM,OAAO0zE,EAInC,IAFA,IAAI3jF,EAAO9qB,OAAO8qB,KAAKiQ,GACnBl7B,EAAIirB,EAAK/qB,OACNF,KACL4uG,EAAO3jF,EAAKjrB,IAAMk7B,EAAIjQ,EAAKjrB,IAE7B,OAAO4uG,GAOT,IAAImjN,EAA6C,oBAAX/tT,OAAyBA,OAAO,8BAA2Bd,EA0DjG,SAAS8uT,EAAsBr1H,EAAQrrE,GAKrC,IAAKqrE,EAAQ,CACX,IAAIs1H,EAAY,IAAI5vT,MAAM,2CAC1B4vT,EAAUt1H,OAASA,EACnBA,EAASs1H,EAEX,OAAO3gM,EAAGqrE,GAlEZ57L,EAAQmxT,UAAY,SAAmBh2E,GACrC,GAAwB,mBAAbA,EACT,MAAM,IAAIn1M,UAAU,oDAEtB,GAAIgrR,GAA4B71E,EAAS61E,GAA2B,CAClE,IAAIz+P,EACJ,GAAkB,mBADdA,EAAK4oL,EAAS61E,IAEhB,MAAM,IAAIhrR,UAAU,iEAKtB,OAHA5mC,OAAOyD,eAAe0vD,EAAIy+P,EAA0B,CAClD7tT,MAAOovD,EAAIzvD,YAAY,EAAOmzB,UAAU,EAAOvC,cAAc,IAExD6+B,EAGT,SAASA,IAQP,IAPA,IAAIi1N,EAAgB4pC,EAChB9wT,EAAU,IAAIC,SAAQ,SAAUC,EAASC,GAC3C+mR,EAAiBhnR,EACjB4wT,EAAgB3wT,KAGd+pC,EAAO,GACFvrC,EAAI,EAAGA,EAAImsB,UAAUjsB,OAAQF,IACpCurC,EAAK/qC,KAAK2rB,UAAUnsB,IAEtBurC,EAAK/qC,MAAK,SAAUsE,EAAKZ,GACnBY,EACFqtT,EAAcrtT,GAEdyjR,EAAerkR,MAInB,IACEg4O,EAASn1N,MAAMiL,KAAMuZ,GACrB,MAAOzmC,GACPqtT,EAAcrtT,GAGhB,OAAOzD,EAQT,OALAlB,OAAOqkD,eAAe8O,EAAInzD,OAAOokD,eAAe23L,IAE5C61E,GAA0B5xT,OAAOyD,eAAe0vD,EAAIy+P,EAA0B,CAChF7tT,MAAOovD,EAAIzvD,YAAY,EAAOmzB,UAAU,EAAOvC,cAAc,IAExDt0B,OAAO+8D,iBACZ5J,EACA8J,EAA0B8+K,KAI9Bn7O,EAAQmxT,UAAU5uL,OAASyuL,EAiD3BhxT,EAAQqxT,YAlCR,SAAqBl2E,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIn1M,UAAU,oDAMtB,SAASsrR,IAEP,IADA,IAAI9mR,EAAO,GACFvrC,EAAI,EAAGA,EAAImsB,UAAUjsB,OAAQF,IACpCurC,EAAK/qC,KAAK2rB,UAAUnsB,IAGtB,IAAIsyT,EAAU/mR,EAAK2K,MACnB,GAAuB,mBAAZo8Q,EACT,MAAM,IAAIvrR,UAAU,8CAEtB,IAAI3C,EAAOpS,KACPs/F,EAAK,WACP,OAAOghM,EAAQvrS,MAAMqd,EAAMjY,YAI7B+vN,EAASn1N,MAAMiL,KAAMuZ,GAClBp5B,MAAK,SAAS+sC,GAAO/O,EAAQqxG,SAASlwB,EAAI,KAAMpyE,MAC3C,SAAS5R,GAAO6C,EAAQqxG,SAASwwK,EAAuB1kR,EAAKgkF,MAMvE,OAHAnxH,OAAOqkD,eAAe6tQ,EAAelyT,OAAOokD,eAAe23L,IAC3D/7O,OAAO+8D,iBAAiBm1P,EACAj1P,EAA0B8+K,IAC3Cm2E,K,iCC5rBTrxT,EAAOD,QAAU,SAAkBktB,GACjC,OAAOA,GAAsB,iBAARA,GACI,mBAAbA,EAAIkkB,MACS,mBAAblkB,EAAI6uI,MACc,mBAAlB7uI,EAAI2wI,Y,cCJW,mBAAlBz+J,OAAOoE,OAEhBvD,EAAOD,QAAU,SAAkB4mJ,EAAMC,GACvCD,EAAKE,OAASD,EACdD,EAAKvnJ,UAAYD,OAAOoE,OAAOqjJ,EAAUxnJ,UAAW,CAClD6zB,YAAa,CACX/vB,MAAOyjJ,EACP9jJ,YAAY,EACZmzB,UAAU,EACVvC,cAAc,MAMpBzzB,EAAOD,QAAU,SAAkB4mJ,EAAMC,GACvCD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1nJ,UAAYwnJ,EAAUxnJ,UAC/BunJ,EAAKvnJ,UAAY,IAAI0nJ,EACrBH,EAAKvnJ,UAAU6zB,YAAc0zH,I,iBCpBjC,YAIA,IAAI4qK,EAAc//R,EAAO+/R,aACpB//R,EAAOggS,mBACPhgS,EAAOigS,eACPjgS,EAAOkgS,eAMRC,EAAgB,WAClB,IAEE,OAAkB,IADV,IAAI7vN,KAAK,CAAC,OACTn6B,KACT,MAAMznE,GACN,OAAO,GALS,GAchB0xT,EAA8BD,GAAiB,WACjD,IAEE,OAAkB,IADV,IAAI7vN,KAAK,CAAC,IAAIzsB,WAAW,CAAC,EAAE,MAC3B1N,KACT,MAAMznE,GACN,OAAO,GALwC,GAa/C2xT,EAAuBN,GACtBA,EAAYnyT,UAAUsgD,QACtB6xQ,EAAYnyT,UAAU0yT,QAQ3B,SAASC,EAAoBC,GAC3B,IAAK,IAAIhzT,EAAI,EAAGA,EAAIgzT,EAAI9yT,OAAQF,IAAK,CACnC,IAAI0C,EAAQswT,EAAIhzT,GAChB,GAAI0C,EAAMorI,kBAAkB6qB,YAAa,CACvC,IAAI6B,EAAM93J,EAAMorI,OAIhB,GAAIprI,EAAMm2J,aAAe2B,EAAI3B,WAAY,CACvC,IAAI1mH,EAAO,IAAIkkC,WAAW3zE,EAAMm2J,YAChC1mH,EAAKloC,IAAI,IAAIosE,WAAWmkF,EAAK93J,EAAMk2J,WAAYl2J,EAAMm2J,aACrD2B,EAAMroH,EAAK27F,OAGbklL,EAAIhzT,GAAKw6J,IAKf,SAASy4J,EAAuBD,EAAKpkT,GACnCA,EAAUA,GAAW,GAErB,IAAIm/Q,EAAK,IAAIwkC,EACbQ,EAAoBC,GAEpB,IAAK,IAAIhzT,EAAI,EAAGA,EAAIgzT,EAAI9yT,OAAQF,IAC9B+tR,EAAGrtO,OAAOsyQ,EAAIhzT,IAGhB,OAAQ4O,EAAY,KAAIm/Q,EAAG+kC,QAAQlkT,EAAQhM,MAAQmrR,EAAG+kC,UAGxD,SAASI,EAAgBF,EAAKpkT,GAE5B,OADAmkT,EAAoBC,GACb,IAAIlwN,KAAKkwN,EAAKpkT,GAAW,IAGlC5N,EAAOD,QACD4xT,EACKC,EAA8BpgS,EAAOswE,KAAOowN,EAC1CL,EACFI,OAEP,I,mCC7FJ,IAAIE,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MACzBC,EAAW,EAAQ,MA2BvBryT,EAAOD,QAlBP,SAAqBuyT,GACnB,OAAO,SAASp9R,EAAOC,EAAKq7C,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB4hP,EAAel9R,EAAOC,EAAKq7C,KAChEr7C,EAAMq7C,OAAOtuE,GAGfgzB,EAAQm9R,EAASn9R,QACLhzB,IAARizB,GACFA,EAAMD,EACNA,EAAQ,GAERC,EAAMk9R,EAASl9R,GAEjBq7C,OAAgBtuE,IAATsuE,EAAsBt7C,EAAQC,EAAM,GAAK,EAAKk9R,EAAS7hP,GACvD2hP,EAAUj9R,EAAOC,EAAKq7C,EAAM8hP,M,cCxBvC,IAAIC,EAAav9R,KAAK4nD,KAClBksB,EAAY9zE,KAAKD,IAyBrB/0B,EAAOD,QAZP,SAAmBm1B,EAAOC,EAAKq7C,EAAM8hP,GAKnC,IAJA,IAAIrhS,GAAS,EACT/xB,EAAS4pG,EAAUypN,GAAYp9R,EAAMD,IAAUs7C,GAAQ,IAAK,GAC5D7gE,EAAS/G,MAAM1J,GAEZA,KACLyQ,EAAO2iT,EAAYpzT,IAAW+xB,GAASiE,EACvCA,GAASs7C,EAEX,OAAO7gE,I,cCPT3P,EAAOD,QAJP,WACE,OAAO,I,cCMTC,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,iBCjBClD,EAAOD,QAAU,EAAQ,GAAR,EAA+D,IAKlFP,KAAK,CAACQ,EAAOhB,EAAI,o9LAAq9L,M,gBCL9+L,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,slCAAulC,KAGhnCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,6BCVvB,M,mDAegBylM,KAAT,SAAcl/E,GACpBm/E,EAAUC,YAAYC,EAAYpvT,OAAO+vO,KAhBhB,MAAgB,EAAhB,KACE,EAAkB,EAAlB,KAGtBm/E,EAAY,IAAI//E,EAAS,UACzBigF,EAAc,IAAIp/E,EAAW,YAACk/E,EAAUx/E,uB,8BCC9C,wB,mDAIgBI,2B,EAwBAu/E,sC,yBA5BhB,IAAMxkQ,OAA0B,IAAX58B,EAAyBA,EAAS4R,KACjDyvR,EACLzkQ,EAAes8D,kBAAoBt8D,EAAe04N,uBAE5C,SAASzzC,EAAyBpiO,GACxC,OAAO,WAKN,IAAM+jS,EAAgB7yS,WAAW2wT,EAAa,GAIxCC,EAAiB3vF,YAAY0vF,EAAa,IAEhD,SAASA,IAGRrxT,aAAauzS,GACbwY,cAAcuF,GACd9hT,MAOI,SAAS2hT,EAAoC3hT,GACnD,IAAIy1Q,EAAS,EACPx6O,EAAW,IAAI2mR,EAAwB5hT,GACvCugD,EAAO7wD,SAASugC,eAAe,IAErC,OADAgL,EAAS6xD,QAAQvsC,EAAM,CAAEu5D,eAAe,IACjC,WACN27J,GAAUA,EACTl1N,EAAc7yD,KAAO+nR,GAIjB,IAAMtzC,EACuB,mBAA5By/E,EAYJD,EA4BAv/E,E,EAzCSD,oB,gDC3Cb,6PAAAp0O,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,+e,qDAGa00O,EAAO,WAGnB,WACStqJ,EACA4pO,IARV,4FASG,S,KAFO5pO,U,KACA4pO,U,KAJF1/E,KAAsB,KAJ9B,UAoBE,OApBF,EASK,GATL,EASK,mBAEJ,WACC,IACCtiN,KAAKsiN,MAAQtiN,KAAKsiN,OACjB,MAAOlyO,GACR4vB,KAAKo4D,QAAQhoF,GACZ,QACD4vB,KAAKsiN,KAAO,KACZtiN,KAAKgiS,QAAQhiS,YAlBhB,8EAoBE,EAjBkB,G,EAAP0iN,W,6BCLb,M,kECAA,IAAIr+E,EAAmB,EAAQ,KAM/Br1J,EAAOD,QAJP,SAA4BwK,GAC1B,GAAI3B,MAAMyrB,QAAQ9pB,GAAM,OAAO8qJ,EAAiB9qJ,IAGbvK,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,cCF1GC,EAAOD,QAJP,SAA0Bu1J,GACxB,GAAsB,oBAAXtyJ,QAAmD,MAAzBsyJ,EAAKtyJ,OAAO6pG,WAA2C,MAAtByoD,EAAK,cAAuB,OAAO1sJ,MAAMC,KAAKysJ,IAGnFt1J,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,cCAxGC,EAAOD,QAJP,WACE,MAAM,IAAIgmC,UAAU,yIAGe/lC,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,gBCJ1G,IAAI0sH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,yoEAA4oE,KAGrqEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,i7DAAk7D,KAG38De,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,0rEAA2rE,KAGptEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8hIAA+hI,KAGxjIe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,u2CAAw2C,KAGj4Ce,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,4MAA6M,M,gBCLtO,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,0qDAA6qD,KAGtsDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,kMAAmM,M,gBCL5N,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,mxCAAoxC,KAG7yCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,mpBAAopB,M,gBCL7qB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,k+BAAm+B,KAG5/Be,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,6BCTvB,IAAIz6F,EAAI,EAAQ,IACZ7B,EAAU,EAAQ,KAClBswI,EAA2B,EAAQ,KACnCr7H,EAAQ,EAAQ,IAChB62B,EAAa,EAAQ,KACrB9pC,EAAa,EAAQ,IACrBq3J,EAAqB,EAAQ,KAC7By9F,EAAiB,EAAQ,KACzBv3P,EAAgB,EAAQ,KAExBkxI,EAAyBH,GAA4BA,EAAyB3hK,UA0BlF,GAhBAkzB,EAAE,CAAExwB,OAAQ,UAAWmzB,OAAO,EAAMoyP,MAAM,EAAMzzP,SAP5BmtI,GAA4Br7H,GAAM,WAEpDw7H,EAAgC,QAAE5hK,KAAK,CAAE6R,KAAM,eAA+B,mBAKT,CACrE,QAAW,SAAUooO,GACnB,IAAIxuL,EAAI++H,EAAmB94J,KAAMurC,EAAW,YACxCkmG,EAAahwI,EAAW8mN,GAC5B,OAAOvoN,KAAK7f,KACVsxJ,EAAa,SAAUp2J,GACrB,OAAOk7Q,EAAex8N,EAAGwuL,KAAapoO,MAAK,WAAc,OAAO9E,MAC9DktO,EACJ92E,EAAa,SAAUviK,GACrB,OAAOqnR,EAAex8N,EAAGwuL,KAAapoO,MAAK,WAAc,MAAMjR,MAC7Dq5O,OAML9oN,GAAWgC,EAAWsuI,GAA2B,CACpD,IAAIviE,EAASjiC,EAAW,WAAWn9D,UAAmB,QAClD8hK,EAAgC,UAAM1iE,GACxCxuE,EAAckxI,EAAwB,UAAW1iE,EAAQ,CAAEtuE,QAAQ,M,gBCxCvE,IAAIu8F,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wvCAAyvC,KAGlxCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+7DAAg8D,KAGz9De,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,6BCTvB,IAAIz6F,EAAI,EAAQ,IACZd,EAAS,EAAQ,IACjByhS,EAAoB,EAAQ,KAC5BlsG,EAAa,EAAQ,KAGrBpvD,EAAcs7J,EAA8B,YAKhD3gS,EAAE,CAAEd,QAAQ,EAAMyB,aAAa,EAAMW,OAJbpC,EAAmB,cAIwBmmI,GAAe,CAChFA,YAAaA,IAGfovD,EAVmB,gB,gBCNe,EAAQ,IAI1Cz8B,CAA4B,QAAQ,SAAUz/I,GAC5C,OAAO,SAAmBlsC,EAAMi5J,EAAY14J,GAC1C,OAAO2rC,EAAK7Z,KAAMryB,EAAMi5J,EAAY14J,Q,gBCNN,EAAQ,IAI1CorL,CAA4B,SAAS,SAAUz/I,GAC7C,OAAO,SAA2BlsC,EAAMi5J,EAAY14J,GAClD,OAAO2rC,EAAK7Z,KAAMryB,EAAMi5J,EAAY14J,OAErC,I,gBCRH,IAAIutH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,6VAA8V,M,gBCLvX,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,kIAAmI,M,gBCL5J,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,u5DAAw5D,M,gBCLj7D,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+hCAAgiC,KAGzjCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,gOAAiO,M,iBCL1Pe,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,4lDAA6lD,KAGtnDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,81RAA+1R,KAGx3Re,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,qgPAAsgP,KAG/hPe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVb/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,mCAAoC,M,gBCL7D,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wDAAyD,M,gBCLlF,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ipDAAkpD,M,gBCL3qD,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,4iJAA6iJ,KAGtkJe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,0eAA2e,M,gBCLpgB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,mfAAof,M,gBCL7gB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,kGAAmG,M,gBCL5H,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,ghBAAihB,M,gBCL1iB,IAAIwkD,EAAiB,EAAQ,KAQ7BxjD,EAAOD,QANP,SAAwB6yE,EAAUC,GAChCD,EAASxzE,UAAYD,OAAOoE,OAAOsvE,EAAWzzE,WAC9CwzE,EAASxzE,UAAU6zB,YAAc2/C,EACjCpvB,EAAeovB,EAAUC,IAGM7yE,EAAOD,QAAQsD,YAAa,EAAMrD,EAAOD,QAAiB,QAAIC,EAAOD,S,gBCRtG,IAAI0sH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,orCAAqrC,KAG9sCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,2hBAA4hB,M,gBCLrjB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,6KAA8K,M,gBCLvM,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8hHAAiiH,KAG1jHe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,2yHAA4yH,KAGr0He,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8xFAA+xF,KAGxzFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,ybAA0b,M,gBCLnd,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,iRAAkR,M,gBCL3S,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,kEAAmE,M,6BCJ5F,IAAIszB,EAAI,EAAQ,IACZ4gS,EAAY,EAAQ,MAA2Bh+R,MAKnD5C,EAAE,CAAExwB,OAAQ,SAAUmzB,OAAO,EAAMrB,OAJlB,EAAQ,OAIgC,CACvD+sP,SAAU,SAAkBzG,GAC1B,OAAOg5C,EAAUliS,KAAMkpP,EAAW/uP,UAAUjsB,OAAS,EAAIisB,UAAU,QAAKjpB,O,gBCR5E,IAAIqwB,EAAc,EAAQ,IACtBmhE,EAAW,EAAQ,KACnBzjE,EAAW,EAAQ,KACnB+pM,EAAU,EAAQ,KAClBhhK,EAAyB,EAAQ,KAEjCihK,EAAS1nM,EAAYynM,GACrBxmM,EAAcjB,EAAY,GAAGpuB,OAC7By4E,EAAO5nD,KAAK4nD,KAGZ2d,EAAe,SAAU44N,GAC3B,OAAO,SAAUn4N,EAAOk/K,EAAWk5C,GACjC,IAIIC,EAASC,EAJT/nQ,EAAIt7B,EAAS+oC,EAAuBgiC,IACpCu4N,EAAe7/N,EAASwmL,GACxBs5C,EAAejoQ,EAAErsD,OACjBu0T,OAAyBvxT,IAAfkxT,EAA2B,IAAMnjS,EAASmjS,GAExD,OAAIG,GAAgBC,GAA2B,IAAXC,EAAsBloQ,IAE1D+nQ,EAAer5F,EAAOw5F,EAAS72O,GAD/By2O,EAAUE,EAAeC,GACqBC,EAAQv0T,UACrCA,OAASm0T,IAASC,EAAe9/R,EAAY8/R,EAAc,EAAGD,IACxEF,EAAS5nQ,EAAI+nQ,EAAeA,EAAe/nQ,KAItDvrD,EAAOD,QAAU,CAGfm1B,MAAOqlE,GAAa,GAGpBplE,IAAKolE,GAAa,K,gBChCpB,IAAI3sD,EAAY,EAAQ,KAExB5tC,EAAOD,QAAU,mEAAmEi8C,KAAKpO,I,gBCHzF,IAAI6+E,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wmHAAymH,KAGloHe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,4gDAA6gD,M,gBCLtiD,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,wNAAyN,M,iBCLlPe,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,q6aAAs6a,KAG/7ae,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,6gSAA8gS,KAGviSe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,qjEAAwjE,KAGjlEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,m2EAAo2E,KAG73Ee,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,uKAAwK,M,gBCLjM,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,8iDAA+iD,KAGxkDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,4hDAA6hD,KAGtjDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,sjDAAujD,KAGhlDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,2gEAA4gE,KAGriEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,suCAAuuC,KAGhwCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,u0CAAw0C,KAGj2Ce,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,4yDAA6yD,KAGt0De,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,88DAA+8D,KAGx+De,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAwE,IAK3FP,KAAK,CAACQ,EAAOhB,EAAI,+xEAAgyE,KAGzzEe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,kuGAAmuG,KAG5vGe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,41RAA61R,KAGt3Re,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,qgCAAsgC,KAG/hCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,kvDAAmvD,KAG5wDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,ohCAAqhC,KAG9iCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,8BAA+B,M,gBCLxD,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,wIAAyI,M,gBCLlK,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,2hCAA4hC,M,gBCLrjC,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,okDAAqkD,KAG9lDe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,muCAAouC,KAG7vCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,mwBAAowB,M,gBCL7xB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,6kBAA8kB,M,gBCLvmB,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,0sFAA2sF,KAGpuFe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,89BAA+9B,M,gBCLx/B,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,ijCAAkjC,KAG3kCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,0kCAA2kC,KAGpmCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,iBCVvBhtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,o4EAAq4E,KAG95Ee,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,qsCAAssC,KAG/tCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,irCAAkrC,KAG3sCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,wSAAyS,M,gBCLlU,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,oRAAqR,M,gBCL9S,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,0qCAA2qC,KAGpsCe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,oqHAAqqH,KAG9rHe,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,mHAAoH,M,gBCL7I,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,oNAAqN,M,gBCL9O,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CzB/sH,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,sOAAuO,M,gBCLhQ,IAAIytH,EAAM,EAAQ,IACFz4G,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ6hB,QAAU7hB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAU8+G,GACX,MAAMC,EAAgBhsH,SAASk7B,qBAAqB,oBACpD,GAAI8wF,EAAcztH,OAAS,EAAG,CAC5B,MAAM0tH,EAAkB,GACxB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI2tH,EAAcztH,OAAQF,IAAK,CAC7C,MAAM6tH,EAAeF,EAAc3tH,GACnC,GAAU,IAANA,EACF6tH,EAAa9wF,WAAW15B,YAAYqqH,GACpCA,EAASlrH,OAAS,WACZorH,EAAgB1tH,OAAS,GAC3B0tH,EAAgBvjH,QAASyjH,IAEvBA,EAAU7pB,UAAYypB,EAASzpB,iBAIhC,CACL,MAAM6pB,EAAYJ,EAAStpB,WAAU,GACrCypB,EAAa9wF,WAAW15B,YAAYyqH,GACpCF,EAAgBptH,KAAKstH,UAIzBnsH,SAASyB,KAAKC,YAAYqqH,IAG5C,WAAoB,GAEPD,EAAIz4G,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQ+4G,QAAU,I,iBC3CnChtH,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+1HAAg2H,KAGz3He,EAAQgtH,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIrjH,EAAM,CACT,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,gBAAiB,CAChB,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,cAAe,CACd,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,eAAgB,CACf,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,WAAY,CACX,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,WAAY,CACX,KACA,KAED,UAAW,CACV,KACA,KAED,WAAY,CACX,KACA,KAED,gBAAiB,CAChB,KACA,KAED,WAAY,CACX,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,eAAgB,CACf,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,gBAAiB,CAChB,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,MAGF,SAASgqT,EAAoBvpK,GAC5B,IAAIrqJ,EAAoB6C,EAAE+G,EAAKygJ,GAC9B,OAAO7pJ,QAAQC,UAAU4Q,MAAK,WAC7B,IAAIjR,EAAI,IAAImB,MAAM,uBAAyB8oJ,EAAM,KAEjD,MADAjqJ,EAAE0nC,KA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","file":"webviewer-ui.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t12: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"chunks/\" + ({\"5\":\"vendors.html2canvas\"}[chunkId]||chunkId) + \".chunk.js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1247);\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 core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setDisplayMode__anchor\n * @fires displayModeUpdated on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:displayModeUpdated__anchor\n * @fires zoomUpdated on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:zoomUpdated__anchor\n */\nexport default (mode) => {\n  for (const documentViewer of core.getDocumentViewers()) {\n    const displayModeManager = documentViewer.getDisplayModeManager();\n    const displayMode = (displayModeManager.isVirtualDisplayEnabled())\n      ? new window.Core.VirtualDisplayMode(documentViewer, mode)\n      : new window.Core.DisplayMode(documentViewer, mode);\n\n    displayModeManager.setDisplayMode(displayMode);\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getAnnotationManager__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setActiveSearchResult__anchor\n */\nexport default (result, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setActiveSearchResult(result);\n};\n","import core from 'core';\nimport Events from 'constants/events';\n\nexport const addEventListener = (event, eventListener, options = null, documentViewerKey = 1) => {\n  const eventToObjectMap = getEventToObjectMap(documentViewerKey);\n  const object = eventToObjectMap[event];\n\n  options ? object.addEventListener(event, eventListener, options) : object.addEventListener(event, eventListener);\n};\n\nexport const removeEventListener = (event, eventListener, documentViewerKey = 1) => {\n  if (!core.getDocumentViewer(documentViewerKey)) {\n    return;\n  }\n  const eventToObjectMap = getEventToObjectMap(documentViewerKey);\n  const object = eventToObjectMap[event];\n\n  object.removeEventListener(event, eventListener);\n};\n\nconst getEventToObjectMap = (documentViewerKey = 1) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const annotManager = documentViewer.getAnnotationManager();\n  const contentEditManager = documentViewer.getContentEditManager();\n  const historyManager = documentViewer.getAnnotationHistoryManager();\n  const editBoxManager = annotManager.getEditBoxManager();\n  const formFieldCreationManager = annotManager.getFormFieldCreationManager();\n  const measurementManager = documentViewer.getMeasurementManager();\n\n  return {\n    cursorPropertiesUpdated: documentViewer,\n    selectionPropertiesUpdated: documentViewer,\n    officeDocumentEdited: documentViewer,\n    signatureSaved: documentViewer,\n    signatureDeleted: documentViewer,\n    annotationsLoaded: documentViewer,\n    tap: documentViewer,\n    longTap: documentViewer,\n    click: documentViewer,\n    dblClick: documentViewer,\n    displayPageLocation: documentViewer,\n    keyDown: documentViewer,\n    keyUp: documentViewer,\n    mouseEnter: documentViewer,\n    mouseLeave: documentViewer,\n    mouseLeftDown: documentViewer,\n    mouseLeftUp: documentViewer,\n    mouseMove: documentViewer,\n    mouseRightDown: documentViewer,\n    mouseRightUp: documentViewer,\n    pageComplete: documentViewer,\n    readOnlyModeChanged: documentViewer,\n    searchInProgress: documentViewer,\n    activeSearchResultChanged: documentViewer,\n    searchResultsChanged: documentViewer,\n    textSelected: documentViewer,\n    beginRendering: documentViewer,\n    finishedRendering: documentViewer,\n    beforeDocumentLoaded: documentViewer,\n    displayModeUpdated: documentViewer,\n    documentLoaded: documentViewer,\n    documentUnloaded: documentViewer,\n    fitModeUpdated: documentViewer,\n    rotationUpdated: documentViewer,\n    toolUpdated: documentViewer,\n    toolModeUpdated: documentViewer,\n    zoomUpdated: documentViewer,\n    pageNumberUpdated: documentViewer,\n    pagesUpdated: documentViewer,\n    'fitModeUpdated.fitbutton': documentViewer,\n    [Events.COMPARE_ANNOTATIONS_LOADED]: documentViewer,\n    historyChanged: historyManager,\n    annotationSelected: annotManager,\n    annotationChanged: annotManager,\n    outlineSetDestination: annotManager,\n    updateAnnotationPermission: annotManager,\n    addReply: annotManager,\n    deleteReply: annotManager,\n    annotationHidden: annotManager,\n    annotationDoubleClicked: annotManager,\n    annotationNumberingUpdated: annotManager,\n    annotationFiltered: annotManager,\n    annotationToggled: annotManager,\n    fieldChanged: annotManager,\n    notify: annotManager,\n    setNoteText: annotManager,\n    fileAttachmentDataAvailable: annotManager,\n    digitalSignatureAvailable: annotManager,\n    editorFocus: editBoxManager,\n    editorBlur: editBoxManager,\n    editorTextChanged: editBoxManager,\n    editorSelectionChanged: editBoxManager,\n    formFieldCreationModeStarted: formFieldCreationManager,\n    formFieldCreationModeEnded: formFieldCreationManager,\n    scaleUpdated: measurementManager,\n    contentEditModeStarted: contentEditManager,\n    contentEditModeEnded: contentEditManager,\n    contentBoxEditStarted: contentEditManager,\n    contentBoxEditEnded: contentEditManager,\n    contentEditSelectionChange: contentEditManager,\n    createAnnotationWithNoScale: measurementManager,\n  };\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#mergeDocument__anchor\n */\n\nexport default async (documentToMerge, position, documentViewerKey = 1) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  if (documentViewer.getDocument()) {\n    return documentViewer.getDocument().mergeDocument(documentToMerge, position);\n  }\n\n  await documentViewer.loadDocument(documentToMerge);\n  const doc = documentViewer.getDocument();\n  return { filename: doc.getFilename(), pages: [1] };\n};\n","const documentViewerMap = new Map();\n\nexport const setDocumentViewer = (number, documentViewer) => {\n  documentViewerMap.set(number, documentViewer);\n  return documentViewer;\n};\n\nexport const deleteDocumentViewer = (number) => {\n  documentViewerMap.delete(number);\n};\n\nexport const getDocumentViewer = (number = 1) => {\n  return documentViewerMap.get(number);\n};\n\nexport const getDocumentViewers = () => {\n  return Array.from(documentViewerMap.values());\n};","import setToolMode from './setToolMode';\nimport getToolMode from './getToolMode';\nimport getToolsFromAllDocumentViewers from './getToolsFromAllDocumentViewers';\nimport setDisplayMode from './setDisplayMode';\nimport getDisplayMode from './getDisplayMode';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport rotatePages from './rotatePages';\nimport movePages from './movePages';\nimport removePages from './removePages';\nimport getFitMode from './getFitMode';\nimport fitToPage from './fitToPage';\nimport fitToWidth from './fitToWidth';\nimport fitToHeight from './fitToHeight';\nimport fitToZoom from './fitToZoom';\nimport zoomToMouse from './zoomToMouse';\nimport getZoom from './getZoom';\nimport zoomTo from './zoomTo';\nimport getAnnotationManager from './getAnnotationManager';\nimport getTotalPages from './getTotalPages';\nimport getCurrentPage from './getCurrentPage';\nimport setCurrentPage from './setCurrentPage';\nimport getType from './getType';\nimport isWebViewerServerDocument from './isWebViewerServerDocument';\nimport getSelectedText from './getSelectedText';\nimport clearSelection from './clearSelection';\nimport closeDocument from './closeDocument';\nimport getToolModeMap from './getToolModeMap';\nimport getCurrentUser from './getCurrentUser';\nimport getIsAdminUser from './getIsAdminUser';\nimport setIsAdminUser from './setIsAdminUser';\nimport exportAnnotations from './exportAnnotations';\nimport setCurrentUser from './setCurrentUser';\nimport setReadOnly from './setReadOnly';\nimport setScrollViewElement from './setScrollViewElement';\nimport setViewerElement from './setViewerElement';\nimport isContinuousDisplayMode from './isContinuousDisplayMode';\nimport isScrollableDisplayMode from './isScrollableDisplayMode';\nimport isSearchResultEqual from './isSearchResultEqual';\nimport scrollViewUpdated from './scrollViewUpdated';\nimport canModify from './canModify';\nimport canModifyContents from './canModifyContents';\nimport deleteAnnotations from './deleteAnnotations';\nimport getDisplayAuthor from './getDisplayAuthor';\nimport getDocument from './getDocument';\nimport getCompleteRotation from './getCompleteRotation';\nimport getRotation from './getRotation';\nimport getPageInfo from './getPageInfo';\nimport clearSearchResults from './clearSearchResults';\nimport getPageSearchResults from './getPageSearchResults';\nimport displayAdditionalSearchResult from './displayAdditionalSearchResult';\nimport displayAdditionalSearchResults from './displayAdditionalSearchResults';\nimport displaySearchResult from './displaySearchResult';\nimport getActiveSearchResult from './getActiveSearchResult';\nimport setActiveSearchResult from './setActiveSearchResult';\nimport textSearchInit from './textSearchInit';\nimport getSearchMode from './getSearchMode';\nimport getResultCode from './getResultCode';\nimport getPageWidth from './getPageWidth';\nimport getPageHeight from './getPageHeight';\nimport getScales from './getScales';\nimport drawAnnotations from './drawAnnotations';\nimport getOutlines from './getOutlines';\nimport getSelectedAnnotations from './getSelectedAnnotations';\nimport updateCopiedAnnotations from './updateCopiedAnnotations';\nimport pasteCopiedAnnotations from './pasteCopiedAnnotations';\nimport selectAnnotation from './selectAnnotation';\nimport selectAnnotations from './selectAnnotations';\nimport addAnnotations from './addAnnotations';\nimport applyRedactions from './applyRedactions';\nimport isCreateRedactionEnabled from './isCreateRedactionEnabled';\nimport isApplyRedactionEnabled from './isApplyRedactionEnabled';\nimport isAnnotationRedactable from './isAnnotationRedactable';\nimport enableRedaction from './enableRedaction';\nimport drawAnnotationsFromList from './drawAnnotationsFromList';\nimport setInternalAnnotationsTransform from './setInternalAnnotationsTransform';\nimport setPagesUpdatedInternalAnnotationsTransform from './setPagesUpdatedInternalAnnotationsTransform';\nimport loadDocument from './loadDocument';\nimport loadThumbnailAsync from './loadThumbnailAsync';\nimport getSelectedTextQuads from './getSelectedTextQuads';\nimport getDisplayModeObject from './getDisplayModeObject';\nimport getScrollViewElement from './getScrollViewElement';\nimport getAnnotationById from './getAnnotationById';\nimport getAnnotationByMouseEvent from './getAnnotationByMouseEvent';\nimport isFullPDFEnabled from './isFullPDFEnabled';\nimport isBlendModeSupported from './isBlendModeSupported';\nimport isAnnotationSelected from './isAnnotationSelected';\nimport setAnnotationStyles from './setAnnotationStyles';\nimport deselectAnnotation from './deselectAnnotation';\nimport deselectAnnotations from './deselectAnnotations';\nimport deselectAllAnnotations from './deselectAllAnnotations';\nimport jumpToAnnotation from './jumpToAnnotation';\nimport insertBlankPages from './insertBlankPages';\nimport createAnnotationReply from './createAnnotationReply';\nimport getIsReadOnly from './getIsReadOnly';\nimport setNoteContents from './setNoteContents';\nimport setAnnotationRichTextStyle from './setAnnotationRichTextStyle';\nimport updateAnnotationRichTextStyle from './updateAnnotationRichTextStyle';\nimport getAnnotationsList from './getAnnotationsList';\nimport getAnnotationsLoadedPromise from './getAnnotationsLoadedPromise';\nimport getPrintablePDF from './getPrintablePDF';\nimport cancelLoadThumbnail from './cancelLoadThumbnail';\nimport showAnnotations from './showAnnotations';\nimport hideAnnotations from './hideAnnotations';\nimport goToOutline from './goToOutline';\nimport getViewerElement from './getViewerElement';\nimport { addEventListener, removeEventListener } from './eventListener';\nimport setAnnotationCanvasTransform from './setAnnotationCanvasTransform';\nimport getAnnotationCopy from './getAnnotationCopy';\nimport setWatermark from './setWatermark';\nimport getWatermark from './getWatermark';\nimport groupAnnotations from './groupAnnotations';\nimport ungroupAnnotations from './ungroupAnnotations';\nimport getNumberOfGroups from './getNumberOfGroups';\nimport getGroupAnnotations from './getGroupAnnotations';\nimport undo from './undo';\nimport redo from './redo';\nimport updateAnnotationState from './updateAnnotationState';\nimport getFontStyles from './getFontStyles';\nimport mergeDocument from './mergeDocument';\nimport getFormFieldCreationManager from './getFormFieldCreationManager';\nimport syncNamespaces from './syncNamespaces';\nimport createDocument from './createDocument';\nimport getContentEditManager from './getContentEditManager';\nimport getTool from './getTool';\nimport { getDocumentViewer, setDocumentViewer, getDocumentViewers, deleteDocumentViewer } from './documentViewers';\nimport setUserBookmarks from './setUserBookmarks';\nimport setBookmarkIconShortcutVisibility from './setBookmarkIconShortcutVisibility';\nimport setBookmarkShortcutToggleOnFunction from './setBookmarkShortcutToggleOnFunction';\nimport setBookmarkShortcutToggleOffFunction from './setBookmarkShortcutToggleOffFunction';\nimport createAndApplyScale from './createAndApplyScale';\nimport replaceScales from './replaceScales';\nimport deleteScale from './deleteScale';\nimport getScalePrecision from './getScalePrecision';\nimport enableAnnotationNumbering from './enableAnnotationNumbering';\nimport getSemanticDiffAnnotations from './getSemanticDiffAnnotations';\nimport loadBlankOfficeEditorDocument from './loadBlankOfficeEditorDocument';\nimport getOfficeEditor from './getOfficeEditor';\nimport isValidURI from './isValidURI';\n\nexport default {\n  getSemanticDiffAnnotations,\n  getDocumentViewers,\n  getDocumentViewer,\n  setDocumentViewer,\n  deleteDocumentViewer,\n  setToolMode,\n  getToolMode,\n  getTool,\n  getToolsFromAllDocumentViewers,\n  setDisplayMode,\n  getDisplayMode,\n  rotateClockwise,\n  rotateCounterClockwise,\n  rotatePages,\n  movePages,\n  removePages,\n  getFitMode,\n  fitToPage,\n  fitToWidth,\n  fitToHeight,\n  fitToZoom,\n  zoomToMouse,\n  getZoom,\n  zoomTo,\n  getAnnotationManager,\n  getTotalPages,\n  getCurrentPage,\n  setCurrentPage,\n  getType,\n  getScales,\n  isWebViewerServerDocument,\n  getSelectedText,\n  clearSelection,\n  closeDocument,\n  getToolModeMap,\n  getCurrentUser,\n  getIsAdminUser,\n  setIsAdminUser,\n  exportAnnotations,\n  setCurrentUser,\n  setReadOnly,\n  setScrollViewElement,\n  setViewerElement,\n  isContinuousDisplayMode,\n  isScrollableDisplayMode,\n  isSearchResultEqual,\n  scrollViewUpdated,\n  canModify,\n  canModifyContents,\n  deleteAnnotations,\n  getDisplayAuthor,\n  getDocument,\n  getCompleteRotation,\n  getRotation,\n  getPageInfo,\n  clearSearchResults,\n  getPageSearchResults,\n  displayAdditionalSearchResult,\n  displayAdditionalSearchResults,\n  getActiveSearchResult,\n  setActiveSearchResult,\n  textSearchInit,\n  displaySearchResult,\n  getSearchMode,\n  getResultCode,\n  getPageWidth,\n  getPageHeight,\n  drawAnnotations,\n  getOutlines,\n  getSelectedAnnotations,\n  updateCopiedAnnotations,\n  pasteCopiedAnnotations,\n  selectAnnotation,\n  selectAnnotations,\n  addAnnotations,\n  applyRedactions,\n  isCreateRedactionEnabled,\n  isApplyRedactionEnabled,\n  isAnnotationRedactable,\n  enableRedaction,\n  drawAnnotationsFromList,\n  setInternalAnnotationsTransform,\n  setPagesUpdatedInternalAnnotationsTransform,\n  loadThumbnailAsync,\n  loadDocument,\n  getSelectedTextQuads,\n  getDisplayModeObject,\n  getScrollViewElement,\n  getAnnotationById,\n  isFullPDFEnabled,\n  isBlendModeSupported,\n  isAnnotationSelected,\n  setAnnotationStyles,\n  deselectAnnotation,\n  deselectAnnotations,\n  deselectAllAnnotations,\n  jumpToAnnotation,\n  insertBlankPages,\n  createAnnotationReply,\n  setNoteContents,\n  setAnnotationRichTextStyle,\n  updateAnnotationRichTextStyle,\n  getAnnotationsList,\n  getAnnotationsLoadedPromise,\n  getPrintablePDF,\n  addEventListener,\n  removeEventListener,\n  getIsReadOnly,\n  cancelLoadThumbnail,\n  showAnnotations,\n  hideAnnotations,\n  goToOutline,\n  getViewerElement,\n  setAnnotationCanvasTransform,\n  getAnnotationCopy,\n  setWatermark,\n  getWatermark,\n  getAnnotationByMouseEvent,\n  groupAnnotations,\n  ungroupAnnotations,\n  getNumberOfGroups,\n  getGroupAnnotations,\n  undo,\n  redo,\n  updateAnnotationState,\n  getFontStyles,\n  mergeDocument,\n  getFormFieldCreationManager,\n  syncNamespaces,\n  createDocument,\n  getContentEditManager,\n  setUserBookmarks,\n  setBookmarkIconShortcutVisibility,\n  setBookmarkShortcutToggleOnFunction,\n  setBookmarkShortcutToggleOffFunction,\n  createAndApplyScale,\n  replaceScales,\n  deleteScale,\n  getScalePrecision,\n  enableAnnotationNumbering,\n  getOfficeEditor,\n  loadBlankOfficeEditorDocument,\n  isValidURI\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getSemanticDiffAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getSemanticDiffAnnotations();","import core from 'core';\n\n/**\n * Set the tool that a user will be using\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @fires toolModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:toolModeUpdated__anchor\n */\nexport default (toolName) => {\n  core.getDocumentViewers().forEach((docViewer) => docViewer.setToolMode(docViewer.getTool(toolName)));\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getToolMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getToolMode();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getTool__anchor\n */\nexport default (toolName, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getTool(toolName);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getTool__anchor\n */\nexport default (toolName) => core.getDocumentViewers().map((documentViewer) => documentViewer.getTool(toolName));\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n * Note that getDisplayMode returns an object and this function returns mode property of that object.\n * If you want to get the object please use getDisplayModeObject\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)?.getDisplayModeManager().getDisplayMode().mode;\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#rotateClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).rotateClockwise();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#rotateCounterClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).rotateCounterClockwise();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#rotatePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.html#event:pagesUpdated__anchor\n */\nexport default (arr, rotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().rotatePages(arr, rotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#movePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pagesUpdated\n */\nexport default (pageArray, newLocation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().movePages(pageArray, newLocation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#removePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pagesUpdated__anchor\n */\nexport default (arr, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().removePages(arr);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getFitMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getFitMode();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitPage);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitWidth);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitHeight);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.Zoom);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#zoomToMouse__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (zoomFactor, documentViewerKey = 1, mouseEvent) => {\n  // left panel width when it's not closed\n  // it still maintains its width when closed\n  const xOffset = document.querySelector('[data-element=leftPanel]:not(.closed)')?.offsetWidth || 0;\n\n  // height of main header and the header tools that may appear below\n  const headerHeight = document.querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = document.querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n\n  core.getDocumentViewer(documentViewerKey).zoomToMouse(zoomFactor, xOffset, yOffset, mouseEvent);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getZoom__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)?.getZoomLevel();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#zoomTo__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (zoomFactor, x, y, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).zoomTo(zoomFactor, x, y);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageCount__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageCount();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getCurrentPage__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getCurrentPage();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setCurrentPage__anchor\n * @fires pageNumberUpdated on DocumentViewer if set to a different page number\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pageNumberUpdated__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).setCurrentPage(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getType__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getType();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#getScales__anchor\n */\nexport default (documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getMeasurementManager().getScales();\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().isWebViewerServerDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getSelectedText__anchor\n */\nexport default (documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getSelectedText();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#clearSelection__anchor\n * @fires textSelected on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:textSelected__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).clearSelection();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#closeDocument__anchor\n * @fires documentUnloaded on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:documentUnloaded__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).closeDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getToolModeMap__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getToolModeMap();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getCurrentUser__anchor\n */\nexport default () => core.getDocumentViewer(1).getAnnotationManager().getCurrentUser();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getIsAdminUser__anchor\n */\nexport default () => core.getDocumentViewer(1).getAnnotationManager().isUserAdmin();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setIsAdminUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default (isAdmin) => {\n  const documentViewers = core.getDocumentViewers();\n  if (isAdmin) {\n    documentViewers.forEach((documentViewer) => documentViewer.getAnnotationManager().promoteUserToAdmin());\n  } else {\n    documentViewers.forEach((documentViewer) => documentViewer.getAnnotationManager().demoteUserFromAdmin());\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#exportAnnotations__anchor\n */\nexport default (options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().exportAnnotations(options);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setCurrentUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default (userName, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setCurrentUser(userName);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#disableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#enableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#disableReadOnlyMode__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @fires readyOnlyModeChanged on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:readOnlyModeChanged__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:readOnlyModeChanged__anchor\n */\nexport default (isReadOnly) => {\n  for (const documentViewer of core.getDocumentViewers()) {\n    if (isReadOnly) {\n      documentViewer.getAnnotationManager().enableReadOnlyMode();\n      documentViewer.enableReadOnlyMode();\n    } else {\n      documentViewer.getAnnotationManager().disableReadOnlyMode();\n      documentViewer.disableReadOnlyMode();\n    }\n  }\n};\n","import core from 'core';\n\n/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default (element, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setScrollViewElement(element);\n};\n","import core from 'core';\n\n/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default (element, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setViewerElement(element);\n};\n","import core from 'core';\n\n/**\n * @see displayModeObjects.js for more information\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode().isContinuous();\n","import core from 'core';\n\n/**\n * @see displayModeObjects.js for more information\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode().IsScrollable();\n","export default (resultA, resultB) => window.Core.Search.isSearchResultEqual(resultA, resultB);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#scrollViewUpdated__anchor\n */\nexport default (documentViewerKey) => {\n  if (!documentViewerKey) {\n    core.getDocumentViewers().forEach((documentViewer) => {\n      documentViewer.scrollViewUpdated();\n    });\n  } else {\n    core.getDocumentViewer(documentViewerKey).scrollViewUpdated();\n  }\n};\n","import core from 'core';\n\n/**\n * Whether or not the current user can modify the annotation.\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().canModify(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#canModifyContents__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().canModifyContents(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deleteAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * @fires deleteReply on AnnotationManager if the annotation deleted is a reply\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:deleteReply__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires notify on DocumentViewer if requires delete notification\n */\nexport default (annotation, options = undefined, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deleteAnnotations(annotation, options);\n};\n","import core from 'core';\n\n/**\n * Annotations may set the author to a unique id which isn't suitable for display in the UI.\n * this function gets the author name of the annotation that should be displayed based on a unique userID/GUID.\n */\nexport default (userId, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getDisplayAuthor(userId);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getDocument__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getCompleteRotation__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getCompleteRotation(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getRotation__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getRotation(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getPageInfo__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getPageInfo(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#clearSearchResults__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).clearSearchResults();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageSearchResults__anchor\n */\nexport default function getPageSearchResults(pageNumber, documentViewerKey = 1) {\n  return core.getDocumentViewer(documentViewerKey).getPageSearchResults(pageNumber);\n}\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResult__anchor\n */\nexport default (result, documentViewerKey) => {\n  core.getDocumentViewer(documentViewerKey).displayAdditionalSearchResult(result);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResults__anchor\n */\nexport default (results, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displayAdditionalSearchResults(results);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getActiveSearchResult__anchor\n */\nexport default function getActiveSearchResult(documentViewerKey = 1) {\n  return core.getDocumentViewer(documentViewerKey).getActiveSearchResult();\n}\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#textSearchInit__anchor\n */\nexport default (searchValue, searchMode, isFullSearch, handleSearchResult, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).textSearchInit(searchValue, searchMode, isFullSearch, handleSearchResult);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displaySearchResult__anchor\n */\nexport default (result, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displaySearchResult(result);\n};\n","export default () => window.Core.Search.Mode;\n","export default () => window.Core.Search.ResultCode;\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageWidth__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageWidth(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageHeight__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageHeight(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#drawAnnotations__anchor\n */\nexport default (pageNumber, overrideCanvas, majorRedraw, overrideContainer, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)\n  .getAnnotationManager()\n  .drawAnnotations(\n    pageNumber,\n    overrideCanvas,\n    majorRedraw,\n    overrideContainer,\n  );\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getBookmarks__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getDocument().getBookmarks().then((outlines) => {\n    callback(outlines);\n  });\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getSelectedAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getSelectedAnnotations();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#updateCopiedAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().updateCopiedAnnotations();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#pasteCopiedAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * AnnotationSelected will be fired at most twice:\n * it will be fired with deselect action if you selected any annotations before paste\n * it will be fired with select action after the annotation is pasted\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().pasteCopiedAnnotations();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#selectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().selectAnnotation(annotation);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#selectAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().selectAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#addAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().addAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#applyRedactions__anchor\n * If the redaction annotations overlap with other annotations, it calls deleteAnnotations on the other annotations.\n * See deleteAnnotations.js for any events that are trigger by delete annotations\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().applyRedactions(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isCreateRedactionEnabled__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#isCreateRedactionEnabled__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isCreateRedactionEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isApplyRedactionEnabled__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:isApplyRedactionEnabled__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isApplyRedactionEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isAnnotationRedactable__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:isAnnotationRedactable__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isAnnotationRedactable(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableRedaction__anchor\n */\nexport default (enable) => {\n  if (enable) {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().enableRedaction());\n  } else {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().disableRedaction());\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#drawAnnotationsFromList__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().drawAnnotationsFromList(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setInternalAnnotationsTransform__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setInternalAnnotationsTransform(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setPagesUpdatedInternalAnnotationsTransform__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setPagesUpdatedInternalAnnotationsTransform(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#loadThumbnailAsync\n * RequestId will be used if we cancel that thumbnail loading\n */\nexport default (pageNum, callback, documentViewerKey = 1) => {\n  const requestId = core.getDocumentViewer(documentViewerKey).getDocument().loadThumbnail(pageNum, (thumb) => {\n    callback(thumb);\n  });\n  return requestId;\n};\n","import core from 'core';\n\nexport default (src, options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).loadDocument(src, options);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getSelectedTextQuads__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getSelectedTextQuads();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode();\n","import core from 'core';\n\n/**\n * Return the scroll view element set when document is loaded\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getScrollViewElement();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getAnnotationById__anchor\n */\nexport default (Id, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationById(Id);\n","/**\n * https://docs.apryse.com/api/web/Core.html#.isFullPDFEnabled\n */\nexport default () => window.Core.isFullPDFEnabled();\n","/**\n * https://docs.apryse.com/api/web/Core.html#isBlendModeSupported__anchor\n * @see https://docs.apryse.com/api/web/Core.html#isBlendModeSupported__anchor\n */\nexport default (type) => window.Core.isBlendModeSupported(type);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isAnnotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isAnnotationSelected(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationStyles__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, newStyles, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationStyles(annotation, newStyles);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deselectAnnotation(annotation);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deselectAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAllAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default () => {\n  core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().deselectAllAnnotations());\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#jumpToAnnotationd__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().jumpToAnnotation(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#insertblankpages\n */\nexport default (insertBeforeThesePages, width, height, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().insertBlankPages(insertBeforeThesePages, width, height);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#createAnnotationReply__anchor\n * @fires addReply on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:addReply__anchor\n */\nexport default (annotation, reply, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().createAnnotationReply(annotation, reply);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setNoteContents__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, content, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setNoteContents(annotation, content);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationRichTextStyle__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, style, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationRichTextStyle(annotation, style);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#updateAnnotationRichTextStyle__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().updateAnnotationRichTextStyle(annotation, callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getAnnotationsList__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationsList();\n","import core from 'core';\n\n/**\n * Gets a promise that resolves when the annotations in the current document have all been loaded\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationsLoadedPromise();\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getPrintablePDF();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getReadOnly__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isReadOnlyModeEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#cancelLoadThumbnail__anchor\n */\nexport default (requestId, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().cancelLoadThumbnail(requestId);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#showAnnotations__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().showAnnotations(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#hideAnnotations__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().hideAnnotations(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayBookmark__anchor\n */\nexport default (outline, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displayBookmark(outline);\n};\n","import core from 'core';\n\n/**\n * Return the viewer element. It is the div with class name \"document\" in DocumentContainer.js\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getViewerElement();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n */\nexport default (annotCanvasContext, zoom, rotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationCanvasTransform(annotCanvasContext, zoom, rotation);\n};\n","import core from 'core';\n\nexport default (annotation) => core.getDocumentViewer(1).getAnnotationManager().getAnnotationCopy(annotation);","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setWatermark__anchor\n */\nexport default (watermarkOptions, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).setWatermark(watermarkOptions);\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getWatermark();\n","import core from 'core';\n\nexport default (e, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationByMouseEvent(e);\n","import core from 'core';\n\nexport default (primaryAnnotation, annotationsToGroup, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().groupAnnotations(\n  primaryAnnotation,\n  annotationsToGroup,\n);\n","import core from 'core';\n\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().ungroupAnnotations(annotations);\n","import core from 'core';\n\nexport default (annotations, documentViewerKey) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getNumberOfGroups(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getGroupAnnotations__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getAnnotationManager().getGroupAnnotations(annotation);\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationHistoryManager().undo();\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationHistoryManager().redo();\n};\n","import core from 'core';\n\nexport default (annotation, state, stateModel, message, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)\n  .getAnnotationManager()\n  .updateAnnotationState(annotation, state, stateModel, message);\n","export default () => window.Core.FontStyles;\n","import getAnnotationManager from './getAnnotationManager';\n\nexport default (documentViewerKey = 1) => {\n  const annotManager = getAnnotationManager(documentViewerKey);\n  return annotManager.getFormFieldCreationManager();\n};\n","/**\n * https://docs.apryse.com/api/web/Core.html#.syncNamespaces__anchor\n */\nexport default (namespaces) => window.Core.syncNamespaces(namespaces);\n","/**\n * https://docs.apryse.com/api/web/Core.html#.createDocument\n */\nexport default (sourceDoc, docOptions) => {\n  return window.Core.createDocument(sourceDoc, docOptions);\n};\n","import core from 'core';\n\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getContentEditManager();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setUserBookmarks__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setUserBookmarks__anchor\n */\nexport default (bookmarks, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setUserBookmarks(bookmarks);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkIconShortcutVisibility__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkIconShortcutVisibility__anchor\n */\nexport default (isEnabled, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkIconShortcutVisibility(isEnabled);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOnFunction__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOnFunction__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkShortcutToggleOnFunction(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOffFunction__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOffFunction__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkShortcutToggleOffFunction(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#createScale__anchor\n */\nexport default (scale, applyTo, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().createAndApplyScale({ scale, applyTo });\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#replaceScales__anchor\n */\nexport default (originalScales, scale, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().replaceScales(originalScales, scale);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#deleteScale__anchor\n */\nexport default (scale, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().deleteScale(scale);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#getScalePrecision__anchor\n */\nexport default (scale, documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getMeasurementManager().getScalePrecision(scale);\n};\n","import getAnnotationManager from './getAnnotationManager';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableAnnotationNumbering__anchor\n */\nexport default (documentViewerKey = 1) => {\n  getAnnotationManager(documentViewerKey).enableAnnotationNumbering();\n};","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getOfficeEditor();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#loadBlankOfficeEditorDocument\n */\nexport default (options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).loadBlankOfficeEditorDocument(options);\n","import core from 'core';\n\nexport default () => core.isValidURI;","import * as exposedActions from './exposedActions';\nimport * as internalActions from './internalActions';\n\nexport default { ...exposedActions, ...internalActions };","import * as exposedSelectors from './exposedSelectors';\n\nexport default exposedSelectors;","/**\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","// TODO - Add more here\nconst DataElements = {\n  LEGACY_RICH_TEXT_POPUP: 'legacyRichTextPopup',\n  ANNOTATION_NOTE_CONNECTOR_LINE: 'annotationNoteConnectorLine',\n  ANNOTATION_STYLE_POPUP: 'annotationStylePopup',\n  ANNOTATION_STYLE_POPUP_BACK_BUTTON: 'annotationStylePopupBackButton',\n  ANNOTATION_STYLE_POPUP_BACK_BUTTON_CONTAINER: 'annotationStylePopupBackButtonContainer',\n  INLINE_COMMENT_POPUP_EXPAND_BUTTON: 'inlineCommentPopupExpandButton',\n  INLINE_COMMENT_POPUP_CLOSE_BUTTON: 'inlineCommentPopupCloseButton',\n\n  LOGO_BAR: 'logoBar',\n  COLOR_PALETTE: 'colorPalette',\n  OPACITY_SLIDER: 'opacitySlider',\n  STROKE_THICKNESS_SLIDER: 'strokeThicknessSlider',\n  FONT_SIZE_SLIDER: 'fontSizeSlider',\n  STYLE_OPTION: 'styleOption',\n  STYLE_POPUP: 'stylePopup',\n  SCALE_INPUT_CONTAINER: 'scaleInputContainer',\n  PRECISION_INPUT_CONTAINER: 'precisionInputContainer',\n  STYLE_POPUP_TEXT_STYLE_CONTAINER: 'stylePopupTextStyleContainer',\n  STYLE_POPUP_COLORS_CONTAINER: 'stylePopupColorsContainer',\n  STYLE_POPUP_LABEL_TEXT_CONTAINER: 'stylePopupLabelTextContainer',\n  REDACTION_PANEL: 'redactionPanel',\n  REDACTION_PANEL_TOGGLE: 'redactionPanelToggle',\n  WV3D_PROPERTIES_PANEL: 'wv3dPropertiesPanel',\n  WV3D_PROPERTIES_PANEL_TOGGLE: 'wv3dPropertiesPanelToggle',\n  LEFT_PANEL: 'leftPanel',\n  OUTLINE_PANEL: 'outlinesPanel',\n  OUTLINE_MULTI_SELECT: 'outlineMultiSelect',\n  OUTLINE_CONTROLS: 'outlineControls',\n  OUTLINE_ADD_NEW_BUTTON_CONTAINER: 'addNewOutlineButtonContainer',\n  OUTLINE_ADD_NEW_BUTTON: 'addNewOutlineButton',\n  OUTLINE_MOVE_UP_BUTTON: 'moveOutlineUpButton',\n  OUTLINE_MOVE_DOWN_BUTTON: 'moveOutlineDownButton',\n  OUTLINE_MOVE_OUTWARD_BUTTON: 'moveOutlineOutwardButton',\n  OUTLINE_MOVE_INWARD_BUTTON: 'moveOutlineInwardButton',\n  BOOKMARK_PANEL: 'bookmarksPanel',\n  BOOKMARK_MULTI_SELECT: 'bookmarkMultiSelect',\n  BOOKMARK_SHORTCUT_OPTION: 'bookmarkShortcutOption',\n  BOOKMARK_ADD_NEW_BUTTON_CONTAINER: 'addNewBookmarkButtonContainer',\n  BOOKMARK_ADD_NEW_BUTTON: 'addNewBookmarkButton',\n  NOTES_PANEL: 'notesPanel',\n  FORM_FIELD_INDICATOR_CONTAINER: 'formFieldIndicatorContainer',\n  WATERMARK_PANEL: 'watermarkPanel',\n  WATERMARK_PANEL_TOGGLE: 'watermarkPanelToggle',\n  WATERMARK_PANEL_IMAGE_TAB: 'watermarkPanelImageTab',\n  WATERMARK_PANEL_TEXT_TAB: 'watermarkPanelTextTab',\n  SEARCH_PANEL: 'searchPanel',\n  TEXT_EDITING_PANEL: 'textEditingPanel',\n  COMPARE_PANEL: 'comparePanel',\n  PORTFOLIO_PANEL: 'portfolioPanel',\n  PORTFOLIO_PANEL_BUTTON: 'portfolioPanelButton',\n  PORTFOLIO_ADD_FILE: 'portfolioAddFile',\n  PORTFOLIO_ADD_FOLDER: 'portfolioAddFolder',\n  PORTFOLIO_ADD_NEW_BUTTON: 'portfolioAddNewButton',\n  CALIBRATION_POPUP_BUTTON: 'calibratePopupButton',\n  CALIBRATION_MODAL: 'calibrationModal',\n\n  NotesPanel: {\n    DefaultHeader: {\n      INPUT_CONTAINER: 'notesPanelHeader-inputContainer',\n      COMMENTS_COUNTER: 'notesPanelHeader-commentsCounter',\n      SORT_ROW: 'notesPanelHeader-sortRow'\n    },\n    ADD_REPLY_ATTACHMENT_BUTTON: 'addReplyAttachmentButton'\n  },\n  MULTITABS_EMPTY_PAGE: 'multiTabsEmptyPage',\n\n  // Overlays\n  SCALE_OVERLAY_CONTAINER: 'scaleOverlayContainer',\n  MEASUREMENT_OVERLAY: 'measurementOverlay',\n  VIEW_CONTROLS_OVERLAY: 'viewControlsOverlay',\n  VIEW_CONTROLS_OVERLAY_BUTTON: 'viewControlsButton',\n  SEARCH_OVERLAY: 'searchOverlay',\n  MENU_OVERLAY: 'menuOverlay',\n  MENU_OVERLAY_BUTTON: 'menuButton',\n  ZOOM_OVERLAY: 'zoomOverlay',\n  ZOOM_OVERLAY_BUTTON: 'zoomOverlayButton',\n  PAGE_MANIPULATION_OVERLAY: 'pageManipulationOverlay',\n  PAGE_MANIPULATION_OVERLAY_BUTTON: 'pageManipulationOverlayButton',\n  TOOLS_OVERLAY: 'toolsOverlay',\n  STAMP_OVERLAY: 'stampOverlay',\n  SIGNATURE_OVERLAY: 'signatureOverlay',\n  REDACTION_OVERLAY: 'redactionOverlay',\n  ANNOTATION_CONTENT_OVERLAY: 'annotationContentOverlay',\n  THUMBNAILS_CONTROL_ROTATE_POPUP: 'thumbnailsControlRotatePopup',\n  THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER: 'thumbnailsControlRotatePopupTrigger',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP: 'thumbnailsControlManipulatePopup',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER: 'thumbnailsControlManipulatePopupTrigger',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL: 'thumbnailsControlManipulatePopupSmall',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER: 'thumbnailsControlManipulatePopupSmallTrigger',\n\n  // Stamps overlay\n  RUBBER_STAMP_TAB_HEADER: 'rubberStampTabHeader',\n  STANDARD_STAMPS_PANEL_BUTTON: 'standardStampPanelButton',\n  CUSTOM_STAMPS_PANEL_BUTTON: 'customStampPanelButton',\n  STANDARD_STAMPS_PANEL: 'standardStampPanel',\n  CUSTOM_STAMPS_PANEL: 'customStampPanel',\n  CREATE_CUSTOM_STAMP_BUTTON: 'createCustomStampButton',\n  DELETE_CUSTOM_STAMP_BUTTON: 'deleteCustomStampButton',\n\n  // Popups\n  ANNOTATION_POPUP: 'annotationPopup',\n  FORM_FIELD_EDIT_POPUP: 'formFieldEditPopup',\n  TEXT_POPUP: 'textPopup',\n  CONTEXT_MENU_POPUP: 'contextMenuPopup',\n  INLINE_COMMENT_POPUP: 'inlineCommentPopup',\n  TOOL_STYLE_POPUP: 'toolStylePopup',\n  RICH_TEXT_POPUP: 'richTextPopup',\n  AUDIO_PLAYBACK_POPUP: 'audioPlaybackPopup',\n  DOCUMENT_CROP_POPUP: 'documentCropPopup',\n  SNIPPING_TOOL_POPUP: 'snippingToolPopup',\n\n  // Modals\n  PAGE_REDACT_MODAL: 'pageRedactionModal',\n  LINK_MODAL: 'linkModal',\n  LANGUAGE_MODAL: 'languageModal',\n  FILTER_MODAL: 'filterModal',\n  CONTENT_EDIT_LINK_MODAL: 'contentEditLinkModal',\n  SCALE_MODAL: 'scaleModal',\n  INSERT_PAGE_MODAL: 'insertPageModal',\n  SETTINGS_MODAL: 'settingsModal',\n  SAVE_MODAL: 'saveModal',\n  PRINT_MODAL: 'printModal',\n  SIGNATURE_MODAL: 'signatureModal',\n  SIGNATURE_VALIDATION_MODAL: 'signatureValidationModal',\n  ERROR_MODAL: 'errorModal',\n  PASSWORD_MODAL: 'passwordModal',\n  CUSTOM_STAMP_MODAL: 'customStampModal',\n  PAGE_REPLACEMENT_MODAL: 'pageReplacementModal',\n  LOADING_MODAL: 'loadingModal',\n  PROGRESS_MODAL: 'progressModal',\n  WARNING_MODAL: 'warningModal',\n  MODEL3D_MODAL: 'Model3DModal',\n  COLOR_PICKER_MODAL: 'ColorPickerModal',\n  OPEN_FILE_MODAL: 'OpenFileModal',\n  CUSTOM_MODAL: 'customModal',\n  CREATE_PORTFOLIO_MODAL: 'createPortfolioModal',\n\n  // Filter modal\n  ANNOTATION_USER_FILTER_PANEL_BUTTON: 'annotationUserFilterPanelButton',\n  ANNOTATION_COLOR_FILTER_PANEL_BUTTON: 'annotationColorFilterPanelButton',\n  ANNOTATION_TYPE_FILTER_PANEL_BUTTON: 'annotationTypeFilterPanelButton',\n  ANNOTATION_STATUS_FILTER_PANEL_BUTTON: 'annotationStatusFilterPanelButton',\n\n  // Settings modal\n  SETTINGS_GENERAL_BUTTON: 'settingsGeneralButton',\n  SETTINGS_KEYBOARD_BUTTON: 'settingsKeyboardButton',\n  SETTINGS_ADVANCED_BUTTON: 'settingsAdvancedButton',\n  SETTINGS_LANGUAGE_SECTION: 'settingsLanguageSection',\n  SETTINGS_LANGUAGE_DROPDOWN: 'settingsLanguageDropdown',\n  SETTINGS_THEME_SECTION: 'settingsThemeSection',\n\n  // Create portfolio modal\n  PORTFOLIO_UPLOAD_FILES_TAB: 'portfolioUploadFilesTab',\n  PORTFOLIO_UPLOAD_FOLDER_TAB: 'portfolioUploadFolderTab',\n  PORTFOLIO_MODAL_ADD_ITEM_TRIGGER: 'portfolioModalAddItemTrigger',\n\n  // Signature Modal\n  SAVED_SIGNATURES_TAB: 'signatureModalSavedSignaturesTab',\n\n  // Notes panel - multi select\n  NOTE_MULTI_SELECT_MODE_BUTTON: 'multiSelectModeButton',\n  NOTE_MULTI_REPLY_BUTTON: 'multiReplyButton',\n  NOTE_MULTI_STATE_BUTTON: 'multiStateButton',\n  NOTE_MULTI_STYLE_BUTTON: 'multiStyleButton',\n  NOTE_MULTI_GROUP_BUTTON: 'multiGroupButton',\n  NOTE_MULTI_UNGROUP_BUTTON: 'multiUngroupButton',\n  NOTE_MULTI_DELETE_BUTTON: 'multiDeleteButton',\n\n  // Saved Signatures overlay\n  SAVED_SIGNATURES_PANEL_BUTTON: 'savedFullSignaturePanelButton',\n  SAVED_INTIALS_PANEL_BUTTON: 'savedInitialsPanelButton',\n  SAVED_FULL_SIGNATURES_PANEL: 'savedFullSignaturePanel',\n  SAVED_INITIALS_PANEL: 'savedInitialsPanel',\n\n  // MultiViewer Mode (MultiViewer)\n  MULTI_VIEWER_SAVE_DOCUMENT_BUTTON: 'multiViewerSaveDocumentButton',\n\n  // Office Editor\n  OFFICE_EDITOR_TOOLS_HEADER: 'officeEditorToolsHeader',\n  OFFICE_EDITOR_TOOLS_HEADER_INSERT_IMAGE: 'officeEditorToolsHeaderInsertImage',\n  OFFICE_EDITOR_FILE_NAME: 'officeEditorFileName',\n\n  // Insert Page Modal tabs\n  INSERT_BLANK_PAGE_TAB: 'insertBlankPagePanelButton',\n  INSERT_FROM_FILE_TAB: 'insertUploadedPagePanelButton',\n  INSERT_BLANK_PAGE_PANEL: 'insertBlankPagePanel',\n  INSERT_FROM_FILE_PANEL: 'insertUploadedPagePanel',\n\n  // Toolbar groups/Ribbons\n  VIEW_TOOLBAR_GROUP: 'toolbarGroup-View',\n  ANNOTATE_TOOLBAR_GROUP: 'toolbarGroup-Annotate',\n  SHAPES_TOOLBAR_GROUP: 'toolbarGroup-Shapes',\n  REDACT_TOOLBAR_GROUP: 'toolbarGroup-Redact',\n  INSERT_TOOLBAR_GROUP: 'toolbarGroup-Insert',\n  MEASURE_TOOLBAR_GROUP: 'toolbarGroup-Measure',\n  EDIT_TOOLBAR_GROUP: 'toolbarGroup-Edit',\n  EDIT_TEXT_TOOLBAR_GROUP: 'toolbarGroup-EditText',\n  FILL_AND_SIGN_TOOLBAR_GROUP: 'toolbarGroup-FillAndSign',\n  FORMS_TOOLBAR_GROUP: 'toolbarGroup-Forms',\n\n  TOOLBAR_GROUPS: [],\n\n  // Menu overlay items\n  CREATE_PORTFOLIO_BUTTON: 'createPortfolioButton',\n\n  // Print modal\n  PRINT_QUALITY: 'printQuality',\n  PRINT_WATERMARK: 'printWatermark',\n};\n\nDataElements.TOOLBAR_GROUPS = [\n  DataElements.VIEW_TOOLBAR_GROUP,\n  DataElements.ANNOTATE_TOOLBAR_GROUP,\n  DataElements.SHAPES_TOOLBAR_GROUP,\n  DataElements.REDACT_TOOLBAR_GROUP,\n  DataElements.INSERT_TOOLBAR_GROUP,\n  DataElements.MEASURE_TOOLBAR_GROUP,\n  DataElements.EDIT_TOOLBAR_GROUP,\n  DataElements.EDIT_TEXT_TOOLBAR_GROUP,\n  DataElements.FILL_AND_SIGN_TOOLBAR_GROUP,\n  DataElements.FORMS_TOOLBAR_GROUP,\n];\n\nexport default DataElements;\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);\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 };","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n  var symbolToString = uncurryThis(SymbolPrototype.toString);\n  var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineProperty(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = symbolValueOf(this);\n      var string = symbolToString(symbol);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return un$Slice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es-x/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from 'components/Tooltip';\nimport Icon from 'components/Icon';\nimport { shortcutAria } from 'helpers/hotkeysManager';\nimport selectors from 'selectors';\nimport { getClickMiddleWare, ClickedItemTypes } from 'helpers/clickTracker';\n\nimport './Button.scss';\n\nconst NOOP = (e) => {\n  e?.stopPropagation();\n  e?.preventDefault();\n};\n\nconst propTypes = {\n  isActive: PropTypes.bool,\n  mediaQueryClassName: PropTypes.string,\n  img: PropTypes.string,\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  title: PropTypes.string,\n  color: PropTypes.string,\n  dataElement: PropTypes.string,\n  className: PropTypes.string,\n  onClick: PropTypes.func,\n  onDoubleClick: PropTypes.func,\n  onMouseUp: PropTypes.func,\n  isSubmitType: PropTypes.bool,\n  /** Will override translated title if both given. */\n  ariaLabel: PropTypes.string,\n  role: PropTypes.string,\n  hideTooltipShortcut: PropTypes.bool,\n  useI18String: PropTypes.bool,\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: PropTypes.bool,\n};\n\nconst Button = (props) => {\n  const [removeElement, customOverrides = {}, activeDocumentViewerKey = 1] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, props.dataElement),\n      selectors.getCustomElementOverrides(state, props.dataElement),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const {\n    // old name for disabled. We are keeping it for backwards compatibility\n    // should remove in the future .\n    disable,\n    disabled,\n    isActive,\n    mediaQueryClassName,\n    img,\n    tabIndex,\n    label,\n    useI18String = true,\n    color,\n    dataElement,\n    onClick,\n    onDoubleClick,\n    onMouseUp,\n    className,\n    title,\n    style,\n    ariaLabel,\n    role,\n    strokeColor,\n    fillColor,\n    hideTooltipShortcut,\n    iconClassName,\n    forceTooltipPosition,\n    isSubmitType,\n    hideOnClick,\n    shouldPassActiveDocumentViewerKeyToOnClickHandler,\n    onClickAnnouncement,\n  } = { ...props, ...customOverrides };\n  const [t] = useTranslation();\n\n  const customOverrideClasses = {};\n  if (customOverrides && customOverrides.hidden && customOverrides.hidden.length) {\n    for (const screenSize of customOverrides.hidden) {\n      customOverrideClasses[`hide-in-${screenSize}`] = true;\n    }\n  }\n\n  const aLabel = ariaLabel || (title ? t(title) : undefined);\n\n  const shortcutKey = title ? title.slice(title.indexOf('.') + 1) : undefined;\n  const ariaKeyshortcuts = shortcutKey ? shortcutAria(shortcutKey) : undefined;\n\n  const isBase64 = img?.trim().startsWith('data:');\n\n  const imgToShow = img;\n\n  const createAnnouncement = () => {\n    if (onClickAnnouncement) {\n      const el = document.createElement('div');\n      const id = `speak-${Date.now()}`;\n      el.setAttribute('id', id);\n      el.setAttribute('aria-live', 'assertive');\n      el.classList.add('visually-hidden');\n      document.body.appendChild(el);\n\n      window.setTimeout(function() {\n        document.getElementById(id).innerText = onClickAnnouncement;\n      }, 100);\n\n      window.setTimeout(function() {\n        document.body.removeChild(document.getElementById(id));\n      }, 1000);\n    }\n  };\n\n  // for backwards compatibility\n  const actuallyDisabled = disable || disabled;\n  let onClickHandler;\n  if (shouldPassActiveDocumentViewerKeyToOnClickHandler) {\n    onClickHandler = () => {\n      createAnnouncement();\n      getClickMiddleWare()?.(dataElement, { type: ClickedItemTypes.BUTTON });\n      if (onClick) {\n        return onClick(activeDocumentViewerKey);\n      }\n    };\n  } else {\n    onClickHandler = (e) => {\n      createAnnouncement();\n      getClickMiddleWare()?.(dataElement, { type: ClickedItemTypes.BUTTON });\n      if (onClick) {\n        return onClick(e);\n      }\n    };\n  }\n\n  // if there is no file extension then assume that this is a glyph\n  const isGlyph =\n    img && !isBase64 && (!img.includes('.') || img.startsWith('<svg'));\n  const shouldRenderTooltip = !!title;\n  const children = (\n    <button\n      className={classNames({\n        Button: true,\n        active: isActive && !actuallyDisabled,\n        disabled: actuallyDisabled,\n        [mediaQueryClassName]: mediaQueryClassName,\n        [className]: className,\n        ...customOverrideClasses,\n      })}\n      style={style}\n      data-element={dataElement}\n      // Can't use button disabled property here.\n      // Because mouse events won't fire and we want them to\n      // so that we can show the button tooltip\n      onClick={actuallyDisabled ? NOOP : onClickHandler}\n      onDoubleClick={actuallyDisabled ? NOOP : onDoubleClick}\n      onMouseUp={actuallyDisabled ? NOOP : onMouseUp}\n      aria-label={aLabel}\n      role={role}\n      tabIndex={tabIndex}\n      aria-keyshortcuts={ariaKeyshortcuts}\n      type={isSubmitType ? 'submit' : 'button'}\n      disabled={actuallyDisabled}\n    >\n      {isGlyph && (\n        <Icon\n          disabled={actuallyDisabled}\n          glyph={imgToShow}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          className={iconClassName}\n        />\n      )}\n      {imgToShow && !isGlyph && <img src={imgToShow} />}\n      {\n        label && (useI18String ?\n          <span>{t(label)}</span> :\n          <span>{label}</span>)\n      }\n    </button>\n  );\n\n  return removeElement ? null : shouldRenderTooltip ? (\n    <Tooltip\n      content={title}\n      hideShortcut={hideTooltipShortcut || actuallyDisabled}\n      forcePosition={forceTooltipPosition}\n      hideOnClick={hideOnClick}\n    >\n      {children}\n    </Tooltip>\n  ) : (\n    children\n  );\n};\n\nButton.propTypes = propTypes;\n\nexport default React.memo(Button);\n","import Button from './Button';\n\nexport default Button;","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","let rootNode;\n\nconst getRootNode = () => {\n  if (!window.isApryseWebViewerWebComponent) {\n    return document;\n  }\n  if (rootNode) {\n    return rootNode;\n  }\n  const elementList = document.getElementsByTagName('apryse-webviewer');\n  if (elementList?.length) {\n    for (const element of elementList) {\n      const foundNode = element.shadowRoot;\n      if (foundNode && !foundNode.mounted) {\n        foundNode.mounted = true;\n        rootNode = foundNode;\n        return rootNode;\n      }\n    }\n  }\n  console.error('Cannot find root node');\n};\n\nexport const getInstanceID = () => {\n  const host = getRootNode().host;\n  return host ? host.getAttribute('id') : 'default';\n};\n\nexport const getInstanceNode = () => {\n  if (!window.isApryseWebViewerWebComponent) {\n    return window;\n  }\n  return rootNode ? rootNode.host : getRootNode().host;\n};\n\nexport default getRootNode;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n","const PLACEMENT = {\n  TOP: 'top',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  RIGHT: 'right',\n};\n\nconst POSITION = {\n  START: 'start',\n  CENTER: 'center',\n  END: 'end',\n};\n\nconst JUSTIFY_CONTENT = {\n  START: 'start',\n  CENTER: 'center',\n  END: 'end',\n  SPACE_BETWEEN: 'space-between',\n  SPACE_AROUND: 'space-around',\n  SPACE_EVENLY: 'space-evenly',\n};\n\nconst DIRECTION = {\n  ROW: 'row',\n  COLUMN: 'column',\n};\n\nconst ITEM_TYPE = {\n  BUTTON: 'customButton',\n  STATEFUL_BUTTON: 'statefulButton',\n  GROUPED_ITEMS: 'groupedItems',\n  GROUPED_TOOLS: 'groupedTools',\n  RIBBON_ITEM: 'ribbonItem',\n  DIVIDER: 'divider',\n  TOGGLE_BUTTON: 'toggleButton',\n  RIBBON_GROUP: 'ribbonGroup',\n  TOOL_GROUP_BUTTON: 'toolGroupButton',\n  TOOL_BUTTON: 'toolButton',\n  ZOOM: 'zoom',\n  FLYOUT: 'flyout',\n};\n\nconst OPACITY_MODES = {\n  STATIC: 'static',\n  DYANMIC: 'dynamic',\n};\n\nconst OPACITY_LEVELS = {\n  FULL: 'full',\n  LOW: 'low',\n  NONE: 'none',\n};\n\nconst DEFAULT_STYLES = {\n  PADDING: 8,\n  WIDTH: 1,\n  BORDER_COLOR: 'var(--gray-5)',\n  BORDER_STYLE: 'solid',\n};\n\nconst DEFAULT_GAP = 12;\n\nexport {\n  PLACEMENT,\n  POSITION,\n  JUSTIFY_CONTENT,\n  DIRECTION,\n  ITEM_TYPE,\n  DEFAULT_GAP,\n  OPACITY_LEVELS,\n  OPACITY_MODES,\n  DEFAULT_STYLES,\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\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\n  return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Contains string enums for all features for WebViewer UI\n * @name UI.Feature\n * @property {string} Measurement Measurement tools that can create annotations to measure distance, perimeter and area.\n * @property {string} Ribbons A collection of toolbar groups to switch between.\n * @property {string} Annotations Render annotations in the document and be able to edit them.\n * @property {string} Download A download button to download the current document.\n * @property {string} FilePicker Ctrl/Cmd + O hotkey and a open file button that can be clicked to load local files.\n * @property {string} LocalStorage Store and retrieve tool styles from window.localStorage.\n * @property {string} NotesPanel A panel that displays information of listable annotations.\n * @property {string} InlineComment A popup that allows to directly comment on the annotation when an annotation is selected.\n * @property {string} RightClickAnnotationPopup Ability to open the annotation menu popup on right click.\n * @property {string} Print Ctrl/Cmd + P hotkey and a print button that can be clicked to print the current document.\n * @property {string} Redaction Redaction tools that can redact text or areas. Need fullAPI to be on to use this feature.\n * @property {string} TextSelection Ability to select text in a document.\n * @property {string} TouchScrollLock Lock document scrolling in one direction in mobile devices.\n * @property {string} Copy Ability to copy text or annotations use Ctrl/Cmd + C hotkeys or the copy button.\n * @property {string} MultipleViewerMerging Ability to drag and drop pages from one instance of WebViewer into another\n * @property {string} ThumbnailMerging Ability to drag and drop a file into the thumbnail panel to merge\n * @property {string} ThumbnailReordering Ability to reorder pages using the thumbnail panel\n * @property {string} PageNavigation Ability to navigate through pages using mouse wheel, arrow up/down keys and the swipe gesture.\n * @property {string} MouseWheelZoom Ability to zoom when holding ctrl/cmd + mouse wheel.\n * @property {string} Search Ctrl/Cmd + F hotkey and a search button that can be clicked to search the current document.\n * @property {string} MathSymbols Ability to add math symbols in free text editor\n * @property {string} OutlineEditing Ability to add, move and delete outlines in the outlines panel. This feature is only available when `fullAPI: true` is used.\n * @property {string} NotesPanelVirtualizedList Ability to use a virtualized list in the note panel. Will limit the number of notes rendered on the DOM\n * @property {string} NotesShowLastUpdatedDate Show last updated date in notes panel instead of created date\n * @property {string} MultiTab toggle feature to open multiple documents in the same viewer instance\n * @property {string} MultiViewerMode toggle feature to activate 2 viewers in Compare Mode. Note that this property name is deprecated. Please use the enterMultiViewerMode and exitMultiViewerMode functions instead.\n * @property {string} SideBySideView toggle feature to show Side-by-side view in view controls dropdown\n * @property {string} ComparePages toggle feature to enable Show Comparison button in side-by-side view\n * @property {string} Initials toggle feature to activate initials signing mode in the Signature Modal\n * @property {string} SavedSignaturesTab toggle feature to enable the saved signatures tab in the Signature Modal and use it to sign elements.\n * @property {string} WatermarkPanel toggle feature to enable the watermark panel\n * @property {string} WatermarkPanelImageTab toggle feature to enable the image tab in watermark panel\n * @property {string} ContentEdit toggle feature to enable content editing in a pdf document\n * @property {string} LegacyRichTextPopup Toggle legacy richTextPopup\n * @property {string} Portfolio Toggle feature to create PDF portfolio and the portfolio panel\n * @example\n WebViewer(...)\n .then(function(instance) {\n    var Feature = instance.UI.Feature;\n    instance.UI.enableFeatures([Feature.Measurement]);\n    instance.UI.disableFeatures([Feature.Copy]);\n  });\n */\n\nexport default {\n  Measurement: 'Measurement',\n  Ribbons: 'Ribbons',\n  Annotations: 'Annotations',\n  Download: 'Download',\n  FilePicker: 'FilePicker',\n  LocalStorage: 'LocalStorage',\n  NotesPanel: 'NotesPanel',\n  InlineComment: 'InlineComment',\n  RightClickAnnotationPopup: 'RightClickAnnotationPopup',\n  Print: 'Print',\n  Redaction: 'Redaction',\n  TextSelection: 'TextSelection',\n  TouchScrollLock: 'TouchScrollLock',\n  Copy: 'Copy',\n  MultipleViewerMerging: 'MultipleViewerMerging',\n  ThumbnailMerging: 'ThumbnailMerging',\n  ThumbnailReordering: 'ThumbnailReordering',\n  ThumbnailMultiselect: 'ThumbnailMultiselect',\n  PageNavigation: 'PageNavigation',\n  MouseWheelZoom: 'MouseWheelZoom',\n  Search: 'Search',\n  MathSymbols: 'MathSymbols',\n  OutlineEditing: 'OutlineEditing',\n  NotesPanelVirtualizedList: 'NotesPanelVirtualizedList',\n  NotesShowLastUpdatedDate: 'NotesShowLastUpdatedDate',\n  MultiTab: 'MultiTab',\n  ChangeView: 'ChangeView',\n  ContentEdit: 'ContentEdit',\n  MultiViewerMode: 'MultiViewerMode',\n  SideBySideView: 'SideBySideView',\n  Initials: 'Initials',\n  SavedSignaturesTab: 'SavedSignaturesTab',\n  WatermarkPanel: 'WatermarkPanel',\n  WatermarkPanelImageTab: 'WatermarkPanelImageTab',\n  Panel: 'Panel',\n  LegacyRichTextPopup: 'LegacyRichTextPopup',\n  ComparePages: 'ComparePages',\n  Portfolio: 'Portfolio',\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = arraySlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n    var dummy = this;\n    // check on 1..constructor(foo) case\n    return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","import { getInstanceNode } from 'helpers/getRootNode';\n\nconst paramCorrections = {\n  'd': 'initialDoc',\n  'filepicker': 'showLocalFilePicker',\n  'pdfnet': 'fullAPI',\n  'user': 'annotationUser',\n  'a': 'enableAnnotations',\n  'azureWorkaround': 'enableAzureWorkaround',\n  'admin': 'isAdminUser',\n  'l': 'licenseKey',\n  'pdf': 'backendType',\n  'office': 'backendType',\n  'legacyOffice': 'backendType',\n  'p': 'externalPath',\n  'did': 'documentId',\n  'toolbar': 'showToolbarControl',\n};\nconst paramsToStringify = ['initialDoc'];\n\nexport default window.isApryseWebViewerWebComponent ? (param, defaultValue = false) => {\n  const correctedParam = paramCorrections[param] ? paramCorrections[param] : param;\n\n  let val = getInstanceNode().getAttribute(correctedParam);\n  if (correctedParam === 'initialDoc' && val) {\n    val = val.split(',');\n    // If initialDoc is string with commas,\n    // we will split it and turn it to array\n    if (val && val.length === 1) {\n      val = val[0];\n    }\n  }\n\n  // Need to stringify because the Core function returns a string as well\n  if (val && paramsToStringify.includes(correctedParam)) {\n    return JSON.stringify(val);\n  }\n\n  return val || defaultValue;\n} : window.Core.getHashParameter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './Icon.scss';\n\nclass Icon extends React.PureComponent {\n  static propTypes = {\n    className: PropTypes.string,\n    color: PropTypes.string,\n    glyph: PropTypes.string.isRequired,\n    fillColor: PropTypes.string,\n    strokeColor: PropTypes.string,\n    disabled: PropTypes.bool\n  }\n\n  constructor() {\n    super();\n    this.icon = React.createRef();\n  }\n\n  componentDidMount() {\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.glyph !== prevProps.glyph) {\n      this.updateSvg();\n    }\n  }\n\n  updateSvg() {\n    if (this.isInlineSvg()) {\n      const domElement = this.icon.current;\n\n      // remove existing svg\n      while (domElement.firstChild) {\n        domElement.removeChild(domElement.firstChild);\n      }\n\n      // innerHTML also works, but not in IE...\n      const svg = (new DOMParser()).parseFromString(this.props.glyph, 'image/svg+xml').querySelector('svg');\n      domElement.appendChild(svg);\n    }\n  }\n\n  isInlineSvg() {\n    const { glyph } = this.props;\n    return glyph && glyph.indexOf('<svg') === 0;\n  }\n\n  render() {\n    const { className = '', color, glyph, fillColor = '', strokeColor = '', disabled } = this.props;\n    const filter = (color && (color === 'rgba(255, 255, 255, 1)' || color === 'rgb(255, 255, 255)')) ? 'drop-shadow(0 0 .5px #333)' : undefined;\n    let svgElement;\n\n    try {\n      // eslint-disable-next-line global-require,import/no-dynamic-require\n      svgElement = this.isInlineSvg() ? glyph : require(`../../../assets/icons/${this.props.glyph}.svg`);\n    } catch {\n      svgElement = undefined;\n    }\n\n    const style = {\n      filter\n    };\n\n    if (!disabled) {\n      style.color = (color === 'rgba(0, 0, 0, 0)') ? '#808080' : color;\n      if (fillColor) {\n        svgElement = svgElement.replace('fill=\"none\"', `fill=\"#${fillColor}\"`);\n      }\n      if (strokeColor) {\n        svgElement = svgElement.replace('fill=\"stroke\"', `fill=\"#${strokeColor}\"`);\n      }\n    }\n\n    return (\n      <div\n        ref={this.icon}\n        className={classNames({\n          Icon: true,\n          [className]: true,\n          [fillColor]: true,\n          disabled,\n        })}\n        style={style}\n        /* eslint-disable react/no-danger */\n        dangerouslySetInnerHTML={{ __html: svgElement }}\n      />\n    );\n  }\n}\n\nexport default Icon;\n","import Icon from './Icon';\n\nexport default Icon;","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","var hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","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\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\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\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  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\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","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","import { MOBILE_SIZE, TABLET_SIZE } from 'constants/deviceSizes';\nimport getRootNode from 'helpers/getRootNode';\n\nconst isWebComponent = window.isApryseWebViewerWebComponent;\n\nexport const isDesktop = () => window.innerWidth > TABLET_SIZE || (isWebComponent && getRootNode()?.host.clientWidth > TABLET_SIZE);\nexport const isTabletAndMobile = () => window.innerWidth <= TABLET_SIZE || (isWebComponent && getRootNode()?.host.clientWidth <= TABLET_SIZE);\nexport const isMobile = () => window.innerWidth < MOBILE_SIZE || (isWebComponent && getRootNode()?.host.clientWidth < MOBILE_SIZE);\nexport const isIEEdge = navigator.userAgent.indexOf('Edge') > -1;\nexport const isIEEdgeChromium = navigator.userAgent.indexOf('Edg/') > -1;\nexport const isIE11 = navigator.userAgent.indexOf('Trident/7.0') > -1;\nexport const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\nexport const isIE = isIEEdge || isIE11;\n// https://stackoverflow.com/a/58064481\nexport const isIEEdgeLegacy = isIEEdge && !isIEEdgeChromium;\nconst checkForIOS13 = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\nexport const isIOS = window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || checkForIOS13;\nexport const isIOSFullScreenSupported = !!document.documentElement.webkitRequestFullScreen;\nexport const isAndroid = window.navigator.userAgent.match(/Android/i);\nexport const isMobileDevice = isIOS || isAndroid || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMobileDeviceFunc = () => window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) || window.navigator.userAgent.match(/Android/i) || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMac = navigator.appVersion.indexOf('Mac') > -1;\nexport const isWindows = navigator.appVersion.indexOf('Windows') > -1;\n\nexport const isChrome = (function() {\n  // opera, edge, and maxthon have chrome in their useragent string so we need to be careful!\n  const opera = window.navigator.userAgent.match(/OPR/);\n  const maxthon = window.navigator.userAgent.match(/Maxthon/);\n  const edge = window.navigator.userAgent.match(/Edge/);\n\n  return (window.navigator.userAgent.match(/Chrome\\/(.*?) /) && !opera && !maxthon && !edge);\n})();\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (/^((?!chrome|android).)*$/.test(navigator.userAgent) && isIOS);\n\nexport const isChromeOniOS = window.navigator.userAgent.match(/CriOS\\/(.*?) /);\n\nexport const isFirefoxOniOS = window.navigator.userAgent.match(/(FxiOS)\\/(.*?) /);","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es-x/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n","/**\n * Contains string enums for WebViewer UI events.\n * @name UI.Events\n * @property {string} ANNOTATION_FILTER_CHANGED {@link UI#event:annotationFilterChanged UI.Events.annotationFilterChanged}\n * @property {string} DOCUMENT_LOADED {@link UI#event:documentLoaded UI.Events.documentLoaded}\n * @property {string} DOCUMENT_MERGED {@link UI#event:documentMerged UI.Events.documentMerged}\n * @property {string} FILE_DOWNLOADED {@link UI#event:fileDownloaded UI.Events.fileDownloaded}\n * @property {string} LOAD_ERROR {@link UI#event:loaderror UI.Events.loaderror}\n * @property {string} DRAG_OUTLINE {@link UI#event:dragOutline UI.Events.dragOutline}\n * @property {string} DROP_OUTLINE {@link UI#event:dragOutline UI.Events.dragOutline}\n * @property {string} PANEL_RESIZED {@link UI#event:panelResized UI.Events.panelResized}\n * @property {string} THEME_CHANGED {@link UI#event:themeChanged UI.Events.themeChanged}\n * @property {string} TOOLBAR_GROUP_CHANGED {@link UI#event:toolbarGroupChanged UI.Events.toolbarGroupChanged}\n * @property {string} SELECTED_THUMBNAIL_CHANGED {@link UI#event:selectedThumbnailChanged UI.Events.selectedThumbnailChanged}\n * @property {string} THUMBNAIL_DRAGGED {@link UI#event:thumbnailDragged UI.Events.thumbnailDragged}\n * @property {string} THUMBNAIL_DROPPED {@link UI#event:thumbnailDropped UI.Events.thumbnailDropped}\n * @property {string} USER_BOOKMARKS_CHANGED {@link UI#event:userBookmarksChanged UI.Events.userBookmarksChanged}\n * @property {string} OUTLINE_BOOKMARKS_CHANGED {@link UI#event:outlineBookmarksChanged UI.Events.outlineBookmarksChanged}\n * @property {string} VIEWER_LOADED {@link UI#event:viewerLoaded UI.Events.viewerLoaded}\n * @property {string} VISIBILITY_CHANGED {@link UI#event:visibilityChanged UI.Events.visibilityChanged}\n * @property {string} FULLSCREEN_MODE_TOGGLED {@link UI#event:fullscreenModeToggled UI.Events.fullscreenModeToggled}\n * @property {string} BEFORE_TAB_CHANGED {@link UI#event:beforeTabChanged UI.Events.beforeTabChanged}\n * @property {string} TAB_DELETED {@link UI#event:tabDeleted UI.Events.tabDeleted}\n * @property {string} TAB_ADDED {@link UI#event:tabAdded UI.Events.tabAdded}\n * @property {string} TAB_MOVED {@link UI#event:tabMoved UI.Events.tabMoved}\n * @property {string} LANGUAGE_CHANGED {@link UI#event:tabMoved UI.Events.languageChanged}\n * @property {string} MULTI_VIEWER_READY {@link UI#event:multiViewerReady  UI.Events.multiViewerReady }\n * @property {string} COMPARE_ANNOTATIONS_LOADED {@link UI#event:compareAnnotationsLoaded  UI.Events.compareAnnotationsLoaded }\n * @property {string} TAB_MANAGER_READY {@link UI#event:onTabManagerReady  UI.Events.onTabManagerReady }\n * @example\n  WebViewer(...).then(function(instance) {\n    const UIEvents = instance.UI.Events;\n    instance.UI.addEventListener(UIEvents.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\n\nexport default {\n  'ANNOTATION_FILTER_CHANGED': 'annotationFilterChanged',\n  'DOCUMENT_LOADED': 'documentLoaded',\n  'DOCUMENT_MERGED': 'documentMerged',\n  'FILE_DOWNLOADED': 'fileDownloaded',\n  'LOAD_ERROR': 'loaderror',\n  'DRAG_OUTLINE': 'dragOutline',\n  'DROP_OUTLINE': 'dropOutline',\n  'PANEL_RESIZED': 'panelResized',\n  'THEME_CHANGED': 'themeChanged',\n  'TOOLBAR_GROUP_CHANGED': 'toolbarGroupChanged',\n  'SELECTED_THUMBNAIL_CHANGED': 'selectedThumbnailChanged',\n  'THUMBNAIL_DRAGGED': 'thumbnailDragged',\n  'THUMBNAIL_DROPPED': 'thumbnailDropped',\n  'USER_BOOKMARKS_CHANGED': 'userBookmarksChanged',\n  'OUTLINE_BOOKMARKS_CHANGED': 'outlineBookmarksChanged',\n  'VIEWER_LOADED': 'viewerLoaded',\n  'VISIBILITY_CHANGED': 'visibilityChanged',\n  'FULLSCREEN_MODE_TOGGLED': 'fullscreenModeToggled',\n  'BEFORE_TAB_CHANGED': 'beforeTabChanged',\n  'TAB_DELETED': 'tabDeleted',\n  'TAB_ADDED': 'tabAdded',\n  'TAB_MOVED': 'tabMoved',\n  'LANGUAGE_CHANGED': 'languageChanged',\n  'MULTI_VIEWER_READY': 'multiViewerReady',\n  'COMPARE_ANNOTATIONS_LOADED': 'compareAnnotationsLoaded',\n  'TAB_MANAGER_READY': 'onTabManagerReady',\n};\n\n/**\n * Triggered when annotation filter in the notes panel has changed.\n * Returns empty arrays if the filter is cleared.\n * @name UI#annotationFilterChanged\n * @event\n * @type {object}\n * @property {string[]} types Types filter\n * @property {string[]} authors Author filter\n * @property {string[]} colors Color filter\n * @property {string[]} statuses Status filter\n */\n\n/**\n* Triggered when a new document has been loaded.\n* @name UI#documentLoaded\n* @event\n*/\n\n/**\n* Triggered when a new document has been merged into the thumbnails panel.\n* @name UI#documentMerged\n* @event\n* @type {object}\n* @property {string} filename File name\n* @property {number[]} pages Page numbers\n*/\n\n/**\n* Triggered when the file has finished downloading.\n* @name UI#fileDownloaded\n* @event\n*/\n\n/**\n* Triggered when there is an error loading the document.\n* @name UI#loaderror\n* @event\n* @param {object} err The error\n*/\n\n/**\n* Triggered when dragging Outline item.\n* @name UI#dragOutline\n* @event\n*/\n\n/**\n* Triggered when dropping Outline item.\n* @name UI#dragOutline\n* @event\n*/\n\n/**\n* Triggered when the panels are resized.\n* @name UI#panelResized\n* @event\n* @type {object}\n* @property {string} element DataElement name\n* @property {number} width New panel width\n*/\n\n/**\n* Triggered when the UI theme has changed.\n* @name UI#themeChanged\n* @event\n* @param {string} theme The new UI theme\n*/\n\n/**\n* Triggered when the toolbar group has changed.\n* @name UI#toolbarGroupChanged\n* @event\n* @param {string} toolbarGroup The new toolbar group\n*/\n\n/**\n* Triggered when the selected thumbnail changed.\n* @name UI#selectedThumbnailChanged\n* @event\n* @param {array} selectedThumbnailPageIndexes The array of indexes of currently selected thumbnails\n*/\n\n/**\n* Triggered when thumbnail(s) are dragged in the thumbnail panel\n* @name UI#thumbnailDragged\n* @event\n*/\n\n/**\n* Triggered when dragged thumbnail(s) are dropped to a new location in the thumbnail panel\n* @name UI#thumbnailDropped\n* @event\n* @type {object}\n* @property {Array<number>} pageNumbersBeforeMove The array of page numbers to be moved\n* @property {Array<number>} pageNumbersAfterMove The array of page numbers of where thumbnails being dropped\n* @property {number} numberOfPagesMoved Number of page(s) being moved\n*/\n\n/**\n* Triggered when user bookmarks have changed.\n* @name UI#userBookmarksChanged\n* @event\n* @param {object} bookmarks The new bookmarks\n*/\n\n/**\n* Triggered when outline bookmarks have changed.\n* @name UI#outlineBookmarksChanged\n* @event\n* @param {object} bookmarkData\n* @param {object} bookmarkData.bookmark The changed bookmark\n* @param {string} bookmarkData.bookmark.id Changed outline bookmark id\n* @param {string} bookmarkData.bookmark.name Changed outline bookmark name\n* @param {string} bookmarkData.path Changed outline path in the outline tree\n* @param {string} bookmarkData.action The action that triggered the outline bookmarks change\n*/\n\n/**\n* Triggered when the viewer has loaded.\n* @name UI#viewerLoaded\n* @event\n*/\n\n/**\n* Triggered when the visibility of an element has changed.\n* @name UI#visibilityChanged\n* @event\n* @type {object}\n* @property {object} detail\n* @property {string} detail.element DataElement name\n* @property {boolean} detail.isVisible The new visibility\n*/\n\n/**\n* Triggered when fullscreen mode is toggled.\n* @name UI#fullscreenModeToggled\n* @event\n* @type {object}\n* @property {boolean} isInFullscreen Whether in fullscreen mode or not.\n*/\n\n/**\n* Triggered before the UI switches tabs\n* @name UI#beforeTabChanged\n* @event\n* @type {object}\n* @property {object} currentTab An object containing the properties for the currently active tab (null if no currently active tab)\n* @property {number} currentTab.id The id of the tab being switched to\n* @property {string} currentTab.src Source of current tab\n* @property {string} currentTab.options Tab load options\n* @property {boolean} currentTab.annotationsChanged True if the annotations have been changed since loading the tab\n* @property {object} nextTab An object containing the properties for the tab being switched to\n* @property {number} nextTab.id The id of the tab being switched to\n* @property {string} nextTab.src Source of current tab\n* @property {string} nextTab.options Tab load options\n*/\n\n/**\n* Triggered when a Tab is deleted\n* @name UI#tabDeleted\n* @event\n* @type {object}\n* @property {number} id The id of the tab being deleted\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is added\n* @name UI#tabAdded\n* @event\n* @type {object}\n* @property {number} id The id of the tab being added\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is moved\n* @name UI#tabMoved\n* @event\n* @type {object}\n* @property {number} id The id of the tab being moved\n* @property {string} src Source of moved tab\n* @property {string} options Tab load options\n* @property {number} prevIndex Previous index of tab\n* @property {number} newIndex New index of tab\n*/\n\n/**\n* Triggered when the language changes in WebViewer via [setLanguage]{@link UI#setLanguage UI.setLanguage}\n* @name UI#languageChanged\n* @event\n* @type {object}\n* @property {string} prev The previous language\n* @property {string} next The new language that was just set\n*/\n\n/**\n* Triggered when MultiViewerMode is enabled and ready to be interacted with\n* @name UI#multiViewerReady\n* @event\n*/\n\n/** Triggered when the compare annotations are loaded\n* @name UI#compareAnnotationsLoaded\n* @event\n*/\n\n/** Triggered when the Multi-Tab is ready and TabManager can be interacted with\n* @name UI#onTabManagerReady\n* @event\n*/\n","export function shallowEqual<T>(\n  objA: T,\n  objB: T,\n  compare?: (a: T, b: T, key?: string) => boolean | void,\n  compareContext?: any\n) {\n  var compareResult = compare\n    ? compare.call(compareContext, objA, objB)\n    : void 0;\n  if (compareResult !== void 0) {\n    return !!compareResult;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = (objA as any)[key];\n    var valueB = (objB as any)[key];\n\n    compareResult = compare\n      ? compare.call(compareContext, valueA, valueB, key)\n      : void 0;\n\n    if (\n      compareResult === false ||\n      (compareResult === void 0 && valueA !== valueB)\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","import { isIE11 } from 'helpers/device';\nimport Events from 'constants/events';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nconst fireEvent = (eventName, data, element = null) => {\n  let event;\n  if (CustomEvent && !isIE11) {\n    event = new CustomEvent(eventName, { detail: data, bubbles: true, cancelable: true });\n  } else {\n    event = document.createEvent('Event');\n    event.initEvent(eventName, true, true);\n    event.detail = data;\n  }\n  element ? element.dispatchEvent(event) : getInstanceNode().dispatchEvent(event);\n};\n\nexport default fireEvent;\nexport const fireError = (message) => {\n  fireEvent(Events.LOAD_ERROR, message);\n};\n","import core from 'core';\nimport getRootNode from './getRootNode';\n\nexport default () => {\n  const freetextAnnots = core.getAnnotationsList().filter((annot) => annot instanceof window.Core.Annotations.FreeTextAnnotation);\n  const isEditingFreetext = freetextAnnots.some((annot) => annot.getEditor()?.hasFocus());\n  const { activeElement } = getRootNode();\n\n  return (\n    activeElement instanceof window.HTMLInputElement ||\n    activeElement instanceof window.HTMLTextAreaElement ||\n    activeElement.className.includes('ql-editor') ||\n    isEditingFreetext ||\n    (activeElement?.tagName?.toLowerCase() === 'input' && activeElement?.getAttribute('type') === 'text') ||\n    activeElement?.tagName?.toLowerCase() === 'textarea'\n  );\n};\n","import hotkeys from 'hotkeys-js';\n\nimport core from 'core';\nimport i18next from 'i18next';\nimport { isMac, isMobile } from 'helpers/device';\nimport openFilePicker from 'helpers/openFilePicker';\nimport copyText from 'helpers/copyText';\nimport setToolModeAndGroup from 'helpers/setToolModeAndGroup';\nimport { zoomIn, zoomOut } from 'helpers/zoom';\nimport { print } from 'helpers/print';\nimport createTextAnnotationAndSelect from 'helpers/createTextAnnotationAndSelect';\nimport isFocusingElement from 'helpers/isFocusingElement';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\n\nexport const Shortcuts = {\n  ROTATE_CLOCKWISE: 'rotateClockwise',\n  ROTATE_COUNTER_CLOCKWISE: 'rotateCounterClockwise',\n  NUMPAD_ROTATE_CLOCKWISE: 'numpadRotateClockwise',\n  NUMPAD_ROTATE_COUNTER_CLOCKWISE: 'numpadRotateCounterClockwise',\n  COPY: 'copy',\n  PASTE: 'paste',\n  UNDO: 'undo',\n  REDO: 'redo',\n  OPEN_FILE: 'openFile',\n  SEARCH: 'search',\n  ZOOM_IN: 'zoomIn',\n  ZOOM_OUT: 'zoomOut',\n  NUMPAD_ZOOM_IN: 'numpadZoomIn',\n  NUMPAD_ZOOM_OUT: 'numpadZoomOut',\n  FIT_SCREEN_WIDTH: 'fitScreenWidth',\n  PRINT: 'print',\n  BOOKMARK: 'bookmark',\n  PREVIOUS_PAGE: 'previousPage',\n  NEXT_PAGE: 'nextPage',\n  UP: 'up',\n  DOWN: 'down',\n  SWITCH_PAN: 'switchPan',\n  SELECT: 'select',\n  PAN: 'pan',\n  ARROW: 'arrow',\n  CALLOUT: 'callout',\n  ERASER: 'eraser',\n  FREEHAND: 'freehand',\n  IMAGE: 'image',\n  LINE: 'line',\n  STICKY_NOTE: 'stickyNote',\n  ELLIPSE: 'ellipse',\n  RECTANGLE: 'rectangle',\n  RUBBER_STAMP: 'rubberStamp',\n  FREETEXT: 'freetext',\n  SIGNATURE: 'signature',\n  SQUIGGLY: 'squiggly',\n  HIGHLIGHT: 'highlight',\n  STRIKEOUT: 'strikeout',\n  UNDERLINE: 'underline',\n  HOME: 'home',\n  END: 'end',\n};\n\n// prettier-ignore\nconst keyMap = {\n  [Shortcuts.ROTATE_CLOCKWISE]: 'Control+Shift+=',\n  [Shortcuts.ROTATE_COUNTER_CLOCKWISE]: 'Control+Shift+-',\n  [Shortcuts.NUMPAD_ROTATE_CLOCKWISE]: 'Control+Shift+Num_Add',\n  [Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]: 'Control+Shift+Num_Subract',\n  [Shortcuts.COPY]: 'Control+C',\n  [Shortcuts.UNDO]: 'Control+Z',\n  [Shortcuts.REDO]: 'Control+Shift+Z',\n  [Shortcuts.ZOOM_IN]: 'Control+=',\n  [Shortcuts.ZOOM_OUT]: 'Control+-',\n  [Shortcuts.NUMPAD_ZOOM_IN]: 'Control+Num_Add',\n  [Shortcuts.NUMPAD_ZOOM_OUT]: 'Control+Num_Subract',\n  [Shortcuts.SELECT]: 'Escape',\n  [Shortcuts.PAN]: 'P',\n  [Shortcuts.ARROW]: 'A',\n  [Shortcuts.CALLOUT]: 'C',\n  [Shortcuts.ERASER]: 'E',\n  [Shortcuts.FREEHAND]: 'F',\n  [Shortcuts.IMAGE]: 'I',\n  [Shortcuts.LINE]: 'L',\n  [Shortcuts.STICKY_NOTE]: 'N',\n  [Shortcuts.ELLIPSE]: 'O',\n  [Shortcuts.RECTANGLE]: 'R',\n  [Shortcuts.FREETEXT]: 'T',\n  [Shortcuts.SIGNATURE]: 'S',\n  [Shortcuts.SQUIGGLY]: 'G',\n  [Shortcuts.HIGHLIGHT]: 'H',\n  [Shortcuts.STRIKEOUT]: 'K',\n  [Shortcuts.UNDERLINE]: 'U',\n  'delete': 'Delete',\n  'richText.bold': 'Control+B',\n  'richText.italic': 'Control+I',\n  'richText.underline': 'Control+U',\n  'richText.strikeout': 'Control+K',\n  [Shortcuts.HOME]: 'Home',\n  [Shortcuts.END]: 'End',\n};\n\nexport function shortcutAria(shortcut) {\n  let aria = keyMap[shortcut];\n  if (aria) {\n    if (isMac) {\n      aria = aria.replace('Control', 'Meta');\n    }\n    return aria;\n  }\n\n  return undefined;\n}\n\nconst NOOP = () => { };\n\n/**\n * Available hotkeys that can be passed to {@link UI.Hotkeys#on instance.UI.hotkeys.on} or {@link UI.Hotkeys#off instance.UI.hotkeys.off}. <br/><br/>\n * @name UI.Hotkeys.Keys\n * @enum {string}\n * @property {string} CTRL_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} COMMAND_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} CTRL_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} COMMAND_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} CTRL_C Copy selected text or annotations\n * @property {string} COMMAND_C Copy selected text or annotations\n * @property {string} CTRL_V Paste text or annotations\n * @property {string} COMMAND_V Paste text or annotations\n * @property {string} CTRL_Z Undo an annotation change\n * @property {string} COMMAND_Z Undo an annotation change\n * @property {string} CTRL_Y Redo an annotation change\n * @property {string} COMMAND_SHIFT_Z Redo an annotation change\n * @property {string} CTRL_O Open the file picker\n * @property {string} COMMAND_O Open the file picker\n * @property {string} CTRL_F Open the search overlay\n * @property {string} COMMAND_F Open the search overlay\n * @property {string} CTRL_EQUAL Zoom in\n * @property {string} COMMAND_EQUAL Zoom in\n * @property {string} CTRL_MINUS Zoom out\n * @property {string} COMMAND_MINUS Zoom out\n * @property {string} CTRL_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} COMMAND_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} CTRL_P Print\n * @property {string} COMMAND_P Print\n * @property {string} CTRL_B Quickly bookmark a page and open the bookmark panel\n * @property {string} COMMAND_B Quickly bookmark a page and open the bookmark panel\n * @property {string} PAGE_UP Go to the previous page\n * @property {string} PAGE_DOWN Go to the next page\n * @property {string} UP Go to the previous page in single layout mode (ArrowUp)\n * @property {string} DOWN Go to the next page in single layout mode (ArrowDown)\n * @property {string} SPACE Hold to switch to Pan mode and release to return to previous tool\n * @property {string} ESCAPE Select the AnnotationEdit tool\n * @property {string} P Select the Pan tool\n * @property {string} A Select the AnnotationCreateArrow tool\n * @property {string} C Select the AnnotationCreateCallout tool\n * @property {string} E Select the AnnotationEraser tool\n * @property {string} F Select the AnnotationCreateFreeHand tool\n * @property {string} I Select the AnnotationCreateStamp tool\n * @property {string} L Select the AnnotationCreateLine tool\n * @property {string} N Select the AnnotationCreateSticky tool\n * @property {string} O Select the AnnotationCreateEllipse tool\n * @property {string} R Select the AnnotationCreateRectangle tool\n * @property {string} Q Select the AnnotationCreateRubberStamp tool\n * @property {string} T Select the AnnotationCreateFreeText tool\n * @property {string} S Open the signature modal or the overlay\n * @property {string} G Select the AnnotationCreateTextSquiggly tool\n * @property {string} H Select the AnnotationCreateTextHighlight tool\n * @property {string} K Select the AnnotationCreateTextStrikeout tool\n * @property {string} U Select the AnnotationCreateTextUnderline tool\n */\nexport const Keys = {\n  CTRL_SHIFT_EQUAL: 'ctrl+shift+=',\n  COMMAND_SHIFT_EQUAL: 'command+shift+=',\n  CTRL_SHIFT_MINUS: 'ctrl+shift+-',\n  COMMAND_SHIFT_MINUS: 'command+shift+-',\n  CTRL_SHIFT_NUM_ADD: 'ctrl+shift+num_add',\n  COMMAND_SHIFT_NUM_ADD: 'command+shift+num_add',\n  CTRL_SHIFT_NUM_SUBTRACT: 'ctrl+shift+num_subtract',\n  COMMAND_SHIFT_NUM_SUBTRACT: 'command+shift+num_subtract',\n  CTRL_C: 'ctrl+c',\n  COMMAND_C: 'command+c',\n  CTRL_V: 'ctrl+v',\n  COMMAND_V: 'command+v',\n  CTRL_Z: 'ctrl+z',\n  COMMAND_Z: 'command+z',\n  CTRL_Y: 'ctrl+y',\n  COMMAND_SHIFT_Z: 'command+shift+z',\n  CTRL_O: 'ctrl+o',\n  COMMAND_O: 'command+o',\n  CTRL_F: 'ctrl+f',\n  COMMAND_F: 'command+f',\n  CTRL_EQUAL: 'ctrl+=',\n  COMMAND_EQUAL: 'command+=',\n  CTRL_MINUS: 'ctrl+-',\n  COMMAND_MINUS: 'command+-',\n  CTRL_NUM_ADD: 'ctrl+num_add',\n  COMMAND_NUM_ADD: 'command+num_add',\n  CTRL_NUM_SUBTRACT: 'ctrl+num_subtract',\n  COMMAND_NUM_SUBTRACT: 'command+num_subtract',\n  CTRL_0: 'ctrl+0',\n  COMMAND_0: 'command+0',\n  CTRL_P: 'ctrl+p',\n  COMMAND_P: 'command+p',\n  CTRL_B: 'ctrl+b',\n  COMMAND_B: 'command+b',\n  ENTER: 'enter',\n  PAGE_UP: 'pageup',\n  PAGE_DOWN: 'pagedown',\n  UP: 'up',\n  DOWN: 'down',\n  SPACE: 'space',\n  ESCAPE: 'escape',\n  HOME: 'home',\n  END: 'end',\n  P: 'p',\n  A: 'a',\n  C: 'c',\n  E: 'e',\n  F: 'f',\n  I: 'i',\n  L: 'l',\n  N: 'n',\n  O: 'o',\n  R: 'r',\n  Q: 'q',\n  T: 't',\n  S: 's',\n  G: 'g',\n  H: 'h',\n  K: 'k',\n  U: 'u',\n};\n\nexport function concatKeys(...keys) {\n  return keys.join(', ');\n}\n\nfunction splitKey(key) {\n  return key.split(', ');\n}\n\n// Defalut keys for shortcut\nexport const ShortcutKeys = {\n  [Shortcuts.ROTATE_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_EQUAL, Keys.COMMAND_SHIFT_EQUAL),\n  [Shortcuts.ROTATE_COUNTER_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_MINUS, Keys.COMMAND_SHIFT_MINUS),\n  [Shortcuts.NUMPAD_ROTATE_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_NUM_ADD, Keys.COMMAND_SHIFT_NUM_ADD),\n  [Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_NUM_SUBTRACT, Keys.COMMAND_SHIFT_NUM_SUBTRACT),\n  [Shortcuts.COPY]: concatKeys(Keys.CTRL_C, Keys.COMMAND_C),\n  [Shortcuts.PASTE]: concatKeys(Keys.CTRL_V, Keys.COMMAND_V),\n  [Shortcuts.UNDO]: concatKeys(Keys.CTRL_Z, Keys.COMMAND_Z),\n  [Shortcuts.REDO]: concatKeys(Keys.CTRL_Y, Keys.COMMAND_SHIFT_Z),\n  [Shortcuts.OPEN_FILE]: concatKeys(Keys.CTRL_O, Keys.COMMAND_O),\n  [Shortcuts.SEARCH]: concatKeys(Keys.CTRL_F, Keys.COMMAND_F),\n  [Shortcuts.ZOOM_IN]: concatKeys(Keys.CTRL_EQUAL, Keys.COMMAND_EQUAL),\n  [Shortcuts.ZOOM_OUT]: concatKeys(Keys.CTRL_MINUS, Keys.COMMAND_MINUS),\n  [Shortcuts.NUMPAD_ZOOM_IN]: concatKeys(Keys.CTRL_NUM_ADD, Keys.COMMAND_NUM_ADD),\n  [Shortcuts.NUMPAD_ZOOM_OUT]: concatKeys(Keys.CTRL_NUM_SUBTRACT, Keys.COMMAND_NUM_SUBTRACT),\n  [Shortcuts.FIT_SCREEN_WIDTH]: concatKeys(Keys.CTRL_0, Keys.COMMAND_0),\n  [Shortcuts.PRINT]: concatKeys(Keys.CTRL_P, Keys.COMMAND_P),\n  [Shortcuts.BOOKMARK]: concatKeys(Keys.CTRL_B, Keys.COMMAND_B),\n  [Shortcuts.PREVIOUS_PAGE]: Keys.PAGE_UP,\n  [Shortcuts.NEXT_PAGE]: Keys.PAGE_DOWN,\n  [Shortcuts.UP]: Keys.UP,\n  [Shortcuts.DOWN]: Keys.DOWN,\n  [Shortcuts.SWITCH_PAN]: Keys.SPACE,\n  [Shortcuts.SELECT]: Keys.ESCAPE,\n  [Shortcuts.PAN]: Keys.P,\n  [Shortcuts.ARROW]: Keys.A,\n  [Shortcuts.CALLOUT]: Keys.C,\n  [Shortcuts.ERASER]: Keys.E,\n  [Shortcuts.FREEHAND]: Keys.F,\n  [Shortcuts.IMAGE]: Keys.I,\n  [Shortcuts.LINE]: Keys.L,\n  [Shortcuts.STICKY_NOTE]: Keys.N,\n  [Shortcuts.ELLIPSE]: Keys.O,\n  [Shortcuts.RECTANGLE]: Keys.R,\n  [Shortcuts.RUBBER_STAMP]: Keys.Q,\n  [Shortcuts.FREETEXT]: Keys.T,\n  [Shortcuts.SIGNATURE]: Keys.S,\n  [Shortcuts.SQUIGGLY]: Keys.G,\n  [Shortcuts.HIGHLIGHT]: Keys.H,\n  [Shortcuts.STRIKEOUT]: Keys.K,\n  [Shortcuts.UNDERLINE]: Keys.U,\n  [Shortcuts.HOME]: Keys.HOME,\n  [Shortcuts.END]: Keys.END,\n};\n\nconst ToolNameHotkeyMap = {\n  AnnotationEdit: Keys.ESCAPE,\n  Pan: Keys.P,\n  AnnotationCreateArrow: Keys.A,\n  AnnotationCreateCallout: Keys.C,\n  AnnotationEraserTool: Keys.E,\n  AnnotationCreateFreeHand: Keys.F,\n  AnnotationCreateStamp: Keys.I,\n  AnnotationCreateLine: Keys.L,\n  AnnotationCreateSticky: Keys.N,\n  AnnotationCreateEllipse: Keys.O,\n  AnnotationCreateRectangle: Keys.R,\n  AnnotationCreateFreeText: Keys.T,\n  AnnotationCreateSignature: Keys.S,\n  AnnotationCreateTextSquiggly: Keys.G,\n  AnnotationCreateTextHighlight: Keys.H,\n  AnnotationCreateTextStrikeout: Keys.K,\n  AnnotationCreateTextUnderline: Keys.U,\n  AnnotationCreateRubberStamp: Keys.Q\n};\n\nconst unbindedHotkeysMap = {};\n\nexport const defaultHotkeysScope = 'viewer';\n\n/**\n * A class which contains hotkeys APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">âš </span> You must NOT instantiate this yourself. Access instances of this class using {@link UI.hotkeys instance.UI.hotkeys}\n * @namespace Hotkeys\n * @memberof UI\n */\nconst HotkeysManager = {\n  initialize(store) {\n    // still allow hotkeys when focusing a textarea or an input\n    hotkeys.filter = () => true;\n    this.store = store;\n    this.keyHandlerMap = this.createKeyHandlerMap();\n    this.prevToolName = null;\n    const shortcutKeyMap = this.getShortcutKeyMap();\n    Object.keys(shortcutKeyMap).forEach((shortcut) => {\n      this.on(shortcutKeyMap[shortcut], this.keyHandlerMap[ShortcutKeys[shortcut]]);\n    });\n    this.didInitializeAllKeys = true;\n    hotkeys.setScope(defaultHotkeysScope);\n    this.formBuilderDisabledKeys = {};\n  },\n  /**\n   * Add an event handler for the given hotkey\n   * @method UI.Hotkeys.on\n   * @param {string|UI.Hotkeys.Keys} key A keyboard key <br/>\n   * If a hotkey is consisted of more than one key. Those keys should be connected using '+'.\n   * @param {function|object} [handler] An optional argument <br/>\n   * If it is undefined, the default handler of the given key will be registered <br/>\n   * If it is an function, it will be called on key down <br/>\n   * If it is an object, it should have the shape of { keydown: func1, keyup: func2 }. Func1 will be called on keydown while func2 will be called on keyup\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { UI } = instance;\n      // this will register the default zoom in handler\n      UI.hotkeys.on(UI.hotkeys.Keys.CTRL_EQUAL);\n      UI.hotkeys.on(UI.hotkeys.Keys.COMMAND_EQUAL);\n\n      // this will be called on keydown\n      UI.hotkeys.on('ctrl+d, command+d', e => {\n        e.preventDefault();\n        instance.Core.documentViewer.closeDocument();\n      });\n\n      UI.hotkeys.on('ctrl+g', {\n        keydown: e => {\n          console.log('ctrl+g is pressed!');\n        },\n        keyup: e => {\n          console.log('ctrl+g is released!')\n        },\n      });\n  });\n   */\n  on(key, handler) {\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = ToolNameHotkeyMap[key];\n    }\n\n    if (!handler) {\n      handler = this.keyHandlerMap[key];\n    }\n\n    function enableHotkey(_key, _handler) {\n      // https://github.com/jaywcjlove/hotkeys#defining-shortcuts\n      const { keyup = NOOP, keydown = _handler } = _handler;\n      hotkeys(_key, { keyup: true, scope: defaultHotkeysScope }, (e) => {\n        // Preventing the hotkey from being called multiple times or in the wrong viewer\n        // when using the web component version of webviewer.\n        const calledFromCurrentViewer = e.currentTarget.activeElement.shadowRoot === getRootNode();\n        if (calledFromCurrentViewer || !window.isApryseWebViewerWebComponent) {\n          if (e.type === 'keyup') {\n            keyup(e);\n          }\n          if (e.type === 'keydown') {\n            keydown(e);\n          }\n        }\n      });\n    }\n\n    if ((!key || !handler) && !this.didInitializeAllKeys) {\n      this.keyHandlerMap = this.createKeyHandlerMap();\n      this.prevToolName = null;\n      Object.keys(this.keyHandlerMap).forEach((_key) => {\n        // Check if the \"key\" has already been initialized\n        if (!unbindedHotkeysMap[_key]) {\n          enableHotkey(_key, this.keyHandlerMap[_key]);\n        }\n      });\n      this.didInitializeAllKeys = true;\n    }\n\n    // when key is undefined we need to set all keys to true\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = true;\n      }\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = true;\n    }\n\n    if (!key || !handler) {\n      return;\n    }\n\n    enableHotkey(key, handler);\n  },\n  /**\n   * Remove an event handler for the given hotkey\n   * @method UI.Hotkeys.off\n   * @param {string|UI.Hotkeys.Keys} [key] An optional keyboard key. If not passed, all handlers will be removed\n   * @param {function} [handler] An optional function. If not passed, all handlers of the given key will be removed\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n      // this will remove all handlers for ctrl = and command =\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.CTRL_EQUAL);\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.COMMAND_EQUAL);\n  });\n   */\n  off(key, handler) {\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = ToolNameHotkeyMap[key];\n\n      // need to return here otherwise all the handlers will be removed\n      // if the tool name doesn't have a corresponding hotkey\n      if (!key) {\n        return;\n      }\n    }\n\n    // when key is undefined hotkeysjs unbinds all handler\n    // here we need to flag all keys too\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = false;\n      }\n      this.didInitializeAllKeys = false;\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = false;\n    }\n\n    // https://github.com/jaywcjlove/hotkeys#unbind\n    hotkeys.unbind(key, handler);\n  },\n  isActive(shortcut) {\n    const key = keyMap[shortcut];\n    if (key) {\n      let hotkeyName;\n      // change 'ctrl' to 'command' for Mac OS\n      if (isMac) {\n        hotkeyName = key.replace('Control', 'command').toLocaleLowerCase();\n      } else {\n        hotkeyName = key.replace('Control', 'ctrl').toLocaleLowerCase();\n      }\n      return unbindedHotkeysMap[hotkeyName];\n    }\n    return true;\n  },\n  createKeyHandlerMap() {\n    const store = this.store;\n    const { dispatch, getState } = store;\n\n    return {\n      [ShortcutKeys[Shortcuts.ROTATE_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.ROTATE_COUNTER_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateCounterClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ROTATE_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateCounterClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.COPY]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (core.getSelectedText(activeDocumentViewerKey)) {\n          copyText(activeDocumentViewerKey);\n          dispatch(actions.closeElement('textPopup'));\n        } else if (core.getSelectedAnnotations(activeDocumentViewerKey).length) {\n          core.updateCopiedAnnotations(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.PASTE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.pasteCopiedAnnotations(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.UNDO]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.undo(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.REDO]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.redo(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.OPEN_FILE]]: (e) => {\n        e.preventDefault();\n        openFilePicker();\n      },\n      [ShortcutKeys[Shortcuts.SEARCH]]: (e) => {\n        e.preventDefault();\n\n        const isNotesPanelOpen = selectors.isElementOpen(getState(), 'notesPanel');\n        if (isNotesPanelOpen) {\n          dispatch(actions.closeElement('notesPanel'));\n        }\n\n        const isRedactionPanelOpen = selectors.isElementOpen(getState(), 'redactionPanel');\n        if (isRedactionPanelOpen) {\n          dispatch(actions.closeElement('redactionPanel'));\n        }\n\n        const isTextEditingPanelOpen = selectors.isElementOpen(getState(), 'textEditingPanel');\n        if (isTextEditingPanelOpen) {\n          dispatch(actions.closeElement('textEditingPanel'));\n        }\n\n        const isWv3dPropertiesPanelOpen = selectors.isElementOpen(getState(), 'wv3dPropertiesPanel');\n        if (isWv3dPropertiesPanelOpen) {\n          dispatch(actions.closeElement('wv3dPropertiesPanel'));\n        }\n\n        const isWatermarkPanelOpen = selectors.isElementOpen(getState(), 'watermarkPanel');\n        if (isWatermarkPanelOpen) {\n          dispatch(actions.closeElement('watermarkPanel'));\n        }\n\n        dispatch(actions.toggleElement('searchPanel'));\n      },\n      [ShortcutKeys[Shortcuts.ZOOM_IN]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomIn(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.ZOOM_OUT]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomOut(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ZOOM_IN]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomIn(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ZOOM_OUT]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomOut(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.FIT_SCREEN_WIDTH]]: (e) => {\n        e.preventDefault();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isMobile) {\n          core.fitToWidth(activeDocumentViewerKey);\n        } else {\n          core.fitToPage(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.PRINT]]: (e) => {\n        e.preventDefault();\n\n        print(\n          dispatch,\n          selectors.isEmbedPrintSupported(getState()),\n          selectors.getSortStrategy(getState()),\n          selectors.getColorMap(getState()),\n        );\n      },\n      // TODO Compare: Intergrate panels with compare\n      [ShortcutKeys[Shortcuts.BOOKMARK]]: (e) => {\n        e.preventDefault();\n        if (!selectors.isElementDisabled(getState(), DataElements.BOOKMARK_PANEL)) {\n          dispatch(actions.openElement(DataElements.LEFT_PANEL));\n          dispatch(actions.setActiveLeftPanel(DataElements.BOOKMARK_PANEL));\n\n          const bookmarks = selectors.getBookmarks(getState());\n          const currentPageIndex = core.getCurrentPage() - 1;\n          // only add bookmark if page is not already bookmarked\n          if (!bookmarks[currentPageIndex]) {\n            dispatch(actions.addBookmark(currentPageIndex, i18next.t('message.untitled')));\n          }\n        }\n      },\n      [ShortcutKeys[Shortcuts.PREVIOUS_PAGE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() - getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NEXT_PAGE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() + getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.UP]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n        const { scrollHeight, clientHeight } = scrollViewElement;\n        const reachedTop = scrollViewElement.scrollTop === 0;\n\n        if (reachedTop) {\n          const currentPage = core.getCurrentPage(activeDocumentViewerKey);\n          setCurrentPage(currentPage - getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n\n          // set the scrollbar to be at the bottom of the page only if the previous page is bigger than 1\n          if (currentPage > 1) {\n            scrollViewElement.scrollTop = scrollHeight - clientHeight;\n          }\n        }\n      },\n      [ShortcutKeys[Shortcuts.DOWN]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n        const { scrollTop, clientHeight, scrollHeight } = scrollViewElement;\n        const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n        if (reachedBottom) {\n          setCurrentPage(core.getCurrentPage(activeDocumentViewerKey) + getNumberOfPagesToNavigate());\n        }\n      },\n      [ShortcutKeys[Shortcuts.SWITCH_PAN]]: {\n        keyup: this.createToolHotkeyHandler((e) => {\n          e.preventDefault();\n\n          setToolModeAndGroup(store, this.prevToolName);\n          this.prevToolName = null;\n        }),\n        keydown: this.createToolHotkeyHandler((e) => {\n          e.preventDefault();\n\n          if (core.getToolMode().name !== 'Pan') {\n            this.prevToolName = core.getToolMode().name;\n            setToolModeAndGroup(store, 'Pan');\n          }\n        }),\n      },\n      [ShortcutKeys[Shortcuts.SELECT]]: (e) => {\n        e.preventDefault();\n        setToolModeAndGroup(store, 'AnnotationEdit', '');\n\n        dispatch(\n          actions.closeElements([\n            DataElements.ANNOTATION_POPUP,\n            DataElements.TEXT_POPUP,\n            DataElements.CONTEXT_MENU_POPUP,\n            'toolStylePopup',\n            DataElements.ANNOTATION_STYLE_POPUP,\n            DataElements.SIGNATURE_MODAL,\n            'customStampModal',\n            DataElements.PRINT_MODAL,\n            'rubberStampOverlay',\n            DataElements.FILTER_MODAL\n          ]),\n        );\n      },\n      [ShortcutKeys[Shortcuts.PAN]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'Pan');\n      }),\n      [ShortcutKeys[Shortcuts.ARROW]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateArrow');\n      }),\n      [ShortcutKeys[Shortcuts.CALLOUT]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateCallout');\n      }),\n      [ShortcutKeys[Shortcuts.ERASER]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationEraserTool');\n      }),\n      [ShortcutKeys[Shortcuts.FREEHAND]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateFreeHand');\n      }),\n      [ShortcutKeys[Shortcuts.IMAGE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateStamp');\n      }),\n      [ShortcutKeys[Shortcuts.LINE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateLine');\n      }),\n      [ShortcutKeys[Shortcuts.STICKY_NOTE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateSticky');\n      }),\n      [ShortcutKeys[Shortcuts.ELLIPSE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateEllipse');\n      }),\n      [ShortcutKeys[Shortcuts.RECTANGLE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateRectangle');\n      }),\n      [ShortcutKeys[Shortcuts.RUBBER_STAMP]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateRubberStamp');\n      }),\n      [ShortcutKeys[Shortcuts.FREETEXT]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateFreeText');\n      }),\n      [ShortcutKeys[Shortcuts.SIGNATURE]]: this.createToolHotkeyHandler(() => {\n        dispatch(actions.setToolbarGroup('toolbarGroup-FillAndSign', false));\n        const sigToolButton = document.querySelector('[data-element=\"signatureToolGroupButton\"] .Button');\n        sigToolButton.click();\n        const sigModalButton = document.querySelector('.signature-row-content');\n        sigModalButton.click();\n      }),\n      [ShortcutKeys[Shortcuts.SQUIGGLY]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextSquigglyAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextSquiggly');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.HIGHLIGHT]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextHighlightAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextHighlight');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.STRIKEOUT]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextStrikeoutAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextStrikeout');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.UNDERLINE]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextUnderlineAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextUnderline');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.HOME]]: () => {\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        setCurrentPage(1, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.END]]: this.createToolHotkeyHandler(() => {\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        const pageCount = selectors.getTotalPages(getState());\n        setCurrentPage(pageCount, activeDocumentViewerKey);\n      }),\n    };\n  },\n  /**\n   * Returns a function that will be used as a handler to a hotkey\n   * @param {func} handler a function that only gets called when no textarea or input elements are focused\n   * @ignore\n   */\n  createToolHotkeyHandler(handler) {\n    const { getState } = this.store;\n\n    return (...args) => {\n      const openElements = selectors.getOpenElements(getState());\n      const currentToolName = core.getToolMode().name;\n\n      // disable changing tool when the signature overlay is opened.\n      const isSignatureModalOpen =\n        currentToolName === window.Core.Tools.ToolNames.SIGNATURE && openElements['signatureModal'];\n\n      if (isFocusingElement() || isSignatureModalOpen) {\n        return;\n      }\n\n      handler(...args);\n    };\n  },\n  getShortcutKeyMap() {\n    const { getState } = this.store;\n    return selectors.getShortcutKeyMap(getState());\n  },\n  setShortcutKey(shortcut, key) {\n    const { dispatch } = this.store;\n    const shortcutKeyMap = { ...this.getShortcutKeyMap() };\n    this.off(shortcutKeyMap[shortcut]);\n    this.on(key, this.keyHandlerMap[ShortcutKeys[shortcut]]);\n    shortcutKeyMap[shortcut] = key;\n    dispatch(actions.setShortcutKeyMap(shortcutKeyMap));\n  },\n  hasConflict(shortcut, command) {\n    const shortcutKeyMap = this.getShortcutKeyMap();\n    const existingKeys = Object.keys(shortcutKeyMap).filter((item) => item !== shortcut).map((item) => shortcutKeyMap[item]);\n    for (const key of existingKeys) {\n      if (key === command || splitKey(key).includes(command)) {\n        return true;\n      }\n    }\n    return false;\n  },\n  enableShortcut(shortcut) {\n    this.setShortcutKey(shortcut, this.getShortcutKeyMap()[shortcut]);\n  },\n  disableShortcut(shortcut) {\n    this.off(this.getShortcutKeyMap()[shortcut]);\n  }\n};\n\nexport default Object.create(HotkeysManager);\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst propTypes = {\n  children: PropTypes.node,\n  dataElement: PropTypes.string,\n  type: PropTypes.string\n};\n\n/*\n * Custom hook that makes sure we can use this component in unit tests and storybook easier. If Redux context is not available, it will\n * return defaultValue given, which is false by default. If redux context is available like in normal case, it will get the value\n * from redux store.\n */\nfunction useIsDisabledWithDefaultValue(selector, defaultValue = false) {\n  try {\n    return useSelector(selector);\n  } catch (e) {\n    if (e.message !== 'could not find react-redux context value; please ensure the component is wrapped in a <Provider>') {\n      // If error don't throw it, just return default value, or we break chromatic tests\n      // throw e;\n    }\n  }\n  return defaultValue;\n}\n\nconst DataElementWrapper = React.forwardRef(({ type = 'div', children, dataElement, ...props }, ref) => {\n  const isDisabled = useIsDisabledWithDefaultValue((state) => selectors.isElementDisabled(state, dataElement));\n  if (isDisabled) {\n    return null;\n  }\n\n  if (type === 'button') {\n    return (\n      <button ref={ref} data-element={dataElement} {...props}>\n        {children}\n      </button>\n    );\n  }\n  return (\n    <div ref={ref} data-element={dataElement} {...props}>\n      {children}\n    </div>\n  );\n});\n\nDataElementWrapper.displayName = 'DataElementWrapper';\nDataElementWrapper.propTypes = propTypes;\n\nexport default DataElementWrapper;\n","import DataElementWrapper from './DataElementWrapper';\n\nexport default DataElementWrapper;","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","import getRootNode from './getRootNode';\nimport useMedia from 'hooks/useMedia';\nimport { MOBILE_SIZE, TABLET_SIZE } from 'constants/deviceSizes';\n\nexport const isMobileSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth <= MOBILE_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(max-width: ${MOBILE_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isTabletSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth > MOBILE_SIZE && getRootNode()?.host.clientWidth <= TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(min-width: ${MOBILE_SIZE + 1}px) and (max-width: ${TABLET_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isTabletAndMobileSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth <= TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(max-width: ${TABLET_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isDesktopSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth > TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(min-width: ${TABLET_SIZE + 1}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};","export const PRIORITY_THREE = 3;\nexport const PRIORITY_TWO = 2;\nexport const PRIORITY_ONE = 1;","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n","import i18next from 'i18next';\n\nexport const annotationMapKeys = {\n  SIGNATURE: 'signature',\n  FREE_HAND: 'freeHand',\n  FREE_HAND_HIGHLIGHT: 'freeHandHighlight',\n  FREE_TEXT: 'freeText',\n  MARK_INSERT_TEXT: 'markInsertText',\n  MARK_REPLACE_TEXT: 'markReplaceText',\n  DATE_FREE_TEXT: 'dateFreeText',\n  DISTANCE_MEASUREMENT: 'distanceMeasurement',\n  PERIMETER_MEASUREMENT: 'perimeterMeasurement',\n  ARC_MEASUREMENT: 'arcMeasurement',\n  RECTANGULAR_AREA_MEASUREMENT: 'rectangularAreaMeasurement',\n  CLOUDY_RECTANGULAR_AREA_MEASUREMENT: 'cloudyRectangularAreaMeasurement',\n  AREA_MEASUREMENT: 'areaMeasurement',\n  ELLIPSE_MEASUREMENT: 'ellipseMeasurement',\n  COUNT_MEASUREMENT: 'countMeasurement',\n  CALLOUT: 'callout',\n  LINE: 'line',\n  ARROW: 'arrow',\n  POLYGON: 'polygon',\n  CLOUD: 'cloud',\n  HIGHLIGHT: 'highlight',\n  UNDERLINE: 'underline',\n  SQUIGGLY: 'squiggly',\n  STRIKEOUT: 'strikeout',\n  REDACTION: 'redaction',\n  RECTANGLE: 'rectangle',\n  ELLIPSE: 'ellipse',\n  POLYLINE: 'polyline',\n  STICKY_NOTE: 'stickyNote',\n  STAMP: 'stamp',\n  IMAGE: 'image',\n  EDIT: 'edit',\n  PAN: 'pan',\n  CONTENT_EDIT_TOOL: 'ContentEditTool',\n  ADD_IMAGE_CONTENT: 'AddImageContentTool',\n  ADD_PARAGRAPH_TOOL: 'AddParagraphTool',\n  TEXT_SELECT: 'textSelect',\n  MARQUEE_ZOOM_TOOL: 'marqueeZoomTool',\n  MULTI_STYLE: 'MultiStyle',\n  ERASER: 'eraser',\n  CROP_PAGE: 'cropPage',\n  FILE_ATTACHMENT: 'fileattachment',\n  SOUND: 'sound',\n  THREE_D_ANNOTATION: 'threeDAnnotation',\n  TEXT_FIELD: 'textField',\n  SIGNATURE_FORM_FIELD: 'signatureFormField',\n  CHECK_BOX_FORM_FIELD: 'checkBoxFormField',\n  RADIO_BUTTON_FORM_FIELD: 'radioButtonFormField',\n  LIST_BOX_FORM_FIELD: 'listBoxFormField',\n  COMBO_BOX_FORM_FIELD: 'comboBoxFormField',\n  ARC: 'arc',\n  CHANGE_VIEW: 'changeView'\n};\n\n/**\n * this is the map we used to get information about annotations and tools\n * for example, we can look for map.freeHand.currentStyleTab to get the current color palette for freeHandAnnotation and freeHandTool\n * ideally, this map file should be the only place which provides information about annotations and tools\n * if you are tempted to create a new map file(which maps a tool/annotation to something else) under this constants folder\n * please make sure that it is not possible to implement that map here\n * @ignore\n */\nconst map = {\n  [annotationMapKeys.SIGNATURE]: {\n    icon: 'icon-tool-signature',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['AnnotationCreateSignature'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation &&\n      annotation.Subject === i18next.t('annotation.signature'),\n  },\n  [annotationMapKeys.FREE_HAND]: {\n    icon: 'icon-tool-pen-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHand',\n      'AnnotationCreateFreeHand2',\n      'AnnotationCreateFreeHand3',\n      'AnnotationCreateFreeHand4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.FREE_HAND_HIGHLIGHT]: {\n    icon: 'icon-tool-pen-highlight',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHandHighlight',\n      'AnnotationCreateFreeHandHighlight2',\n      'AnnotationCreateFreeHandHighlight3',\n      'AnnotationCreateFreeHandHighlight4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.FREE_TEXT]: {\n    icon: 'icon-tool-text-free-text',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateFreeText',\n      'AnnotationCreateFreeText2',\n      'AnnotationCreateFreeText3',\n      'AnnotationCreateFreeText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Core.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  [annotationMapKeys.MARK_INSERT_TEXT]: {\n    icon: 'ic-insert text',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateMarkInsertText',\n      'AnnotationCreateMarkInsertText2',\n      'AnnotationCreateMarkInsertText3',\n      'AnnotationCreateMarkInsertText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.CaretAnnotation\n  },\n  [annotationMapKeys.MARK_REPLACE_TEXT]: {\n    icon: 'ic-replace text',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateMarkReplaceText',\n      'AnnotationCreateMarkReplaceText2',\n      'AnnotationCreateMarkReplaceText3',\n      'AnnotationCreateMarkReplaceText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.CaretAnnotation\n  },\n  [annotationMapKeys.DATE_FREE_TEXT]: {\n    icon: 'icon-tool-fill-and-sign-calendar',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateDateFreeText',\n      'AnnotationCreateDateFreeText2',\n      'AnnotationCreateDateFreeText3',\n      'AnnotationCreateDateFreeText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n        window.Core.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  [annotationMapKeys.DISTANCE_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-distance-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateDistanceMeasurement',\n      'AnnotationCreateDistanceMeasurement2',\n      'AnnotationCreateDistanceMeasurement3',\n      'AnnotationCreateDistanceMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n      annotation.IT === 'LineDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.PERIMETER_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-perimeter',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePerimeterMeasurement',\n      'AnnotationCreatePerimeterMeasurement2',\n      'AnnotationCreatePerimeterMeasurement3',\n      'AnnotationCreatePerimeterMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolylineAnnotation &&\n      annotation.IT === 'PolyLineDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.ARC_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-arc',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArcMeasurement',\n      'AnnotationCreateArcMeasurement2',\n      'AnnotationCreateArcMeasurement3',\n      'AnnotationCreateArcMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.ArcAnnotation &&\n      annotation.IT === 'ArcDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.RECTANGULAR_AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangularAreaMeasurement',\n      'AnnotationCreateRectangularAreaMeasurement2',\n      'AnnotationCreateRectangularAreaMeasurement3',\n      'AnnotationCreateRectangularAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  [annotationMapKeys.CLOUDY_RECTANGULAR_AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_cloudy_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCloudyRectangularAreaMeasurement',\n      'AnnotationCreateCloudyRectangularAreaMeasurement2',\n      'AnnotationCreateCloudyRectangularAreaMeasurement3',\n      'AnnotationCreateCloudyRectangularAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  [annotationMapKeys.AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateAreaMeasurement',\n      'AnnotationCreateAreaMeasurement2',\n      'AnnotationCreateAreaMeasurement3',\n      'AnnotationCreateAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.ELLIPSE_MEASUREMENT]: {\n    icon: 'ic_annotation_ellipse_area_black',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipseMeasurement',\n      'AnnotationCreateEllipseMeasurement2',\n      'AnnotationCreateEllipseMeasurement3',\n      'AnnotationCreateEllipseMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.EllipseAnnotation &&\n      annotation.IT === 'EllipseDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.COUNT_MEASUREMENT]: {\n    icon: 'ic_check_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateCountMeasurement',\n      'AnnotationCreateCountMeasurement2',\n      'AnnotationCreateCountMeasurement3',\n      'AnnotationCreateCountMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StickyAnnotation &&\n      annotation.getCustomData('trn-is-count')\n  },\n  [annotationMapKeys.CALLOUT]: {\n    icon: 'icon-tool-callout-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCallout',\n      'AnnotationCreateCallout2',\n      'AnnotationCreateCallout3',\n      'AnnotationCreateCallout4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Core.Annotations.FreeTextAnnotation.Intent.FreeTextCallout,\n  },\n  [annotationMapKeys.LINE]: {\n    icon: 'icon-tool-shape-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateLine',\n      'AnnotationCreateLine2',\n      'AnnotationCreateLine3',\n      'AnnotationCreateLine4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n    annotation.IT !== 'LineArrow',\n  },\n  [annotationMapKeys.ARROW]: {\n    icon: 'icon-tool-shape-arrow',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArrow',\n      'AnnotationCreateArrow2',\n      'AnnotationCreateArrow3',\n      'AnnotationCreateArrow4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n    annotation.IT === 'LineArrow',\n  },\n  [annotationMapKeys.POLYGON]: {\n    icon: 'icon-tool-shape-polygon',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygon',\n      'AnnotationCreatePolygon2',\n      'AnnotationCreatePolygon3',\n      'AnnotationCreatePolygon4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.Style !== 'cloudy',\n  },\n  [annotationMapKeys.CLOUD]: {\n    icon: 'icon-tool-shape-cloud',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygonCloud',\n      'AnnotationCreatePolygonCloud2',\n      'AnnotationCreatePolygonCloud3',\n      'AnnotationCreatePolygonCloud4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.Style === 'cloudy',\n  },\n  [annotationMapKeys.HIGHLIGHT]: {\n    icon: 'icon-tool-text-manipulation-highlight',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextHighlight',\n      'AnnotationCreateTextHighlight2',\n      'AnnotationCreateTextHighlight3',\n      'AnnotationCreateTextHighlight4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextHighlightAnnotation,\n  },\n  [annotationMapKeys.UNDERLINE]: {\n    icon: 'icon-tool-text-manipulation-underline',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextUnderline',\n      'AnnotationCreateTextUnderline2',\n      'AnnotationCreateTextUnderline3',\n      'AnnotationCreateTextUnderline4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextUnderlineAnnotation,\n  },\n  [annotationMapKeys.SQUIGGLY]: {\n    icon: 'icon-tool-text-manipulation-squiggly',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextSquiggly',\n      'AnnotationCreateTextSquiggly2',\n      'AnnotationCreateTextSquiggly3',\n      'AnnotationCreateTextSquiggly4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextSquigglyAnnotation,\n  },\n  [annotationMapKeys.STRIKEOUT]: {\n    icon: 'icon-tool-text-manipulation-strikethrough',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextStrikeout',\n      'AnnotationCreateTextStrikeout2',\n      'AnnotationCreateTextStrikeout3',\n      'AnnotationCreateTextStrikeout4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextStrikeoutAnnotation,\n  },\n  [annotationMapKeys.REDACTION]: {\n    icon: 'icon-tool-select-area-redaction',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRedaction',\n      'AnnotationCreateRedaction2',\n      'AnnotationCreateRedaction3',\n      'AnnotationCreateRedaction4'\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RedactionAnnotation,\n  },\n  [annotationMapKeys.RECTANGLE]: {\n    icon: 'icon-tool-shape-rectangle',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangle',\n      'AnnotationCreateRectangle2',\n      'AnnotationCreateRectangle3',\n      'AnnotationCreateRectangle4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === '',\n  },\n  [annotationMapKeys.ELLIPSE]: {\n    icon: 'icon-tool-shape-oval',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipse',\n      'AnnotationCreateEllipse2',\n      'AnnotationCreateEllipse3',\n      'AnnotationCreateEllipse4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.EllipseAnnotation,\n  },\n  [annotationMapKeys.ARC]: {\n    icon: 'icon-tool-arc',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArc',\n      'AnnotationCreateArc2',\n      'AnnotationCreateArc3',\n      'AnnotationCreateArc4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.ArcAnnotation\n  },\n  [annotationMapKeys.POLYLINE]: {\n    icon: 'icon-tool-shape-polyline',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePolyline',\n      'AnnotationCreatePolyline2',\n      'AnnotationCreatePolyline3',\n      'AnnotationCreatePolyline4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolylineAnnotation,\n  },\n  [annotationMapKeys.STICKY_NOTE]: {\n    icon: 'icon-tool-comment-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateSticky',\n      'AnnotationCreateSticky2',\n      'AnnotationCreateSticky3',\n      'AnnotationCreateSticky4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StickyAnnotation,\n  },\n  [annotationMapKeys.CHANGE_VIEW]: {\n    icon: 'icon-tool-changeview',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateChangeViewTool',\n      'AnnotationCreateChangeViewTool2',\n      'AnnotationCreateChangeViewTool3',\n      'AnnotationCreateChangeViewTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StampAnnotation && annotation.ViewState,\n  },\n  [annotationMapKeys.IMAGE]: {\n    icon: 'icon-tool-image-line',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [\n      'AnnotationCreateRubberStamp',\n    ],\n    annotationCheck: (annotation) => {\n      return annotation instanceof window.Core.Annotations.StampAnnotation &&\n      annotation.ToolName === 'AnnotationCreateStamp';\n    },\n  },\n  [annotationMapKeys.STAMP]: {\n    icon: 'icon-tool-stamp-line',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [\n      'AnnotationCreateStamp',\n    ],\n    annotationCheck: (annotation) => {\n      return annotation instanceof window.Core.Annotations.StampAnnotation;\n    },\n  },\n  [annotationMapKeys.EDIT]: {\n    icon: 'ic_select_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationEdit'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.PAN]: {\n    icon: 'icon-header-pan',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['Pan'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.CONTENT_EDIT_TOOL]: {\n    icon: 'ic_edit_page_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['ContentEditTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ADD_PARAGRAPH]: {\n    icon: 'ic-paragraph',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AddParagraphTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ADD_IMAGE_CONTENT]: {\n    icon: 'icon-tool-image-line',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['AddImageContentTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.TEXT_SELECT]: {\n    icon: 'textselect_cursor',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['TextSelect'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.MARQUEE_ZOOM_TOOL]: {\n    icon: null,\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['MarqueeZoomTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.MULTI_STYLE]: {\n    icon: '',\n    iconColor: null,\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ERASER]: {\n    icon: 'ic_annotation_eraser_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationEraserTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.CROP_PAGE]: {\n    icon: 'ic_crop_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['CropPage'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.FILE_ATTACHMENT]: {\n    icon: 'ic_fileattachment_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['AnnotationCreateFileAttachment'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FileAttachmentAnnotation,\n  },\n  [annotationMapKeys.SOUND]: {\n    icon: 'ic_sound_24px',\n    iconColor: 'FillColor',\n    validStyleTabs: ['FillColor', 'StrokeColor'],\n    currentStyleTab: 'FillColor',\n    styleTabs: ['FillColor', 'StrokeColor'],\n    toolNames: [],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.SoundAnnotation,\n  },\n  [annotationMapKeys.THREE_D_ANNOTATION]: {\n    icon: 'icon-tool-model3d',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationCreateThreeD'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.Model3DAnnotation,\n  },\n  [annotationMapKeys.TEXT_FIELD]: {\n    icon: 'icon-form-field-text',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'TextFormFieldCreateTool',\n      'TextFormFieldCreateTool2',\n      'TextFormFieldCreateTool3',\n      'TextFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'TextFormField'\n  },\n  [annotationMapKeys.SIGNATURE_FORM_FIELD]: {\n    icon: 'icon-form-field-signature',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'SignatureFormFieldCreateTool',\n      'SignatureFormFieldCreateTool2',\n      'SignatureFormFieldCreateTool3',\n      'SignatureFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'SignatureFormField'\n  },\n  [annotationMapKeys.CHECK_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-checkbox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['CheckBoxFormFieldCreateTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'CheckBoxFormField'\n  },\n  [annotationMapKeys.RADIO_BUTTON_FORM_FIELD]: {\n    icon: 'icon-form-field-radiobutton',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['RadioButtonFormFieldCreateTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'RadioButtonFormField'\n  },\n  [annotationMapKeys.LIST_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-listbox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ListBoxFormFieldCreateTool',\n      'ListBoxFormFieldCreateTool2',\n      'ListBoxFormFieldCreateTool3',\n      'ListBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ListBoxFormField'\n  },\n  [annotationMapKeys.COMBO_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-combobox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ComboBoxFormFieldCreateTool',\n      'ComboBoxFormFieldCreateTool2',\n      'ComboBoxFormFieldCreateTool3',\n      'ComboBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ComboBoxFormField'\n  },\n};\n\nexport const mapToolNameToKey = (toolName) => Object.keys(map).find((key) => map[key].toolNames.includes(toolName));\n\nexport const mapAnnotationToKey = (annotation) => Object.keys(map).find((key) => {\n  const { annotationCheck } = map[key];\n  return annotationCheck && annotationCheck(annotation);\n});\n\nexport const mapAnnotationToToolName = (annotation) => map[mapAnnotationToKey(annotation)].toolNames[0];\n\nexport const copyMapWithDataProperties = (...properties) => Object.keys(map).reduce((newMap, key) => {\n  newMap[key] = {};\n  properties.forEach((property) => {\n    newMap[key][property] = map[key][property];\n  });\n\n  return newMap;\n}, {});\n\nexport const register = (tool, annotationConstructor, customAnnotCheckFunc) => {\n  const { toolName, buttonImage, toolObject } = tool;\n  const key = toolName;\n  const styleTabs = ['TextColor', 'StrokeColor', 'FillColor'].filter(\n    (property) => toolObject.defaults && toolObject.defaults[property],\n  );\n\n  map[key] = {\n    icon: buttonImage,\n    iconColor: styleTabs[0],\n    currentStyleTab: styleTabs[0],\n    styleTabs,\n    toolNames: [toolName],\n    annotationCheck: customAnnotCheckFunc ?\n      (annotation) => customAnnotCheckFunc(annotation) :\n      (annotationConstructor ? (annotation) => annotation instanceof annotationConstructor : null)\n  };\n};\n\n// we return an empty object here to prevent some components from accessing undefined\n// if the map doesn't have a key for some annotations\nexport const getDataWithKey = (key) => map[key] || { icon: 'ic_fileattachment_24px' };\n\nexport const getMap = () => map;\n\nexport const updateAnnotationStylePopupTabs = (annotationKey, newAnnotationStyleTabs, initialTab) => {\n  if (map[annotationKey] === undefined) {\n    return console.error(\n      'The annotation key is invalid. Please provide a valid annotation key. Valid annotation keys can be retrieved through instance.UI.AnnotationKeys.'\n    );\n  }\n\n  newAnnotationStyleTabs = [...new Set(newAnnotationStyleTabs)];\n\n  const { validStyleTabs } = map[annotationKey];\n  const invalidTabs = newAnnotationStyleTabs.filter((styleTab) => {\n    return !validStyleTabs.includes(styleTab);\n  });\n\n  if (invalidTabs.length > 0) {\n    return console.error(\n      `Please provide new valid annotation style tabs. The valid tabs are: ${map[annotationKey].validStyleTabs.join(', ')}`\n    );\n  }\n\n  if (initialTab && !newAnnotationStyleTabs.includes(initialTab)) {\n    return console.error(\n      `Initial tab is not valid. Valid initial tabs are: ${newAnnotationStyleTabs.join(', ')}`\n    );\n  }\n\n  map[annotationKey].styleTabs = newAnnotationStyleTabs;\n  if (!initialTab) {\n    map[annotationKey].currentStyleTab = newAnnotationStyleTabs[0];\n  } else {\n    map[annotationKey].currentStyleTab = initialTab;\n  }\n  return true;\n};\n\n\n/**\n * A constant containing keys that identify annotations.\n * @name UI.AnnotationKeys\n * @property {string} SIGNATURE The key represents the signature annotation\n * @property {string} FREE_HAND The key represents the free hand annotation\n * @property {string} FREE_HAND_HIGHLIGHT The key represents the free hand highlight annotation\n * @property {string} FREE_TEXT The key represents the free text annotation\n * @property {string} DATE_FREE_TEXT The key represents the date free text annotation\n * @property {string} DISTANCE_MEASUREMENT The key represents the distance measurement annotation\n * @property {string} PERIMETER_MEASUREMENT The key represents the perimeter measurement annotation\n * @property {string} ARC_MEASUREMENT The key represents the arc measurement annotation\n * @property {string} RECTANGULAR_AREA_MEASUREMENT The key represents the rectangualr area measurement annotation\n * @property {string} CLOUDY_RECTANGULAR_AREA_MEASUREMENT The key represents the cloudy rectangular area measurement annotation\n * @property {string} AREA_MEASUREMENT The key represents the area measurement annotation\n * @property {string} ELLIPSE_MEASUREMENT The key represents the ellipse measurement annotation\n * @property {string} COUNT_MEASUREMENT The key represents the count measurement annotation\n * @property {string} CALLOUT The key represents the callout annotation\n * @property {string} LINE The key represents the line annotation\n * @property {string} ARROW The key represents the arrow annotation\n * @property {string} POLYGON The key represents the polygon annotation\n * @property {string} CLOUD The key represents the cloud annotation\n * @property {string} HIGHLIGHT The key represents the highlight annotation\n * @property {string} UNDERLINE The key represents the underline annotation\n * @property {string} SQUIGGLY The key represents the squiggly annotation\n * @property {string} STRIKEOUT The key represents the strikeout annotation\n * @property {string} REDACTION The key represents the redaction annotation\n * @property {string} RECTANGLE The key represents the rectangle annotation\n * @property {string} ELLIPSE The key represents the ellipse annotation\n * @property {string} ARC The key represents the arc annotation\n * @property {string} POLYLINE The key represents the polyline annotation\n * @property {string} STICKYNOTE The key represents the sticky note annotation\n * @property {string} IMAGE The key represents the image annotation\n * @property {string} STAMP The key represents the stamp annotaiton\n * @property {string} EDIT The key represents the edit annotation\n * @property {string} PAN The key represents the pan annotation\n * @property {string} CONTENT_EDIT_TOOL The key represents the content edit tool annotation\n * @property {string} ADD_PARAGRAPH_TOOL The key represents the add paragraph tool annotation\n * @property {string} TEXT_SELECT The key represents the text select annotation\n * @property {string} MARQUEE_ZOOM_TOOL The key represents the marquee zoom tool annotation\n * @property {string} ERASER The key represents the eraser annotation\n * @property {string} CROP_PAGE The key represents the crop page annotation\n * @property {string} FILE_ATTACHMENT The key represents the file attachment annotation\n * @property {string} SOUND The key represents the sound annotation\n * @property {string} THREE_D_ANNOTATION The key represents the 3D annotation\n * @property {string} TEXT_FIELD The key represents the text field annotation\n * @property {string} SIGNATURE_FORM_FIELD The key represents the signature form field annotation\n * @property {string} CHECK_BOX_FORM_FIELD The key represents the check box form field annotaiton\n * @property {string} RADIO_BUTTON_FORM_FIELD The key represents the radio button form field annotation\n * @property {string} LIST_BOX_FORM_FIELD The key represents list box form field annotation\n * @property {string} COMBO_BOX_FORM_FIELD The key represents the combo box form field annotation\n */\n\nexport const AnnotationKeys = {\n  SIGNATURE: 'signature',\n  FREE_HAND: 'freeHand',\n  FREE_HAND_HIGHLIGHT: 'freeHandHighlight',\n  FREE_TEXT: 'freeText',\n  DATE_FREE_TEXT: 'dateFreeText',\n  DISTANCE_MEASUREMENT: 'distanceMeasurement',\n  PERIMETER_MEASUREMENT: 'perimeterMeasurement',\n  ARC_MEASUREMENT: 'arcMeasurement',\n  RECTANGULAR_AREA_MEASUREMENT: 'rectangularAreaMeasurement',\n  CLOUDY_RECTANGULAR_AREA_MEASUREMENT: 'cloudyRectangularAreaMeasurement',\n  AREA_MEASUREMENT: 'areaMeasurement',\n  ELLIPSE_MEASUREMENT: 'ellipseMeasurement',\n  COUNT_MEASUREMENT: 'countMeasurement',\n  CALLOUT: 'callout',\n  LINE: 'line',\n  ARROW: 'arrow',\n  POLYGON: 'polygon',\n  CLOUD: 'cloud',\n  HIGHLIGHT: 'highlight',\n  UNDERLINE: 'underline',\n  SQUIGGLY: 'squiggly',\n  STRIKEOUT: 'strikeout',\n  REDACTION: 'redaction',\n  RECTANGLE: 'rectangle',\n  ELLIPSE: 'ellipse',\n  ARC: 'arc',\n  POLYLINE: 'polyline',\n  STICKYNOTE: 'stickyNote',\n  IMAGE: 'image',\n  STAMP: 'stamp',\n  EDIT: 'edit',\n  PAN: 'pan',\n  CONTENT_EDIT_TOOL: 'contentEditTool',\n  ADD_PARAGRAPH_TOOL: 'addParagraphTool',\n  TEXT_SELECT: 'textSelect',\n  MARQUEE_ZOOM_TOOL: 'marqueeZoomTool',\n  ERASER: 'eraser',\n  CROP_PAGE: 'cropPage',\n  FILE_ATTACHMENT: 'fileAttachment',\n  SOUND: 'sound',\n  THREE_D_ANNOTATION: 'threeDAnnotation',\n  TEXT_FIELD: 'textField',\n  SIGNATURE_FORM_FIELD: 'signatureFormField',\n  CHECK_BOX_FORM_FIELD: 'checkBoxFormField',\n  RADIO_BUTTON_FORM_FIELD: 'radioButtonFormField',\n  LIST_BOX_FORM_FIELD: 'listBoxFormField',\n  COMBO_BOX_FORM_FIELD: 'comboBoxFormField',\n};\n\n/**\n * The different available style tabs in the annotation popup.\n * @name UI.AnnotationStylePopupTabs\n * @property {string} TEXT_COLOR Indicates the text style tab in the annotation popup window\n * @property {string} STROKE_COLOR Indicates the stroke color tab in the annotation popup window\n * @property {string} FILL_COLOR Indicates the fill color tab in the annotation popup window\n */\n\nexport const AnnotationStylePopupTabs = {\n  TEXT_COLOR: 'TextColor',\n  STROKE_COLOR: 'StrokeColor',\n  FILL_COLOR: 'FillColor'\n};\n","export default function _extends() {\n  _extends = Object.assign || 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  };\n\n  return _extends.apply(this, arguments);\n}","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","export const workerTypes = {\n  IMAGE: 'image',\n  PDF: 'pdf',\n  OFFICE: 'office',\n  LEGACY_OFFICE: 'legacyOffice',\n  OFFICE_EDITOR: 'officeEditor',\n  WEBVIEWER_SERVER: 'webviewerServer',\n  XOD: 'xod',\n  CONTENT_EDIT: 'contentEdit',\n  ALL: 'all',\n};","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n  var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n  return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  if (typeof props.css === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return /*#__PURE__*/createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return /*#__PURE__*/createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n    return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n  });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar un$Reverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return un$Reverse(this);\n  }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default (isIOS || isAndroid) ? 'Pan' : 'AnnotationEdit';","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.push(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.push(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\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 (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { isOfficeEditorMode } from 'helpers/officeEditor';\n\nlet minZoom = 0.05;\nlet maxZoom = 99.99;\nconst MAX_OFFICE_EDITOR_ZOOM = 2;\n\nexport const getMinZoomLevel = () => minZoom;\n\nexport const setMinZoomLevel = (zoom) => {\n  minZoom = zoom;\n};\n\nexport const getMaxZoomLevel = () => {\n  if (isOfficeEditorMode()) {\n    return MAX_OFFICE_EDITOR_ZOOM;\n  }\n  return maxZoom;\n};\n\nexport const setMaxZoomLevel = (zoom) => {\n  maxZoom = zoom;\n};\n\nexport const stepToZoomFactorRangesMap = {\n  '0.075': [null, 0.8],\n  '0.25': [0.8, 1.5],\n  '0.5': [1.5, 2.5],\n  '1': [2.5, 4],\n  '2': [4, 8],\n  '4': [8, 32],\n  '8': [32, 64],\n  '16': [64, null],\n};\n\nexport const defaultZoomList = [0.1, 0.25, 0.5, 1, 1.25, 1.5, 2, 4, 8, 16, 64];\n\nexport default {\n  setMinZoomLevel,\n  setMaxZoomLevel,\n  getMinZoomLevel,\n  getMaxZoomLevel,\n};\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\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 { Component, createContext } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _css from '@emotion/css';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport AutosizeInput from 'react-input-autosize';\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, state, className) {\n  var arr = [className];\n\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (Array.isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var newValue = onInputChange(inputValue, actionMeta);\n    if (typeof newValue === 'string') return newValue;\n  }\n\n  return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  var docEl = document.documentElement; // suck it, flow...\n\n  if (style.position === 'fixed') return docEl;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n\n  animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: maxHeight\n  }; // something went wrong, return default state\n\n  if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = window.innerHeight;\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        } // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      } // 4. Forked beviour when there isn't enough space below\n      // AUTO: flip the menu, render above\n\n\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n      if (placement === 'bottom') {\n        scrollTo(scrollParent, scrollDown);\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      }\n\n      break;\n\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      } // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n\n\n      return {\n        placement: 'bottom',\n        maxHeight: maxHeight\n      };\n\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n  } // fulfil contract with flow: implicit return value of undefined\n\n\n  return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {\n    label: 'menu'\n  }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n  getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n  _inherits(MenuPlacer, _Component);\n\n  var _super = _createSuper(MenuPlacer);\n\n  function MenuPlacer() {\n    var _this;\n\n    _classCallCheck(this, MenuPlacer);\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    _this.state = {\n      maxHeight: _this.props.maxMenuHeight,\n      placement: null\n    };\n\n    _this.getPlacement = function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      if (!ref) return; // DO NOT scroll if position is fixed\n\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });\n      var getPortalPlacement = _this.context.getPortalPlacement;\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    };\n\n    _this.getUpdatedProps = function () {\n      var menuPlacement = _this.props.menuPlacement;\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n      return _objectSpread(_objectSpread({}, _this.props), {}, {\n        placement: placement,\n        maxHeight: _this.state.maxHeight\n      });\n    };\n\n    return _this;\n  }\n\n  _createClass(MenuPlacer, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        ref: this.getPlacement,\n        placerProps: this.getUpdatedProps()\n      });\n    }\n  }]);\n\n  return MenuPlacer;\n}(Component);\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menu', props),\n    className: cx({\n      menu: true\n    }, className)\n  }, innerProps, {\n    ref: innerRef\n  }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n  var maxHeight = _ref4.maxHeight,\n      baseUnit = _ref4.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isMulti = props.isMulti,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menuList', props),\n    className: cx({\n      'menu-list': true,\n      'menu-list--is-multi': isMulti\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n  var _ref5$theme = _ref5.theme,\n      baseUnit = _ref5$theme.spacing.baseUnit,\n      colors = _ref5$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n    textAlign: 'center'\n  };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('noOptionsMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--no-options': true\n    }, className)\n  }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('loadingMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--loading': true\n    }, className)\n  }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n  var rect = _ref6.rect,\n      offset = _ref6.offset,\n      position = _ref6.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n  _inherits(MenuPortal, _Component2);\n\n  var _super2 = _createSuper(MenuPortal);\n\n  function MenuPortal() {\n    var _this2;\n\n    _classCallCheck(this, MenuPortal);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _this2.state = {\n      placement: null\n    };\n\n    _this2.getPortalPlacement = function (_ref7) {\n      var placement = _ref7.placement;\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n      if (placement !== initialPlacement) {\n        _this2.setState({\n          placement: placement\n        });\n      }\n    };\n\n    return _this2;\n  }\n\n  _createClass(MenuPortal, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          appendTo = _this$props2.appendTo,\n          children = _this$props2.children,\n          controlElement = _this$props2.controlElement,\n          menuPlacement = _this$props2.menuPlacement,\n          position = _this$props2.menuPosition,\n          getStyles = _this$props2.getStyles;\n      var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n      if (!appendTo && !isFixed || !controlElement) {\n        return null;\n      }\n\n      var placement = this.state.placement || coercePlacement(menuPlacement);\n      var rect = getBoundingClientObj(controlElement);\n      var scrollDistance = isFixed ? 0 : window.pageYOffset;\n      var offset = rect[placement] + scrollDistance;\n      var state = {\n        offset: offset,\n        position: position,\n        rect: rect\n      }; // same wrapper element whether fixed or portalled\n\n      var menuWrapper = jsx(\"div\", {\n        css: getStyles('menuPortal', state)\n      }, children);\n      return jsx(PortalPlacementContext.Provider, {\n        value: {\n          getPortalPlacement: this.getPortalPlacement\n        }\n      }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n    }\n  }]);\n\n  return MenuPortal;\n}(Component);\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length) {\n      return false;\n    }\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // Custom handling for React\n\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i)) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n}\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : null,\n    pointerEvents: isDisabled ? 'none' : null,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({\n    css: getStyles('container', props),\n    className: cx({\n      '--is-disabled': isDisabled,\n      '--is-rtl': isRtl\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    alignItems: 'center',\n    display: 'flex',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      isMulti = props.isMulti,\n      getStyles = props.getStyles,\n      hasValue = props.hasValue;\n  return jsx(\"div\", {\n    css: getStyles('valueContainer', props),\n    className: cx({\n      'value-container': true,\n      'value-container--is-multi': isMulti,\n      'value-container--has-value': hasValue\n    }, className)\n  }, children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles;\n  return jsx(\"div\", {\n    css: getStyles('indicatorsContainer', props),\n    className: cx({\n      indicators: true\n    }, className)\n  }, children);\n};\n\nfunction _templateObject() {\n  var data = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"]);\n\n  _templateObject = function _templateObject() {\n    return data;\n  };\n\n  return data;\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = _objectWithoutProperties(_ref, [\"size\"]);\n\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n  var isFocused = _ref3.isFocused,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  return {\n    label: 'indicatorContainer',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('dropdownIndicator', props),\n    className: cx({\n      indicator: true,\n      'dropdown-indicator': true\n    }, className)\n  }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('clearIndicator', props),\n    className: cx({\n      indicator: true,\n      'clear-indicator': true\n    }, className)\n  }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n  var isDisabled = _ref4.isDisabled,\n      _ref4$theme = _ref4.theme,\n      baseUnit = _ref4$theme.spacing.baseUnit,\n      colors = _ref4$theme.colors;\n  return {\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, {\n    css: getStyles('indicatorSeparator', props),\n    className: cx({\n      'indicator-separator': true\n    }, className)\n  }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n  var isFocused = _ref5.isFocused,\n      size = _ref5.size,\n      _ref5$theme = _ref5.theme,\n      colors = _ref5$theme.colors,\n      baseUnit = _ref5$theme.spacing.baseUnit;\n  return {\n    label: 'loadingIndicator',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n      offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/_css({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : null,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n  });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('loadingIndicator', props),\n    className: cx({\n      indicator: true,\n      'loading-indicator': true\n    }, className)\n  }), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\nLoadingIndicator.defaultProps = {\n  size: 4\n};\n\nvar css = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    label: 'control',\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps,\n      menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef,\n    css: getStyles('control', props),\n    className: cx({\n      control: true,\n      'control--is-disabled': isDisabled,\n      'control--is-focused': isFocused,\n      'control--menu-is-open': menuIsOpen\n    }, className)\n  }, innerProps), children);\n};\n\nfunction ownKeys$1(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$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      label = props.label,\n      theme = props.theme,\n      selectProps = props.selectProps;\n  return jsx(\"div\", {\n    css: getStyles('group', props),\n    className: cx({\n      group: true\n    }, className)\n  }, jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    label: 'group',\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: '500',\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\nvar GroupHeading = function GroupHeading(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      theme = props.theme,\n      selectProps = props.selectProps,\n      cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", _extends({\n    css: getStyles('groupHeading', _objectSpread$1({\n      theme: theme\n    }, cleanProps)),\n    className: cx({\n      'group-heading': true\n    }, className)\n  }, cleanProps));\n};\n\nfunction ownKeys$2(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$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80\n  };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n  return {\n    label: 'input',\n    background: 0,\n    border: 0,\n    fontSize: 'inherit',\n    opacity: isHidden ? 0 : 1,\n    outline: 0,\n    padding: 0,\n    color: 'inherit'\n  };\n};\n\nvar Input = function Input(_ref2) {\n  var className = _ref2.className,\n      cx = _ref2.cx,\n      getStyles = _ref2.getStyles,\n      innerRef = _ref2.innerRef,\n      isHidden = _ref2.isHidden,\n      isDisabled = _ref2.isDisabled,\n      theme = _ref2.theme,\n      selectProps = _ref2.selectProps,\n      props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", {\n    css: getStyles('input', _objectSpread$2({\n      theme: theme\n    }, props))\n  }, jsx(AutosizeInput, _extends({\n    className: cx({\n      input: true\n    }, className),\n    inputRef: innerRef,\n    inputStyle: inputStyle(isHidden),\n    disabled: isDisabled\n  }, props)));\n};\n\nfunction ownKeys$3(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$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    label: 'multiValue',\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n\n  };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n    whiteSpace: 'nowrap'\n  };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused && colors.dangerLight,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n      innerProps = _ref5.innerProps;\n  return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\n\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n      className = props.className,\n      components = props.components,\n      cx = props.cx,\n      data = props.data,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      removeProps = props.removeProps,\n      selectProps = props.selectProps;\n  var Container = components.Container,\n      Label = components.Label,\n      Remove = components.Remove;\n  return jsx(ClassNames, null, function (_ref6) {\n    var css = _ref6.css,\n        emotionCx = _ref6.cx;\n    return jsx(Container, {\n      data: data,\n      innerProps: _objectSpread$3(_objectSpread$3({}, innerProps), {}, {\n        className: emotionCx(css(getStyles('multiValue', props)), cx({\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className))\n      }),\n      selectProps: selectProps\n    }, jsx(Label, {\n      data: data,\n      innerProps: {\n        className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n          'multi-value__label': true\n        }, className))\n      },\n      selectProps: selectProps\n    }, children), jsx(Remove, {\n      data: data,\n      innerProps: _objectSpread$3({\n        className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n          'multi-value__remove': true\n        }, className))\n      }, removeProps),\n      selectProps: selectProps\n    }));\n  });\n};\n\nMultiValue.defaultProps = {\n  cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'option',\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n    }\n  };\n};\n\nvar Option = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('option', props),\n    className: cx({\n      option: true,\n      'option--is-disabled': isDisabled,\n      'option--is-focused': isFocused,\n      'option--is-selected': isSelected\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'placeholder',\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    position: 'absolute',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('placeholder', props),\n    className: cx({\n      placeholder: true\n    }, className)\n  }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'singleValue',\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n    overflow: 'hidden',\n    position: 'absolute',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('singleValue', props),\n    className: cx({\n      'single-value': true,\n      'single-value--is-disabled': isDisabled\n    }, className)\n  }, innerProps), children);\n};\n\nfunction ownKeys$4(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$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread$4(_objectSpread$4({}, components), props.components);\n};\n\nexport { isDocumentElement as A, exportedEqual as B, cleanValue as C, scrollIntoView as D, noop as E, components as F, handleInputChange as G, MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, isTouchCapable as w, isMobileDevice as x, defaultComponents as y, classNames as z };\n","export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n","/**\n * Disable certain features in the WebViewer UI.\n * @method UI.disableFeatures\n * @param {Array.<string>} features Array of features to disable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableFeatures(instance.UI.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = false;\nexport default (store) => createFeatureAPI(enable, store);\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n","import core from 'core';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport getRootNode, { getInstanceNode } from 'helpers/getRootNode';\n\nfunction convertZoomStepFactorsToRangesMap(zoomStepFactors) {\n  const rangesMap = {};\n  zoomStepFactors.sort((a, b) => a.startZoom - b.startZoom);\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const zoomStepFactor = zoomStepFactors[i];\n    const nextZoomStepFactor = zoomStepFactors[i + 1];\n    rangesMap[`${zoomStepFactor.step / 100}`] =\n      nextZoomStepFactor ?\n        [\n          zoomStepFactor.startZoom / 100,\n          nextZoomStepFactor.startZoom / 100\n        ] :\n        [\n          zoomStepFactor.startZoom / 100,\n          null\n        ];\n  }\n  return rangesMap;\n}\n\nexport function getStep(currentZoomFactor) {\n  const zoomStepFactors = getInstanceNode().instance.UI.getZoomStepFactors();\n  const zoomFactorRangesMap = convertZoomStepFactorsToRangesMap(zoomStepFactors);\n  const steps = Object.keys(zoomFactorRangesMap);\n  const step = steps.find((step) => {\n    const zoomFactorRanges = zoomFactorRangesMap[step];\n    return isCurrentZoomFactorInRange(currentZoomFactor, zoomFactorRanges);\n  });\n  return parseFloat(step);\n}\n\nfunction isCurrentZoomFactorInRange(zoomFactor, ranges) {\n  const [rangeLowBound, rangeHighBound] = ranges;\n  if (rangeLowBound === null) {\n    return zoomFactor < rangeHighBound;\n  }\n  if (rangeHighBound === null) {\n    return zoomFactor >= rangeLowBound;\n  }\n  return zoomFactor >= rangeLowBound && zoomFactor < rangeHighBound;\n}\n\nfunction getViewCenterAfterScale(scale, isMultiViewerMode = false, documentViewerKey = 1) {\n  const documentContainer = isMultiViewerMode ? getRootNode().querySelector(`#DocumentContainer${documentViewerKey}`)\n    : getRootNode().querySelectorAll('.DocumentContainer')[0];\n  const documentWrapper = isMultiViewerMode ? getRootNode().querySelector(`#Document${documentViewerKey}`)\n    : getRootNode().querySelectorAll('.document')[0];\n  const clientX = window.innerWidth / 2;\n  const clientY = window.innerHeight / 2;\n\n  const x = (clientX + documentContainer.scrollLeft - documentWrapper.offsetLeft) * scale - clientX + documentContainer.offsetLeft;\n  const y = (clientY + documentContainer.scrollTop - documentWrapper.offsetTop) * scale - clientY + documentContainer.offsetTop;\n  return { x, y };\n}\n\nlet zoomStepHistory = [];\n\n// Keeping track of changes to zoomFactor outside this helper functions\nlet storedZoomFactor = -1;\n\nfunction zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode = false, documentViewerKey = 1) {\n  const scale = newZoomFactor / currentZoomFactor;\n  const { x, y } = getViewCenterAfterScale(scale, isMultiViewerMode, documentViewerKey);\n  core.zoomTo(newZoomFactor, x, y, documentViewerKey);\n  storedZoomFactor = newZoomFactor;\n}\n\nfunction resetZoomStepHistory() {\n  zoomStepHistory = [];\n}\n\nexport function fitToWidth(documentViewerKey = 1) {\n  resetZoomStepHistory();\n  core.fitToWidth(documentViewerKey);\n}\n\nexport function fitToPage(documentViewerKey = 1) {\n  resetZoomStepHistory();\n  core.fitToPage(documentViewerKey);\n}\n\n/**\n * zoomIn works as follows. Every time user zooms in we take current zoom level and compare it to\n * zoom factors map which currently is :\n * {\n    '0.075': [null, 0.8],\n    '0.25': [0.8, 1.5],\n    '0.5': [1.5, 2.5],\n    '1': [2.5, 4],\n    '2': [4, 8],\n    '4': [8, 32],\n    '8': [32, 64],\n    '16': [64, null],\n  }\n * Based on the range we select step size from this map. For example if current zoom level is 110% (1.1)\n * then we can see that it falls to range [0.8, 1.5] and step size for this is 0.25. We add this step\n * to current level so we end up to 1.35. We also store this step to stack so we can follow how after few steps we got there.\n *\n * We need to keep the step history to make our steps predictable in all cases.\n * Consider case where we start from zoom level 140% (1.4) and zoomIn. We would end up to 1.4 + 0.25 = 1.65 (165%).\n * If user would now click zoomOut, we would end up 1.65 - 0.5 = 1.15 (115%) which is not the same 140% where we started.\n * But as we store the step history we do 1.65 - 0.25 (value from step history) and end up to 1.4 (140%).\n * @ignore\n */\nexport function zoomIn(isMultiViewerMode = false, documentViewerKey = 1) {\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMaxZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] < 0) {\n    // if step history has steps and it has been opposite direction (zoomOut)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomOut was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    // thus here using absolute value\n    step = Math.abs(zoomStepHistory.pop());\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(step);\n  }\n  const newZoomFactor = Math.min(currentZoomFactor + step, getMaxZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n\n/**\n * See functionality from zoomIn. zoomOut works same but opposite direction.\n * @ignore\n */\nexport function zoomOut(isMultiViewerMode = false, documentViewerKey = 1) {\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMinZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] > 0) {\n    // if step history has steps and it has been opposite direction (zoomIn)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomIn was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    step = zoomStepHistory.pop();\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(-1 * step);\n  }\n  const newZoomFactor = Math.max(currentZoomFactor - step, getMinZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n\nexport function zoomTo(newZoomFactor, isMultiViewerMode = false, documentViewerKey = 1) {\n  // if user sets certain zoom level, then we reset the step history\n  resetZoomStepHistory();\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\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  } return WellKnownSymbolsStore[name];\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","export const redactionTypeMap = {\n  REGION: 'region',\n  TEXT: 'text',\n  FULL_PAGE: 'fullPage',\n  FULL_VIDEO_FRAME: 'fullVideoFrame',\n  AUDIO_REDACTION: 'audioRedaction',\n  FULL_VIDEO_FRAME_AND_AUDIO: 'fullVideoFrameAndAudio',\n  CREDIT_CARD: 'creditCard',\n  PHONE: 'phone',\n  IMAGE: 'image',\n  EMAIL: 'email',\n};\n\nexport const defaultRedactionTypes = {\n  [redactionTypeMap['REGION']]: {\n    icon: 'icon-tool-redaction-area',\n    label: 'redactionPanel.redactionItem.regionRedaction',\n  },\n  [redactionTypeMap['FULL_PAGE']]: {\n    icon: 'icon-header-page-manipulation-page-transition-page-by-page-line',\n    label: 'redactionPanel.redactionItem.fullPageRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME']]: {\n    icon: 'ic-full-frame-video-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameRedaction',\n  },\n  [redactionTypeMap['AUDIO_REDACTION']]: {\n    icon: 'ic-audio-redact',\n    label: 'redactionPanel.redactionItem.audioRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO']]: {\n    icon: 'ic-full-frame-video-and-audio-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameAndAudioRedaction',\n  },\n  [redactionTypeMap['TEXT']]: {\n    icon: 'icon-form-field-text',\n  },\n  [redactionTypeMap['IMAGE']]: {\n    icon: 'redact-icons-image',\n    label: 'redactionPanel.redactionItem.image',\n  }\n};\n\nexport const mapAnnotationToRedactionType = (annotation) => {\n  const isTextRedaction = annotation.IsText;\n  if (isTextRedaction) {\n    return redactionTypeMap['TEXT'];\n  }\n\n  const { type = 'region' } = annotation;\n  return type;\n};","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","/**\n * Enable certain features in the WebViewer UI.\n * @method UI.enableFeatures\n * @param {Array.<string>} features Array of features to enable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(instance.UI.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = true;\nexport default (store) => createFeatureAPI(enable, store);","export const panelMinWidth = 264;\nexport const RESIZE_BAR_WIDTH = 14;\n\nexport const panelNames = {\n  OUTLINE: 'genericOutlinesPanel',\n  SIGNATURE: 'signaturePanel',\n  BOOKMARKS: 'bookmarksPanel',\n  FILE_ATTACHMENT: 'fileAttachmentPanel',\n  THUMBNAIL: 'thumbnailsPanel',\n  LAYERS: 'layersPanel',\n  TEXT_EDITING: 'textEditingPanel',\n  CHANGE_LIST: 'changeListPanel',\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\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}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar un$DateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar getTime = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) != INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = getTime(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? un$DateToString(this) : INVALID_DATE;\n  });\n}\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\n\nexport function isOfficeEditorMode() {\n  return core.getDocument()?.getType() === workerTypes.OFFICE_EDITOR;\n}\n","import extractPagesWithAnnotations from 'helpers/extractPagesWithAnnotations';\nimport core from 'core';\nimport { saveAs } from 'file-saver';\nimport actions from 'actions';\nimport i18next from 'i18next';\nimport { workerTypes } from 'constants/types';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport DataElements from 'constants/dataElement';\n\nconst createAnnouncement = (onClickAnnouncement) => {\n  if (onClickAnnouncement) {\n    const el = document.createElement('div');\n    const id = `speak-${Date.now()}`;\n    el.setAttribute('id', id);\n    el.setAttribute('aria-live', 'assertive');\n    el.classList.add('visually-hidden');\n    document.body.appendChild(el);\n\n    window.setTimeout(function() {\n      document.getElementById(id).innerText = onClickAnnouncement;\n    }, 100);\n\n    window.setTimeout(function() {\n      document.body.removeChild(document.getElementById(id));\n    }, 1000);\n  }\n};\n\nconst getNewRotation = (curr, counterClockwise = false) => {\n  const { E_0, E_90, E_180, E_270 } = window.Core.PageRotation;\n  switch (curr) {\n    case E_270:\n      return counterClockwise ? E_180 : E_0;\n    case E_180:\n      return counterClockwise ? E_90 : E_270;\n    case E_90:\n      return counterClockwise ? E_0 : E_180;\n    default:\n      return counterClockwise ? E_270 : E_90;\n  }\n};\n\nconst canRotateLoadedDocument = () => {\n  const doc = core.getDocument();\n  const docType = doc?.type;\n\n  return (\n    workerTypes.PDF === docType ||\n    workerTypes.IMAGE === docType ||\n    (docType === workerTypes.WEBVIEWER_SERVER && !doc.isWebViewerServerDocument())\n  );\n};\n\nconst rotatePages = (pageNumbers, counterClockwise) => {\n  if (canRotateLoadedDocument()) {\n    const rotation = counterClockwise ? window.Core.PageRotation.E_270 : window.Core.PageRotation.E_90;\n    pageNumbers.forEach((index) => {\n      core.rotatePages([index], rotation);\n    });\n  } else {\n    const docViewer = core.getDocumentViewer();\n    const currentRotations = docViewer.getPageRotations();\n    for (const page of pageNumbers) {\n      docViewer.setRotation(getNewRotation(currentRotations[page], counterClockwise), page);\n    }\n  }\n};\n\nconst rotateClockwise = (pageNumbers) => {\n  rotatePages(pageNumbers, false);\n  createAnnouncement(`${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.rotatedClockwise')} ${i18next.t('action.rotationIs')} ${(core.getDocument().getPageRotation(core.getCurrentPage()) + 90) % 360} degrees`);\n};\n\nconst rotateCounterClockwise = (pageNumbers) => {\n  rotatePages(pageNumbers, true);\n  createAnnouncement(`${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.rotatedCounterClockwise')} ${i18next.t('action.rotationIs')} ${(core.getDocument().getPageRotation(core.getCurrentPage()) + 270) % 360} degrees`);\n};\n\nconst insertAbove = (pageNumbers, width, height) => {\n  core.insertBlankPages(pageNumbers, width, height);\n};\n\nconst insertBelow = (pageNumbers, width, height) => {\n  core.insertBlankPages(pageNumbers.map((i) => i + 1), width, height);\n};\n\nconst replace = (dispatch) => {\n  dispatch(actions.closeElement(DataElements.PAGE_MANIPULATION_OVERLAY));\n  dispatch(actions.openElement('pageReplacementModal'));\n};\n\nconst extractPages = (pageNumbers, dispatch) => {\n  const message = i18next.t('warning.extractPage.message');\n  const title = i18next.t('warning.extractPage.title');\n  const confirmBtnText = i18next.t('warning.extractPage.confirmBtn');\n  const secondaryBtnText = i18next.t('warning.extractPage.secondaryBtn');\n  const extractAnnouncement = `${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.extracted')}`;\n  const deleteAnnouncement = `${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.deleted')}`;\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: () => extractPagesWithAnnotations(pageNumbers).then((file) => {\n      saveAs(file, 'extractedDocument.pdf');\n      createAnnouncement(extractAnnouncement + deleteAnnouncement);\n    }),\n    secondaryBtnText,\n    onSecondary: () => {\n      extractPagesWithAnnotations(pageNumbers).then((file) => {\n        saveAs(file, 'extractedDocument.pdf');\n        core.removePages(pageNumbers).then(() => {\n          dispatch(actions.setSelectedPageThumbnails([]));\n        });\n        createAnnouncement(extractAnnouncement);\n      });\n    },\n  };\n\n  dispatch(actions.showWarningMessage(warning));\n};\n\nconst deletePages = (pageNumbers, dispatch, isModalEnabled = true) => {\n  const deleteAnnouncement = `${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.deleted')}`;\n  if (isModalEnabled) {\n    let message = i18next.t('warning.deletePage.deleteMessage');\n    const title = i18next.t('warning.deletePage.deleteTitle');\n    const confirmBtnText = i18next.t('action.ok');\n\n    let warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm: () => core.removePages(pageNumbers).then(() => {\n        dispatch(actions.setSelectedPageThumbnails([]));\n        dispatch(actions.setShiftKeyThumbnailsPivotIndex());\n        createAnnouncement(deleteAnnouncement);\n      }),\n    };\n\n    if (core.getDocumentViewer().getPageCount() === pageNumbers.length) {\n      message = i18next.t('warning.deletePage.deleteLastPageMessage');\n\n      warning = {\n        message,\n        title,\n        confirmBtnText,\n        onConfirm: () => Promise.resolve(),\n      };\n    }\n\n    dispatch(actions.showWarningMessage(warning));\n  } else {\n    core.removePages(pageNumbers).then(() => {\n      dispatch(actions.setSelectedPageThumbnails([]));\n      dispatch(actions.setShiftKeyThumbnailsPivotIndex());\n      createAnnouncement(deleteAnnouncement);\n    });\n  }\n};\n\nconst movePagesToBottom = (pageNumbers) => {\n  core.movePages(pageNumbers, core.getTotalPages() + 1);\n  createAnnouncement(`${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.movedToBottomOfDocument')}`);\n};\n\nconst movePagesToTop = (pageNumbers) => {\n  core.movePages(pageNumbers, 0);\n  createAnnouncement(`${i18next.t('action.page')} ${pageNumbers} ${i18next.t('action.movedToTopofDocument')}`);\n};\n\nconst noPagesSelectedWarning = (pageNumbers, dispatch) => {\n  if (pageNumbers.length === 0) {\n    const title = i18next.t('warning.selectPage.selectTitle');\n    const message = i18next.t('warning.selectPage.selectMessage');\n    const confirmBtnText = i18next.t('action.ok');\n\n    const warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm: () => Promise.resolve(),\n      keepOpen: ['leftPanel'],\n    };\n\n    dispatch(actions.showWarningMessage(warning));\n    return true;\n  }\n  return false;\n};\n\nconst exitPageInsertionWarning = (closeModal, dispatch) => {\n  const title = i18next.t('insertPageModal.warning.title');\n  const message = i18next.t('insertPageModal.warning.message');\n  const confirmBtnText = i18next.t('action.ok');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: closeModal,\n    keepOpen: ['leftPanel'],\n  };\n\n  dispatch(actions.showWarningMessage(warning));\n};\n\nconst exitPageReplacementWarning = (closeModal, dispatch) => {\n  const title = i18next.t('option.pageReplacementModal.warning.title');\n  const message = i18next.t('option.pageReplacementModal.warning.message');\n  const confirmBtnText = i18next.t('action.ok');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: closeModal,\n    keepOpen: ['leftPanel'],\n  };\n\n  dispatch(actions.showWarningMessage(warning));\n};\n\nconst redactPages = (pageNumbers, redactionStyles) => {\n  core.applyRedactions(createPageRedactions(pageNumbers, redactionStyles));\n};\n\nconst createPageRedactions = (pageNumbers, redactionStyles) => {\n  const annots = [];\n  const document = core.getDocument();\n  for (const page of pageNumbers) {\n    const pageInfo = document.getPageInfo(page);\n    const pageRotation = document.getPageRotation(page);\n    if (pageInfo) {\n      let width;\n      let height;\n      if (pageRotation === 90 || pageRotation === 270) {\n        width = pageInfo.height;\n        height = pageInfo.width;\n      } else {\n        width = pageInfo.width;\n        height = pageInfo.height;\n      }\n      const redaction = new window.Core.Annotations.RedactionAnnotation({\n        PageNumber: page,\n        Rect: new window.Core.Annotations.Rect(0, 0, width, height),\n        ...redactionStyles\n      });\n      redaction.type = redactionTypeMap['FULL_PAGE'];\n      redaction.setCustomData('trn-redaction-type', redactionTypeMap['FULL_PAGE']);\n      redaction.Author = core.getCurrentUser();\n      annots.push(redaction);\n    }\n  }\n  core.getAnnotationManager().addAnnotations(annots);\n  core.getAnnotationManager().drawAnnotationsFromList(annots);\n  return annots;\n};\n\nconst replacePages = async (sourceDocument, pagesToRemove, pagesToReplaceIntoDocument) => {\n  const documentLoadedInViewer = core.getDocument();\n  const pageCountOfLoadedDocument = documentLoadedInViewer.getPageCount();\n  const pagesToRemoveFromOriginal = pagesToRemove.sort((a, b) => a - b);\n\n  // If document to replace into has only one page, or we are replacing all pages\n  // then we can insert pages at the end, and then remove the pages to avoid an error of removing all pages\n  if (pageCountOfLoadedDocument === 1 || pagesToRemoveFromOriginal.length === pageCountOfLoadedDocument) {\n    await documentLoadedInViewer.insertPages(sourceDocument, pagesToReplaceIntoDocument);\n    await documentLoadedInViewer.removePages(pagesToRemoveFromOriginal);\n  } else {\n    // If document to replace into has > 1 page we need insert the new pages at the spot of the first removed page\n    // pagesToRemoveFromOriginal is sorted in ascending order. Interleaving pages would be complex.\n    await documentLoadedInViewer.removePages(pagesToRemoveFromOriginal);\n    await documentLoadedInViewer.insertPages(sourceDocument, pagesToReplaceIntoDocument, pagesToRemoveFromOriginal[0]);\n  }\n};\n\nconst insertPages = async (sourceDocument, pagesToInsert, insertBeforeThisPage = null) => {\n  const documentLoadedInViewer = core.getDocument();\n  await documentLoadedInViewer.insertPages(sourceDocument, pagesToInsert, insertBeforeThisPage);\n};\n\nexport {\n  rotateClockwise,\n  rotateCounterClockwise,\n  insertAbove,\n  insertBelow,\n  replace,\n  extractPages,\n  deletePages,\n  movePagesToBottom,\n  movePagesToTop,\n  noPagesSelectedWarning,\n  redactPages,\n  createPageRedactions,\n  replacePages,\n  insertPages,\n  exitPageInsertionWarning,\n  exitPageReplacementWarning\n};","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},v=\"en\",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar setGlobal = require('../internals/set-global');\n\nmodule.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  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return O;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n  return O;\n};\n","import core from 'core';\nimport { isIOS } from 'helpers/device';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\n\nconst touchType = {\n  TAP: 'tap',\n  DOUBLE_TAP: 'doubleTap',\n  PINCH: 'pinch',\n  PAN: 'pan',\n  SWIPE: 'swipe'\n};\n\nconst TouchEventManager = {\n  initialize(document, container) {\n    this.document = document;\n    this.container = container;\n    this.allowSwipe = true;\n    this.allowHorizontalSwipe = true;\n    this.allowVerticalSwipe = false;\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n    this.verticalLock = false;\n    this.horziontalLock = false;\n    this.enableTouchScrollLock = true;\n    this.startingScrollLeft = null;\n    this.startingScrollTop = null;\n    this._useNativeScroll = false;\n    try {\n      const val = localStorage.getItem('useNativeScroll');\n      if (val) {\n        this._useNativeScroll = JSON.parse(val);\n      }\n    } catch (err) {\n      console.warn(`localStorage could not be accessed. ${err.message}`);\n    }\n    this.touch = {\n      clientX: 0,\n      clientY: 0,\n      distance: 0,\n      horizontalDistance: 0,\n      verticalDistance: 0,\n      scale: 1,\n      zoom: 1,\n      type: '',\n    };\n    this.handleTouchStart = this.handleTouchStart.bind(this);\n    this.handleTouchMove = this.handleTouchMove.bind(this);\n    this.handleTouchEnd = this.handleTouchEnd.bind(this);\n    this.handleTouchCancel = this.handleTouchCancel.bind(this);\n    this.container.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n    this.container.addEventListener('touchmove', this.handleTouchMove, { passive: false });\n    this.container.addEventListener('touchend', this.handleTouchEnd, { passive: false });\n    this.container.addEventListener('touchcancel', this.handleTouchCancel, { passive: false });\n  },\n  terminate() {\n    this.container.removeEventListener('touchstart', this.handleTouchStart);\n    this.container.removeEventListener('touchmove', this.handleTouchMove);\n    this.container.removeEventListener('touchend', this.handleTouchEnd);\n    this.container.removeEventListener('touchcancel', this.handleTouchCancel);\n  },\n  handleTouchStart(e) {\n    switch (e.touches.length) {\n      case 1: {\n        const touch = e.touches[0];\n        const scrollWidth = this.container.clientWidth;\n        const viewerWidth = this.document.clientWidth;\n        const isDoubleTap = this.touch.type === touchType.TAP && this.getDistance(this.touch, touch) <= 10;\n        this.touch = {\n          clientX: touch.clientX,\n          clientY: touch.clientY,\n          distance: 0,\n          scale: scrollWidth / viewerWidth,\n          zoom: core.getZoom(),\n          type: isDoubleTap ? touchType.DOUBLE_TAP : touchType.TAP,\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        clearTimeout(this.doubleTapTimeout);\n        break;\n      }\n      case 2: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const clientX = (t1.clientX + t2.clientX) / 2;\n        const clientY = (t1.clientY + t2.clientY) / 2;\n        const docX = clientX - this.document.offsetLeft + this.container.scrollLeft;\n        const docY = clientY - this.document.offsetTop + this.container.scrollTop;\n        this.touch = {\n          previousPinchScale: 0,\n          marginLeft: this.document.offsetLeft,\n          marginTop: parseFloat(window.getComputedStyle(this.document).marginTop),\n          clientX,\n          clientY,\n          docX,\n          docY,\n          distance: this.getDistance(t1, t2),\n          scale: 1,\n          zoom: core.getZoom(),\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        if (!isIOS) {\n          this.document.style.transformOrigin = `${docX}px ${docY}px`;\n        }\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        break;\n      }\n    }\n  },\n  axisLockThreshold: 8,\n  isScrollingVertically() {\n    return (Math.abs(this.verticalMomentum) > 0 && this.horziontalMomentum === 0) || (Math.abs(this.touch.verticalDistance) > this.axisLockThreshold * Math.abs(this.touch.horizontalDistance));\n  },\n  isScrollingHorziontally() {\n    return (Math.abs(this.horziontalMomentum) > 0 && this.verticalMomentum === 0) || (Math.abs(this.touch.horizontalDistance) > this.axisLockThreshold * Math.abs(this.touch.verticalDistance));\n  },\n  canLockScrolling() {\n    const { container, document: doc } = this;\n    const doesPagesFitOnScreen = doc.clientWidth < container.clientWidth || doc.clientHeight < container.clientHeight;\n    const alreadyLocked = this.verticalLock || this.horziontalLock;\n\n    // using 'touchMoveCount' to disable scroll locking when user is dragging\n    return !doesPagesFitOnScreen && this.enableTouchScrollLock && this.touch.touchMoveCount < 6 && !alreadyLocked;\n  },\n\n  handleScroll(t) {\n    if (this.useNativeScroll) {\n      return;\n    }\n    this.touch.horizontalDistance = this.touch.clientX - t.clientX;\n    this.touch.verticalDistance = this.touch.clientY - t.clientY;\n\n    if (this.canLockScrolling()) {\n      this.verticalLock = this.isScrollingVertically();\n      this.horziontalLock = this.isScrollingHorziontally();\n    }\n\n    if (this.enableTouchScrollLock) {\n      // scroll vertically\n      if (this.verticalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.startingScrollLeft, this.container.scrollTop);\n        this.touch.horizontalDistance = 0;\n      }\n\n      // scroll horizontally\n      if (this.horziontalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.container.scrollLeft, this.startingScrollTop);\n        this.touch.verticalDistance = 0;\n      }\n    }\n  },\n  handleTouchMove(e) {\n    switch (e.touches.length) {\n      case 1: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t = e.touches[0];\n\n        if (this.getDistance(this.touch, t) > 10) {\n          this.touch.type = touchType.SWIPE;\n        }\n\n        this.handleScroll(t);\n\n        this.touch.touchMoveCount++;\n        break;\n      }\n      case 2: {\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const panTool = core.getTool('Pan');\n        const isPanning = panTool.isPanning();\n        const isPinching = panTool.isPinching();\n\n        if (isPanning) {\n          this.touch.type = touchType.PAN;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n\n          const t = {\n            clientX: (t1.clientX + t2.clientX) / 2,\n            clientY: (t1.clientY + t2.clientY) / 2\n          };\n\n          if (this.getDistance(this.touch, t) > 10) {\n            this.touch.type = touchType.SWIPE;\n          }\n\n          this.handleScroll(t);\n          this.touch.touchMoveCount++;\n          break;\n        }\n\n        if (isPinching) {\n          this.touch.type = touchType.PINCH;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n          this.touch.scale = this.getDistance(t1, t2) / this.touch.distance;\n\n          if (this.touch.scale * this.touch.zoom < getMinZoomLevel()) {\n            this.touch.scale = getMinZoomLevel() / this.touch.zoom;\n          } else if (this.touch.scale * this.touch.zoom > getMaxZoomLevel()) {\n            this.touch.scale = getMaxZoomLevel() / this.touch.zoom;\n          }\n\n          if (isIOS) {\n            const marginLeft = ((this.touch.marginLeft - this.container.offsetLeft) + (1 - this.touch.scale) * this.touch.docX) / this.touch.scale;\n            const marginTop = (this.touch.marginTop + (1 - this.touch.scale) * this.touch.docY) / this.touch.scale;\n            this.document.style.marginLeft = `${marginLeft}px`;\n            this.document.style.marginTop = `${marginTop}px`;\n            this.document.style.zoom = this.touch.scale;\n          } else {\n            this.document.style.transform = `scale(${this.touch.scale})`;\n          }\n          break;\n        }\n      }\n    }\n  },\n  handleTouchEnd(e) {\n    switch (this.touch.type) {\n      case touchType.TAP: {\n        this.doubleTapTimeout = setTimeout(() => {\n          this.touch.type = '';\n        }, 300);\n\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        break;\n      }\n      case touchType.SWIPE: {\n        const docViewer = core.getDocumentViewer();\n        const isStylusModeDisabled = !docViewer.isStylusModeEnabled();\n        const isUsingAnnotationToolsAndStylusIsDisabled = this.isUsingAnnotationTools() && isStylusModeDisabled;\n        const isUsingPenAndStylusEnabled = this.isUsingPen() && !isStylusModeDisabled;\n        if (\n          !this.allowSwipe ||\n          isUsingAnnotationToolsAndStylusIsDisabled ||\n          isUsingPenAndStylusEnabled ||\n          core.getSelectedText().length ||\n          core.getSelectedAnnotations().length\n        ) {\n          this.horziontalLock = false;\n          this.verticalLock = false;\n          return;\n        }\n\n        const { reachedLeft, reachedTop, reachedRight, reachedBottom } = this.reachedBoundary();\n        const threshold = 0.1 * this.container.clientWidth;\n        const swipedToBottom = reachedBottom && this.touch.verticalDistance > threshold;\n        const swipedToTop = reachedTop && this.touch.verticalDistance < -threshold;\n        const swipedToRight = reachedRight && this.touch.horizontalDistance > threshold;\n        const swipedToLeft = reachedLeft && this.touch.horizontalDistance < -threshold;\n\n        const currentPage = core.getCurrentPage();\n        const totalPages = core.getTotalPages();\n        const numberOfPagesToNavigate = getNumberOfPagesToNavigate();\n\n        const isFirstPage = currentPage === 1;\n        const isLastPage = currentPage === totalPages;\n        const isSingleDisplayMode = !core.isContinuousDisplayMode();\n        const shouldGoToPrevPage = isSingleDisplayMode && !isFirstPage && ((swipedToLeft && this.allowHorizontalSwipe) || (swipedToTop && this.allowVerticalSwipe));\n        const shouldGoToNextPage = isSingleDisplayMode && !isLastPage && ((swipedToRight && this.allowHorizontalSwipe) || (swipedToBottom && this.allowVerticalSwipe));\n\n        if (shouldGoToPrevPage) {\n          core.setCurrentPage(Math.max(1, currentPage - numberOfPagesToNavigate));\n        } else if (shouldGoToNextPage) {\n          core.setCurrentPage(Math.min(totalPages, currentPage + numberOfPagesToNavigate));\n        } else if (!this.useNativeScroll) {\n          const millisecondsToSeconds = 1000;\n          const touchDuration = (Date.now() - this.touch.touchStartTimeStamp) / millisecondsToSeconds;\n\n          if (touchDuration < 0.2) {\n            this.touch.stopMomentumScroll = false;\n            this.startMomentumScroll(touchDuration);\n          } else {\n            this.horziontalLock = false;\n            this.verticalLock = false;\n          }\n        }\n        break;\n      }\n      case touchType.DOUBLE_TAP: {\n        const annotationUnderMouse = core.getAnnotationByMouseEvent(e);\n        const isFreeTextUnderMouse = annotationUnderMouse && annotationUnderMouse instanceof window.Core.Annotations.FreeTextAnnotation;\n\n        if (this.isUsingAnnotationTools()) {\n          const tool = core.getToolMode();\n          tool.finish && tool.finish();\n        } else if (!isFreeTextUnderMouse) {\n          if (this.oldZoom) {\n            this.touch.scale = Math.max(this.oldZoom / this.touch.zoom, getMinZoomLevel() / this.touch.zoom);\n            this.oldZoom = null;\n          } else {\n            this.touch.scale = Math.min(3, getMaxZoomLevel() / this.touch.zoom);\n            this.oldZoom = this.touch.zoom;\n          }\n          const zoom = core.getZoom() * this.touch.scale;\n          const { x, y } = this.getPointAfterScale();\n          core.zoomTo(zoom, x, y);\n        }\n\n        if (isFreeTextUnderMouse) {\n          core\n            .getAnnotationManager()\n            .trigger('annotationDoubleClicked', annotationUnderMouse);\n        }\n\n        break;\n      }\n      case touchType.PINCH: {\n        // sometimes handleTouchEnd will be called twice with the same value of this.touch.scale\n        // depending on how fast two fingers are away of the screen\n        // as a result the document will be zoomed in twice, and we do this check to prevent that from happening\n        if (this.touch.previousPinchScale === this.touch.scale) {\n          return;\n        }\n\n        this.touch.previousPinchScale = this.touch.scale;\n\n        if (isIOS) {\n          this.document.style.zoom = 1;\n          this.document.style.margin = 'auto';\n        } else {\n          this.document.style.transform = 'none';\n        }\n        const zoom = core.getZoom() * this.touch.scale;\n        const { x, y } = this.getPointAfterScale();\n        core.zoomTo(zoom, x, y);\n        break;\n      }\n    }\n    this.touch.touchMoveCount = 0;\n    // Want to use momentum values during 'TouchMove' event, so clear values in 'touchEnd' instead of 'touchStart'\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n  },\n  handleTouchCancel(e) {\n    this.handleTouchEnd(e);\n  },\n  startMomentumScroll(touchDuration) {\n    let currentIteration = 1;\n    const iterationsCount = 70;\n    const momentumUnlockThreshold = 1;\n    const initScrollLeft = this.container.scrollLeft;\n    const initScrollTop = this.container.scrollTop;\n    const dHorizontal = this.touch.horizontalDistance / touchDuration / 1.85;\n    const dVertical = this.touch.verticalDistance / touchDuration / 1.85;\n    const momentumScroll = () => {\n      const nextLeft = this.easeOutQuad(currentIteration, initScrollLeft, dHorizontal, iterationsCount);\n      const nextTop = this.easeOutQuad(currentIteration, initScrollTop, dVertical, iterationsCount);\n      this.verticalMomentum = dVertical;\n      this.horziontalMomentum = dHorizontal;\n\n      // 'handleTouchEnd' should set 'touchMoveCount' to 0, using that to determine if a new touch event happened\n      const isNotNewTouchEvent = !this.touch.touchMoveCount;\n      const horzDiff = this.container.scrollLeft - nextLeft;\n      const vertDiff = this.container.scrollTop - nextTop;\n      // if momentum is small enought that it doesn't look like it's moving, disable scroll locking\n      const isMomentumScrollAlmostFinish = (Math.abs(horzDiff) < momentumUnlockThreshold) && (Math.abs(vertDiff) < momentumUnlockThreshold);\n\n      this.container.scrollLeft = nextLeft;\n      this.container.scrollTop = nextTop;\n\n      if (isNotNewTouchEvent && isMomentumScrollAlmostFinish) {\n        // disable lock when momentum scrolling is mostly done and not in the middle of another touch event\n        this.horziontalLock = false;\n        this.verticalLock = false;\n      }\n\n      if (currentIteration < iterationsCount && !this.touch.stopMomentumScroll) {\n        currentIteration++;\n        requestAnimationFrame(momentumScroll);\n      }\n      if (isNotNewTouchEvent && currentIteration === iterationsCount) {\n        // if the page is against the sides and the users swipe quickly, it tries to set Scroll to a value that is outside the range and 'isMomentumScrollAlmostFinish' is never true\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        this.verticalMomentum = 0;\n        this.horziontalMomentum = 0;\n      }\n    };\n\n    requestAnimationFrame(momentumScroll);\n  },\n  easeOutQuad(currentTime, startValue, changeInValue, duration) {\n    // http://gizma.com/easing/#quad2\n    currentTime /= duration;\n\n    return -changeInValue * currentTime * (currentTime - 2) + startValue;\n  },\n  reachedBoundary() {\n    const { clientHeight: scrollHeight, clientWidth: scrollWidth, scrollLeft, scrollTop } = this.container;\n    const { clientHeight: viewerHeight, clientWidth: viewerWidth } = this.document;\n\n    return {\n      reachedLeft: scrollLeft <= 0,\n      reachedTop: scrollTop <= 0,\n      reachedBottom: scrollHeight + scrollTop >= viewerHeight,\n      reachedRight: scrollWidth + scrollLeft >= viewerWidth,\n    };\n  },\n  getDistance(t1, t2) {\n    return Math.hypot(t1.clientX - t2.clientX, t1.clientY - t2.clientY);\n  },\n  getPointAfterScale() {\n    const x = (this.touch.clientX + this.container.scrollLeft - this.document.offsetLeft) * this.touch.scale - this.touch.clientX + this.container.offsetLeft;\n    const y = (this.touch.clientY + this.container.scrollTop - this.document.offsetTop) * this.touch.scale - this.touch.clientY + this.container.offsetTop;\n\n    return { x, y };\n  },\n  isUsingAnnotationTools() {\n    const tool = core.getToolMode();\n\n    return getDataWithKey(mapToolNameToKey(tool.name)).annotationCheck;\n  },\n  isUsingPen() {\n    return core.getToolMode().pointerType && core.getToolMode().pointerType === 'pen';\n  },\n  get useNativeScroll() {\n    return this._useNativeScroll;\n  },\n  set useNativeScroll(val) {\n    this._useNativeScroll = val;\n    try {\n      localStorage.setItem('useNativeScroll', JSON.stringify(this._useNativeScroll));\n    } catch (err) {\n      console.warn(`localStorage could not be accessed. ${err.message}`);\n    }\n  }\n};\n\nexport default Object.create(TouchEventManager);\n","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","import core from 'core';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\n\nexport default (store, toolName) => {\n  const { dispatch, getState } = store;\n  const toolGroup =\n    selectors.getToolButtonObject(getState(), toolName)?.group || '';\n\n  if (toolGroup) {\n    dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n  } else {\n    dispatch(actions.closeElement(DataElements.TOOLS_OVERLAY));\n  }\n\n  const hasToolBeenSelected = core.getToolMode().name === toolName;\n  if (hasToolBeenSelected && toolStylesExist(toolName)) {\n    dispatch(actions.toggleElement(DataElements.TOOL_STYLE_POPUP));\n    return;\n  }\n\n  dispatch(actions.closeElement(DataElements.TOOL_STYLE_POPUP));\n  core.setToolMode(toolName);\n  dispatch(actions.setActiveToolGroup(toolGroup));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","import { setCheckPasswordFunction } from 'components/PasswordModal';\nimport core from 'core';\nimport { fireError } from 'helpers/fireEvent';\nimport getHashParameters from 'helpers/getHashParameters';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, src, options = {}, documentViewerKey = 1) => {\n  core.closeDocument(documentViewerKey);\n  options = { ...getDefaultOptions(), ...options };\n\n  options.docId = options.docId || options.documentId || null;\n  const customLoadingProgressFunction = options.onLoadingProgress;\n  options.onLoadingProgress = (percent) => {\n    customLoadingProgressFunction && customLoadingProgressFunction(percent);\n    dispatch(actions.setLoadingProgress(percent));\n  };\n  options.password = transformPasswordOption(options.password, dispatch);\n  options.xodOptions = extractXodOptions(options);\n  if ('onError' in options) {\n    const userDefinedOnErrorCallback = options.onError;\n    options.onError = function(error) {\n      fireError(error);\n      userDefinedOnErrorCallback(error);\n    };\n  } else {\n    options.onError = fireError;\n  }\n\n  dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n\n  if (options.enableOfficeEditing && !src) {\n    core.loadBlankOfficeEditorDocument(options);\n  } else {\n    // ignore caught errors because they are already being handled in the onError callback\n    core.loadDocument(src, options, documentViewerKey).catch(() => {});\n  }\n\n  dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n};\n\n\n/**\n * Default options are some of the options used to initialize WebViewer, and will be preserved on loadDocument calls.\n * We do this so that users don't need to pass these options every time they call instance.loadDocument\n * For example, if WebViewer is initialized with WebViewer Server, subsequent calls to instance.loadDocument will assume WebViewer Server is used.\n * @ignore\n */\nconst getDefaultOptions = () => ({\n  startOffline: getHashParameters('startOffline', false),\n  azureWorkaround: getHashParameters('azureWorkaround', false),\n  webviewerServerURL: getHashParameters('webviewerServerURL', ''),\n  fallbackToClientSide: getHashParameters('fallbackToClientSide', false),\n  singleServerMode: getHashParameters('singleServerMode', false),\n  forceClientSideInit: getHashParameters('forceClientSideInit', false),\n  disableWebsockets: getHashParameters('disableWebsockets', false),\n  cacheKey: getHashParameters('cacheKey', null),\n  officeOptions: JSON.parse(getHashParameters('officeOptions', null)),\n  rasterizerOptions: JSON.parse(getHashParameters('rasterizerOptions', null)),\n  streaming: getHashParameters('streaming', null),\n  useDownloader: getHashParameters('useDownloader', true),\n  backendType: getHashParameters('pdf', null),\n  loadAsPDF: getHashParameters('loadAsPDF', null),\n  enableOfficeEditing: getHashParameters('enableOfficeEditing', false),\n});\n\n/**\n * transform the password argument from a string to a function to hook up UI logic\n * @ignore\n */\nconst transformPasswordOption = (password, dispatch) => {\n  // a boolean that is used to prevent infinite loop when wrong password is passed as an argument\n  let passwordChecked = false;\n  let attempt = 0;\n\n  return (checkPassword) => {\n    dispatch(actions.setPasswordAttempts(attempt++));\n\n    if (!passwordChecked && typeof password === 'string') {\n      checkPassword(password);\n      passwordChecked = true;\n    } else {\n      if (passwordChecked) {\n        console.error(\n          'Wrong password has been passed as an argument. WebViewer will open password modal.',\n        );\n      }\n\n      setCheckPasswordFunction(checkPassword);\n      dispatch(actions.openElement(DataElements.PASSWORD_MODAL));\n    }\n  };\n};\n\nconst extractXodOptions = (options) => {\n  const xodOptions = options.xodOptions || {};\n\n  if (options.decryptOptions) {\n    xodOptions.decrypt = window.Core.Encryption.decrypt;\n    xodOptions.decryptOptions = options.decryptOptions;\n  }\n\n  if (options.decrypt) {\n    xodOptions.decrypt = options.decrypt;\n  }\n\n  if (options.streaming !== null) {\n    // depending on combination of value in loadDocument and in WV constructor\n    // getHashedParam will either return back a boolean or a stringed boolean value\n    xodOptions.streaming = options.streaming === 'true' || options.streaming === true;\n  }\n\n  if (options.azureWorkaround) {\n    xodOptions.azureWorkaround = options.azureWorkaround;\n  }\n\n  if (options.startOffline) {\n    xodOptions.startOffline = options.startOffline;\n  }\n\n  return xodOptions;\n};\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","export const MOBILE_SIZE = 640;\nexport const TABLET_SIZE = 900;","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 global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","const SignatureModes = {\n  FULL_SIGNATURE: window.Core.Tools.SignatureCreateTool.SignatureTypes.FULL_SIGNATURE,\n  INITIALS: window.Core.Tools.SignatureCreateTool.SignatureTypes.INITIALS,\n};\n\nexport default SignatureModes;","function _extends() {\n  module.exports = _extends = Object.assign || 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.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import core from 'core';\nimport { saveAs } from 'file-saver';\nimport { getEmbeddedFileData, getFileAttachments } from './getFileAttachments';\n\nconst extensionRegExp = /(?:\\.([^.?]+))?$/;\n\nconst getExtension = (filename) => extensionRegExp.exec(filename)[1] || '';\n\nconst getFileNameWithoutExtension = (filename) => {\n  const extension = getExtension(filename);\n  if (extension === '') {\n    return filename;\n  }\n  return filename.slice(0, -(extension.length + 1));\n};\n\nexport const PORTFOLIO_CONSTANTS = {\n  COLLECTION: 'Collection',\n  FILE_NAME: 'FileName',\n  ADOBE_ORDER: 'adobe:Order',\n  CI: 'CI',\n  REORDER: 'Reorder',\n  SORT: 'Sort',\n  SCHEMA: 'Schema',\n  SUBTYPE: 'Subtype',\n};\n\nexport const isOpenableFile = (extension) => {\n  return window.Core.SupportedFileFormats.CLIENT.includes(extension);\n};\n\nexport const hasChildren = (portfolioItem) => {\n  return portfolioItem?.children?.length > 0;\n};\n\nconst getNextLargestValue = (files) => {\n  // TODO: will need to also get order values from folders\n  return Math.max(...files.map((a) => a.order)) + 1;\n};\n\nexport const getPortfolioFiles = async () => {\n  if (!core.isFullPDFEnabled()) {\n    return [];\n  }\n\n  const { embeddedFiles } = await getFileAttachments();\n  const unsortedPortfolioFiles = embeddedFiles.map(({ filename, fileObject, id, order }) => ({\n    id,\n    order,\n    name: filename,\n    nameWithoutExtension: getFileNameWithoutExtension(filename),\n    extension: getExtension(filename),\n    isFolder: false,\n    getNestedLevel: () => 0,\n    children: [],\n    fileObject,\n  }));\n\n  return unsortedPortfolioFiles.sort((a, b) => a.order - b.order);\n};\n\nexport const addFile = async (pdfDoc, file, order = undefined) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Create FileSpec dict\n  const fs = await pdfDoc.createIndirectDict();\n  fs.putName('Type', 'Filespec');\n  fs.putString('F', file.name);\n  fs.putText('UF', file.name);\n\n  // Create EmbeddedFile dict\n  const ef = await fs.putDict('EF');\n  const flateFilter = await PDFNet.Filter.createFlateEncode();\n  const embeddedStream = await pdfDoc.createIndirectStream(await file.arrayBuffer(), flateFilter);\n  ef.put('F', embeddedStream);\n\n  if (order === undefined) {\n    order = getNextLargestValue(await getPortfolioFiles());\n  }\n\n  // Add internal order\n  const ci = await pdfDoc.createIndirectDict();\n  await ci.putNumber(PORTFOLIO_CONSTANTS.ADOBE_ORDER, order);\n  await fs.put(PORTFOLIO_CONSTANTS.CI, ci);\n\n  // Add file attachment\n  const fileSpec = await PDFNet.FileSpec.createFromObj(fs);\n  await pdfDoc.addFileAttachment(file.name, fileSpec);\n};\n\nconst addCoverPage = async (pdfDoc) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Here we dynamically generate cover page (please see ElementBuilder\n  // sample for more extensive coverage of PDF creation API).\n  const page = await pdfDoc.pageCreate(await PDFNet.Rect.init(0, 0, 200, 200));\n\n  const b = await PDFNet.ElementBuilder.create();\n  const w = await PDFNet.ElementWriter.create();\n  w.beginOnPage(page);\n  const font = await PDFNet.Font.create(pdfDoc, PDFNet.Font.StandardType1Font.e_helvetica);\n  w.writeElement(await b.createTextBeginWithFont(font, 12));\n  const e = await b.createNewTextRun('PDF Portfolio');\n  e.setTextMatrixEntries(1, 0, 0, 1, 70, 96);\n  const gstate = await e.getGState();\n  gstate.setFillColorSpace(await PDFNet.ColorSpace.createDeviceRGB());\n  gstate.setFillColorWithColorPt(await PDFNet.ColorPt.init(0, 0, 0));\n  w.writeElement(e);\n  w.writeElement(await b.createTextEnd());\n  w.end();\n\n  pdfDoc.pagePushBack(page);\n};\n\nconst addCollection = async (pdfDoc, defaultFile = '') => {\n  const root = await pdfDoc.getRoot();\n  let collection = await root.findObj(PORTFOLIO_CONSTANTS.COLLECTION);\n  if (!collection) {\n    collection = await pdfDoc.createIndirectDict();\n  }\n\n  // You could here manipulate any entry in the Collection dictionary.\n  // For example, the following line sets the tile mode for initial view mode\n  // Please refer to section '2.3.5 Collections' in PDF Reference for details.\n  await collection.putName('View', 'T');\n\n  // Add default file for viewing (if not set, the cover page will show)\n  if (defaultFile) {\n    await collection.putString('D', defaultFile);\n  }\n\n  // Add Reorder\n  const reorder = await pdfDoc.createIndirectName(PORTFOLIO_CONSTANTS.REORDER);\n  await reorder.setName(PORTFOLIO_CONSTANTS.ADOBE_ORDER);\n  await collection.put(PORTFOLIO_CONSTANTS.REORDER, reorder);\n\n  // Add Sort\n  const sort = await collection.putDict(PORTFOLIO_CONSTANTS.SORT);\n  const sArray = await sort.putArray('S');\n  await sArray.insertName(0, PORTFOLIO_CONSTANTS.ADOBE_ORDER);\n  await sArray.insertName(1, PORTFOLIO_CONSTANTS.FILE_NAME);\n\n  // Add Schema\n  const schema = await pdfDoc.createIndirectDict();\n\n  const orderSchema = await pdfDoc.createIndirectDict();\n  await orderSchema.putString('N', 'Order');\n  await orderSchema.putNumber('O', 5);\n  await orderSchema.putName(PORTFOLIO_CONSTANTS.SUBTYPE, 'N');\n\n  const fileNameSchema = await pdfDoc.createIndirectDict();\n  await fileNameSchema.putString('N', 'Name');\n  await fileNameSchema.putBool('E', true);\n  await fileNameSchema.putNumber('O', 0);\n  await fileNameSchema.putName(PORTFOLIO_CONSTANTS.SUBTYPE, 'F');\n\n  // There are other fields in Schema (AFRelationship, CompressedSize, CreationDate, Description, ModDate, Size) but looks like we don't really need them\n  await schema.put(PORTFOLIO_CONSTANTS.ADOBE_ORDER, orderSchema);\n  await schema.put(PORTFOLIO_CONSTANTS.FILE_NAME, fileNameSchema);\n  await collection.put(PORTFOLIO_CONSTANTS.SCHEMA, schema);\n\n  // Add collection to root as an indirect dict\n  await root.put(PORTFOLIO_CONSTANTS.COLLECTION, collection);\n};\n\nexport const createPortfolio = async (files) => {\n  const PDFNet = window.Core.PDFNet;\n  await PDFNet.initialize();\n\n  const pdfDoc = await PDFNet.PDFDoc.create();\n\n  let firstFileName = '';\n  for (const [index, file] of files.entries()) {\n    if (index === 0) {\n      firstFileName = file.name;\n    }\n    await addFile(pdfDoc, file, index);\n  }\n  await addCoverPage(pdfDoc);\n  await addCollection(pdfDoc, firstFileName);\n\n  return pdfDoc;\n};\n\nconst getPDFNetFiles = async () => {\n  let files = null;\n  if (core.isFullPDFEnabled()) {\n    const PDFNet = window.Core.PDFNet;\n    let doc = core.getDocument();\n    if (doc) {\n      doc = await doc.getPDFDoc();\n    }\n    // doc will be undefined for non-pdf files\n    if (doc) {\n      await PDFNet.runWithCleanup(async () => {\n        files = await PDFNet.NameTree.find(doc, 'EmbeddedFiles');\n      });\n    }\n    if (files && (await files.isValid())) {\n      return files;\n    }\n  }\n  return null;\n};\n\nexport const findPDFNetPortfolioItem = async (id) => {\n  let target = null;\n  const files = await getPDFNetFiles();\n  if (!files) {\n    return;\n  }\n\n  // Traverse the list of embedded files.\n  const fileItr = await files.getIteratorBegin();\n  while (await fileItr.hasNext()) {\n    const filesIteratorKey = await fileItr.key();\n    if (id === filesIteratorKey.id) {\n      target = fileItr;\n      break;\n    }\n    await fileItr.next();\n  }\n\n  return target;\n};\n\nexport const renamePortfolioFile = async (id, newName) => {\n  const target = await findPDFNetPortfolioItem(id);\n  if (!target) {\n    return;\n  }\n  const filesIteratorValue = await target.value();\n  // filesIteratorKey.getAsPDFText() returns name with nested level if file is in folder: format \"<0>name.pdf\"\n  await filesIteratorValue.putString('F', newName);\n  await filesIteratorValue.putText('UF', newName);\n};\n\nexport const deletePortfolioFile = async (id) => {\n  const target = await findPDFNetPortfolioItem(id);\n  const files = await getPDFNetFiles();\n  if (!target || !files) {\n    return;\n  }\n  await files.erase(target);\n};\n\nexport const downloadPortfolioFile = async (portfolioItem) => {\n  const { fileObject, name } = portfolioItem;\n  try {\n    const blob = await getEmbeddedFileData(fileObject);\n    saveAs(blob, name);\n  } catch (e) {\n    console.warn(e);\n  }\n};\n\nexport const reorderPortfolioFile = async (id, newOrder) => {\n  const target = await findPDFNetPortfolioItem(id);\n  if (!target) {\n    return;\n  }\n  const filesIteratorValue = await target.value();\n  const ciValue = await (await filesIteratorValue.get(PORTFOLIO_CONSTANTS.CI)).value();\n  await ciValue.putNumber(PORTFOLIO_CONSTANTS.ADOBE_ORDER, newOrder);\n};","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","import core from 'core';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useRef, useState, useMemo, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport useArrowFocus from '../../hooks/useArrowFocus';\n\nimport './Dropdown.scss';\n\nconst DEFAULT_WIDTH = 100;\nconst DEFAULT_HEIGHT = 28;\n\nconst propTypes = {\n  items: PropTypes.array,\n  images: PropTypes.array,\n  objects: PropTypes.array,\n  objectKey: PropTypes.string,\n  width: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number\n  ]),\n  height: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number\n  ]),\n  columns: PropTypes.number,\n  currentSelectionKey: PropTypes.string,\n  translationPrefix: PropTypes.string,\n  getTranslationLabel: PropTypes.func,\n  onClickItem: PropTypes.func,\n  dataElement: PropTypes.string,\n  disabled: PropTypes.bool,\n  getCustomItemStyle: PropTypes.func,\n  applyCustomStyleToButton: PropTypes.bool,\n  placeholder: PropTypes.string,\n  maxHeight: PropTypes.number,\n  getKey: PropTypes.func,\n  getDisplayValue: PropTypes.func,\n  className: PropTypes.string,\n  onOpened: PropTypes.func,\n  arrowDirection: PropTypes.string,\n};\n\nfunction Dropdown({\n  items = [],\n  images = [],\n  objects = [],\n  objectKey,\n  width = width || DEFAULT_WIDTH,\n  height,\n  columns = 1,\n  currentSelectionKey,\n  translationPrefix,\n  getTranslationLabel,\n  onClickItem,\n  dataElement,\n  disabled = false,\n  applyCustomStyleToButton = true,\n  getCustomItemStyle = () => ({}),\n  placeholder = null,\n  maxHeight,\n  getKey = (item) => item,\n  getDisplayValue = (item) => item,\n  className = '',\n  hasInput = false,\n  displayButton = null,\n  customDataValidator = () => true,\n  isSearchEnabled = true,\n  onOpened = () => {},\n  arrowDirection,\n}) {\n  const { t, ready: tReady } = useTranslation();\n  const overlayRef = useRef(null);\n  const buttonRef = useRef(null);\n  const inputRef = useRef(null);\n  const [isOpen, setIsOpen] = useState(false);\n  const [inputVal, setInputVal] = useState('');\n  const onClose = useCallback(() => setIsOpen(false), []);\n  const onToggle = useCallback((e) => {\n    if (hasInput && e.target === inputRef?.current) {\n      return;\n    }\n\n    e.preventDefault();\n\n    if (disabled) {\n      setIsOpen(false);\n    } else {\n      setIsOpen((prev) => !prev);\n    }\n\n    if (hasInput && !isOpen) {\n      setTimeout(() => {\n        inputRef?.current?.focus();\n      });\n    }\n\n    // Keep the dropdown within the bounds of the viewer.\n    const overlayBounds = overlayRef?.current?.getBoundingClientRect();\n    const buttonBounds = buttonRef?.current?.getBoundingClientRect();\n    let scrollViewRect = overlayRef?.current?.closest('body')?.getBoundingClientRect();\n    if (core && core.getDocumentViewer()) {\n      scrollViewRect = core.getScrollViewElement().getBoundingClientRect();\n    }\n    if (overlayBounds && !isOpen) {\n      const horizontalOpening = arrowDirection === 'left' || arrowDirection === 'right';\n      const bottomTop = scrollViewRect.top <= overlayBounds.top;\n      const topBottom = scrollViewRect.bottom >= overlayBounds.bottom;\n      const offset = horizontalOpening ? buttonBounds.height : 0;\n      // Check for containment vertically only.\n      if (bottomTop && topBottom) {\n        // Still inside the viewer, no need to adjust.\n        overlayRef.current.style.top = `${buttonBounds.height - offset}px`;\n      } else {\n        // If the overlay is past the bottom of the viewer, move it to the top instead.\n        if (overlayBounds.bottom > scrollViewRect.bottom) {\n          overlayRef.current.style.top = `-${overlayBounds.height - offset}px`;\n        } else {\n          // Otherwise the overlay is past the top of the viewer, move it to the bottom instead.\n          overlayRef.current.style.top = `${buttonBounds.height - offset}px`;\n        }\n      }\n      if (arrowDirection === 'left') {\n        overlayRef.current.style.left = `-${buttonBounds.width}px`;\n      }\n      if (arrowDirection === 'right') {\n        overlayRef.current.style.left = `${buttonBounds.width}px`;\n      }\n    } else {\n      overlayRef.current.style.top = '';\n    }\n  }, [hasInput, isOpen, disabled]);\n\n  useEffect(() => {\n    if (!isOpen && overlayRef?.current) {\n      // Always reset style when closing to prevent height calculations from being off.\n      overlayRef.current.style.top = '';\n      // Scroll to the top of list when closing.\n      overlayRef.current.scrollTop = 0;\n    }\n  }, [isOpen]);\n\n  // Close dropdown if WebViewer loses focus (ie, user clicks outside iframe).\n  useEffect(() => {\n    const onBlur = () => {\n      setIsOpen(false);\n    };\n    window.addEventListener('blur', onBlur);\n\n    return () => {\n      window.removeEventListener('blur', onBlur);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!isOpen) {\n      setInputVal('');\n    } else {\n      onOpened();\n    }\n\n    if (isOpen && hasInput && inputRef?.current) {\n      inputRef.current.value = currentSelectionKey;\n      inputRef.current.select();\n    }\n  }, [isOpen]);\n\n  useArrowFocus(isOpen, onClose, overlayRef);\n\n  const onClickOutside = useCallback((e) => {\n    if (!buttonRef.current.contains(e.target)) {\n      setIsOpen(false);\n    }\n  }, []);\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const onClickDropdownItem = useCallback(\n    (e, key, i, displayValue) => {\n      e.preventDefault();\n      e.stopPropagation();\n      onClickItem(key, i);\n      setIsOpen(false);\n      buttonRef.current.focus();\n\n      if (inputRef?.current) {\n        inputRef.current.value = displayValue;\n      }\n    },\n    [onClickItem, inputRef.current],\n  );\n\n  const getTranslation = (prefix, key) => {\n    if (getTranslationLabel) {\n      return t(getTranslationLabel(key));\n    }\n\n    return t(`${prefix}.${key}`, key);\n  };\n\n  const getDropdownStyles = (item, maxheight) => {\n    const dropdownItemStyles = getCustomItemStyle(item);\n    if (maxheight) {\n      dropdownItemStyles.lineHeight = `${height || DEFAULT_HEIGHT}px`;\n    }\n    return dropdownItemStyles;\n  };\n\n  const renderDropdownImages = () => images.map((image) => (\n    <DataElementWrapper\n      key={image.key}\n      type=\"button\"\n      dataElement={`dropdown-item-${image.key}`}\n      className={classNames('Dropdown__item', { active: image.key === currentSelectionKey })}\n      tabIndex={isOpen ? undefined : -1} // Just to be safe.\n      onClick={(e) => onClickDropdownItem(e, image.key)}\n    >\n      <Icon glyph={image.src} className={image.className} />\n    </DataElementWrapper>\n  ));\n\n  const renderDropdownObjects = () => objects.map((object, index) => {\n    const translatedDisplayValue = getTranslatedDisplayValue(object.label || '');\n    return (\n      <DataElementWrapper\n        key={object.dataElement}\n        type=\"button\"\n        dataElement={`dropdown-item-${index}`}\n        className={classNames('Dropdown__item', { active: object.index === currentSelectionKey })}\n        tabIndex={isOpen ? undefined : -1} // Just to be safe.\n        onClick={(e) => onClickDropdownItem(e, object[objectKey])}\n      >\n        <div className={'Dropdown__item-object'}>\n          {object.img &&\n            <Icon glyph={object.img} className={object.className} />\n          }\n          {(translatedDisplayValue) &&\n            <span className={'Dropdown__item-text'}>{translatedDisplayValue}</span>\n          }\n        </div>\n      </DataElementWrapper>\n    );\n  });\n\n  const getTranslatedDisplayValue = (item) => getTranslation(translationPrefix, getDisplayValue(item));\n\n  const renderDropdownItems = () => items\n    .filter((item) => !isSearchEnabled || getTranslatedDisplayValue(item).toLowerCase().includes(inputVal.toLowerCase()))\n    .map((item, i) => {\n      const key = getKey(item);\n      const translatedDisplayValue = getTranslatedDisplayValue(item);\n\n      return (\n        <DataElementWrapper\n          key={key}\n          type=\"button\"\n          dataElement={`dropdown-item-${key}`}\n          className={classNames('Dropdown__item', { active: key === currentSelectionKey })}\n          onClick={(e) => onClickDropdownItem(e, key, i, translatedDisplayValue)}\n          tabIndex={isOpen ? undefined : -1} // Just to be safe.\n          style={getDropdownStyles(item, maxHeight)}\n        >\n          {translatedDisplayValue}\n        </DataElementWrapper>\n      );\n    });\n\n  let dropdownItems;\n  let optionIsSelected;\n  let selectedItem;\n  let selectedItemDisplay;\n\n  const hasImages = images && images.length > 0;\n  const hasObjects = objects && objects.length > 0;\n  if (hasImages) {\n    const imageKeys = images.map((item) => item.key);\n    const selectedImageIndex = getImageIndexFromKey(images, currentSelectionKey);\n    optionIsSelected = imageKeys.some((key) => key === currentSelectionKey);\n\n    let glyph = '';\n    let className = '';\n    if (selectedImageIndex > -1) {\n      glyph = images[selectedImageIndex].src;\n      className = images[selectedImageIndex].className;\n    }\n\n    selectedItemDisplay = (\n      <Icon glyph={glyph} className={className} />\n    );\n    dropdownItems = useMemo(renderDropdownImages, [images, currentSelectionKey]);\n  } else if (hasObjects) {\n    const objectKeys = objects.map((item) => item[objectKey]);\n    const selectedObjectIndex = objectKeys.indexOf(currentSelectionKey);\n    optionIsSelected = objects.some((object) => object[objectKey] === currentSelectionKey);\n\n    let glyph = '';\n    let text = '';\n    let className = '';\n    if (selectedObjectIndex > -1) {\n      glyph = objects[selectedObjectIndex].img;\n      text = objects[selectedObjectIndex].label;\n      className = objects[selectedObjectIndex].className;\n    }\n    selectedItemDisplay = (\n      <div className={'Dropdown__item-object'}>\n        {glyph &&\n          <Icon glyph={glyph} className={className} />\n        }\n        {text &&\n          <span className={'Dropdown__item-text'}>{text}</span>\n        }\n      </div>\n    );\n    dropdownItems = useMemo(renderDropdownObjects, [objects, currentSelectionKey]);\n  } else {\n    optionIsSelected = items.some((item) => getKey(item) === currentSelectionKey);\n    if (optionIsSelected) {\n      selectedItem = items.find((item) => getKey(item) === currentSelectionKey);\n      selectedItemDisplay = tReady ? getTranslation(translationPrefix, getDisplayValue(selectedItem)) : '';\n    } else if (hasInput && currentSelectionKey) {\n      optionIsSelected = !!currentSelectionKey;\n      selectedItemDisplay = currentSelectionKey;\n      selectedItem = currentSelectionKey;\n    }\n\n    dropdownItems = useMemo(renderDropdownItems, [\n      currentSelectionKey,\n      isOpen,\n      items,\n      onClickDropdownItem,\n      inputVal,\n      translationPrefix,\n    ]);\n  }\n\n  const onOverlayKeyDown = (e) => {\n    if (e.key === 'ArrowUp' || e.key === 'ArrowDown' && isOpen) {\n      // prevent overlay div scrolling when using arrow keys\n      e.preventDefault();\n    }\n  };\n\n  const buttonStyle = { width: `${width}px` };\n  if (height) {\n    buttonStyle.height = `${height}px`;\n  }\n  const scrollItemsStyle = { maxHeight: `${maxHeight}px` };\n\n  const createDropdownButton = useCallback((value) => {\n    if (isOpen && hasInput) {\n      const onInputChange = (e) => {\n        e.preventDefault();\n        inputRef.current.value = e.target.value;\n        setInputVal(e.target.value);\n      };\n\n      const onBlur = (e) => {\n        // if the blur event is not caused by clicking on a dropdown item then clear the input\n        const clickedOnDropdownItem = e.relatedTarget?.dataset?.element?.includes('dropdown-item');\n        if (!clickedOnDropdownItem) {\n          setInputVal('');\n        }\n      };\n\n      const onKeyDown = (e) => {\n        if (e.key === 'Enter' && isOpen && inputRef.current) {\n          const newValue = inputRef.current.value;\n          let itemToClick = newValue;\n\n          if (!customDataValidator(newValue)) {\n            itemToClick = value;\n          }\n\n          if (items.length > 0) {\n            const result = items.find((item) => getTranslatedDisplayValue(item).toLowerCase() === newValue.toLowerCase());\n            if (result) {\n              itemToClick = result;\n            }\n          }\n\n          onClickItem(itemToClick, -1);\n          inputRef?.current?.blur();\n          setIsOpen(false);\n        }\n\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown' && isOpen) {\n          // prevents scrolling when moving to overlay div using arrow keys\n          e.preventDefault();\n        }\n      };\n\n      return (\n        <input\n          className=\"Dropdown__input\"\n          onBlur={onBlur}\n          onChange={onInputChange}\n          ref={inputRef}\n          onKeyDown={onKeyDown}\n        />\n      );\n    }\n\n    return value;\n  }, [\n    hasInput,\n    inputRef,\n    buttonRef,\n    onClickItem,\n    isOpen,\n    selectedItem,\n    customDataValidator\n  ]);\n\n  const directionMap = {\n    'up': 'down',\n    'down': 'up',\n    'left': 'right',\n    'right': 'left',\n  };\n\n  if (!arrowDirection) {\n    arrowDirection = 'down';\n  }\n\n  return (\n    <DataElementWrapper className={`Dropdown__wrapper ${className}`} dataElement={dataElement}>\n      {!displayButton &&\n        <button\n          className={classNames({\n            'Dropdown': true,\n            [className]: className,\n          })}\n          style={buttonStyle}\n          onMouseDown={onToggle}\n          onTouchEnd={onToggle}\n          ref={buttonRef}\n          disabled={disabled}\n        >\n          <div className=\"picked-option\">\n            <div\n              className=\"picked-option-text\"\n              style={(optionIsSelected && applyCustomStyleToButton) ? getCustomItemStyle(selectedItem) : {}}\n            >\n              {createDropdownButton(optionIsSelected ? selectedItemDisplay : (placeholder || ''))}\n            </div>\n            <Icon className=\"arrow\" glyph={`icon-chevron-${isOpen ? directionMap[arrowDirection] : arrowDirection}`} />\n          </div>\n        </button>\n      }\n      {displayButton &&\n        <div ref={buttonRef} onClick={onToggle}>\n          {displayButton(isOpen)}\n        </div>\n      }\n      <div\n        className={classNames('Dropdown__items', { 'hide': !isOpen, 'dropdown-items-with-custom-display': displayButton })}\n        ref={overlayRef}\n        role=\"listbox\"\n        aria-label={t(`${translationPrefix}.dropdownLabel`)}\n        style={maxHeight ? scrollItemsStyle : undefined}\n        onKeyDown={onOverlayKeyDown}\n      >\n        {dropdownItems.length > 0 ?\n          (columns > 1 ?\n            displayDropdownAsList(dropdownItems, columns)\n            : dropdownItems\n          ) :\n          <>\n            <button data-testid=\"sig-no-result\" className=\"Dropdown__item\">{t('message.noResults')}</button>\n          </>\n        }\n      </div>\n    </DataElementWrapper>\n  );\n}\n\nconst displayDropdownAsList = (items, columns) => {\n  const table = [];\n  let row = [];\n\n  items.forEach((item, index) => {\n    if (index % columns === 0 && row.length > 0) {\n      table.push(\n        <tr key={`row-${index}`}>\n          {row}\n        </tr>\n      );\n      row = [];\n    }\n\n    row.push(<td key={index} >{item}</td>);\n  });\n\n  if (row.length > 0) {\n    table.push(\n      <tr key={`row-${items.length + 1}`}>\n        {row}\n      </tr>\n    );\n  }\n\n  return (\n    <table>\n      <tbody>\n        {table}\n      </tbody>\n    </table>\n  );\n};\n\nconst getImageIndexFromKey = (imageArray, key) => {\n  if (!imageArray || imageArray.length === 0) {\n    return -1;\n  }\n\n  let imageIndex = -1;\n  imageArray.forEach((image, index) => {\n    if (image.key === key) {\n      imageIndex = index;\n    }\n  });\n\n  return imageIndex;\n};\n\nDropdown.propTypes = propTypes;\nexport default Dropdown;","import Dropdown from './Dropdown';\n\nexport default Dropdown;","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n  var allowedTypes = [];\n  types.forEach(function (type) {\n    if (props[type]) {\n      allowedTypes.push(type);\n    }\n  });\n  return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n  var calculations = {};\n\n  if (types.indexOf('client') > -1) {\n    calculations.client = {\n      top: node.clientTop,\n      left: node.clientLeft,\n      width: node.clientWidth,\n      height: node.clientHeight\n    };\n  }\n\n  if (types.indexOf('offset') > -1) {\n    calculations.offset = {\n      top: node.offsetTop,\n      left: node.offsetLeft,\n      width: node.offsetWidth,\n      height: node.offsetHeight\n    };\n  }\n\n  if (types.indexOf('scroll') > -1) {\n    calculations.scroll = {\n      top: node.scrollTop,\n      left: node.scrollLeft,\n      width: node.scrollWidth,\n      height: node.scrollHeight\n    };\n  }\n\n  if (types.indexOf('bounds') > -1) {\n    var rect = node.getBoundingClientRect();\n    calculations.bounds = {\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  }\n\n  if (types.indexOf('margin') > -1) {\n    var styles = getComputedStyle(node);\n    calculations.margin = {\n      top: styles ? parseInt(styles.marginTop) : 0,\n      right: styles ? parseInt(styles.marginRight) : 0,\n      bottom: styles ? parseInt(styles.marginBottom) : 0,\n      left: styles ? parseInt(styles.marginLeft) : 0\n    };\n  }\n\n  return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n  // Assume that the element is an instance of Node, which means that it\n  // has the \"ownerDocument\" property from which we can retrieve a\n  // corresponding global object.\n  var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n  // provided element.\n\n  return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n  return function (WrappedComponent) {\n    var _class, _temp;\n\n    return _temp = _class =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(WithContentRect, _Component);\n\n      function WithContentRect() {\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 = _Component.call.apply(_Component, [this].concat(args)) || this;\n        _this.state = {\n          contentRect: {\n            entry: {},\n            client: {},\n            offset: {},\n            scroll: {},\n            bounds: {},\n            margin: {}\n          }\n        };\n        _this._animationFrameID = null;\n        _this._resizeObserver = null;\n        _this._node = null;\n        _this._window = null;\n\n        _this.measure = function (entries) {\n          var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n          if (entries) {\n            contentRect.entry = entries[0].contentRect;\n          }\n\n          _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n            if (_this._resizeObserver !== null) {\n              _this.setState({\n                contentRect: contentRect\n              });\n\n              if (typeof _this.props.onResize === 'function') {\n                _this.props.onResize(contentRect);\n              }\n            }\n          });\n        };\n\n        _this._handleRef = function (node) {\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.unobserve(_this._node);\n          }\n\n          _this._node = node;\n          _this._window = getWindowOf(_this._node);\n          var innerRef = _this.props.innerRef;\n\n          if (innerRef) {\n            if (typeof innerRef === 'function') {\n              innerRef(_this._node);\n            } else {\n              innerRef.current = _this._node;\n            }\n          }\n\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.observe(_this._node);\n          }\n        };\n\n        return _this;\n      }\n\n      var _proto = WithContentRect.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n        if (this._node !== null) {\n          this._resizeObserver.observe(this._node);\n\n          if (typeof this.props.onResize === 'function') {\n            this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n          }\n        }\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this._window !== null) {\n          this._window.cancelAnimationFrame(this._animationFrameID);\n        }\n\n        if (this._resizeObserver !== null) {\n          this._resizeObserver.disconnect();\n\n          this._resizeObserver = null;\n        }\n      };\n\n      _proto.render = function render() {\n        var _this$props = this.props,\n            innerRef = _this$props.innerRef,\n            onResize = _this$props.onResize,\n            props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n        return createElement(WrappedComponent, _extends({}, props, {\n          measureRef: this._handleRef,\n          measure: this.measure,\n          contentRect: this.state.contentRect\n        }));\n      };\n\n      return WithContentRect;\n    }(Component), _class.propTypes = {\n      client: PropTypes.bool,\n      offset: PropTypes.bool,\n      scroll: PropTypes.bool,\n      bounds: PropTypes.bool,\n      margin: PropTypes.bool,\n      innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n      onResize: PropTypes.func\n    }, _temp;\n  };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n  var measure = _ref.measure,\n      measureRef = _ref.measureRef,\n      contentRect = _ref.contentRect,\n      children = _ref.children;\n  return children({\n    measure: measure,\n    measureRef: measureRef,\n    contentRect: contentRect\n  });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","import core from 'core';\nimport getRootNode, { getInstanceNode } from './getRootNode';\n\n/**\n * @ignore\n * Utility function that returns a bounding box of the current view of WebViewer.\n * @param {number} pageNumber Page number of the current page being viewed.\n * @returns {Core.Math.Rect} A {@link Core.Math.Rect} containing the two points that form a bounding box of current view.\n */\nfunction getCurrentViewRect(pageNumber) {\n  const displayMode = core.getDisplayModeObject();\n  const containerElement = core.getScrollViewElement();\n  const documentElement = core.getViewerElement();\n  const headerElement = getRootNode().querySelector('.Header');\n  const headerItemsElements = getRootNode().querySelector('.HeaderToolsContainer');\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n  let innerWidth = window.innerWidth;\n  let innerHeight = window.innerHeight;\n  let containerScrollLeft = containerElement.scrollLeft;\n  let documentElementOffsetLeft = documentElement.offsetLeft;\n\n  if (isApryseWebViewerWebComponent) {\n    const instanceRect = getInstanceNode().getBoundingClientRect();\n    innerWidth = instanceRect.width;\n    innerHeight = instanceRect.height;\n    containerScrollLeft = instanceRect.x + containerElement.scrollLeft;\n    documentElementOffsetLeft = instanceRect.x + documentElement.offsetLeft;\n  }\n\n  const coordinates = [];\n  const headerHeight = (headerElement?.clientHeight + headerItemsElements?.clientHeight) || 0;\n\n  coordinates[0] = displayMode.windowToPageNoRotate({\n    x: Math.max(containerScrollLeft, documentElementOffsetLeft),\n    y: Math.max(containerElement.scrollTop + headerHeight, 0)\n  }, pageNumber);\n\n  coordinates[1] = displayMode.windowToPageNoRotate({\n    x: Math.min(innerWidth, documentElementOffsetLeft + documentElement.offsetWidth) + containerScrollLeft,\n    y: innerHeight + containerElement.scrollTop\n  }, pageNumber);\n\n  const x1 = Math.min(coordinates[0].x, coordinates[1].x);\n  const y1 = Math.min(coordinates[0].y, coordinates[1].y);\n  const x2 = Math.max(coordinates[0].x, coordinates[1].x);\n  const y2 = Math.max(coordinates[0].y, coordinates[1].y);\n\n  return new window.Core.Math.Rect(x1, y1, x2, y2);\n}\n\n/**\n * @ignore\n * Utility function that checks if current view rect contains the entire page.\n * @param {Core.Math.Rect} currentViewRect Object containing { x1, y1, x2, y2 } positions.\n * @param {object} pageDimensions Object containing width and height of page to compare.\n * @returns {boolean} Returns true if the whole page fits within current view rect.\n */\nfunction doesCurrentViewContainEntirePage(currentViewRect, pageDimensions) {\n  if (!currentViewRect || !pageDimensions) {\n    return undefined;\n  }\n\n  const dimesions = {\n    width: currentViewRect.x2 - currentViewRect.x1,\n    height: currentViewRect.y2 - currentViewRect.y1\n  };\n\n  return (\n    dimesions.width >= pageDimensions.width &&\n    dimesions.height >= pageDimensions.height\n  );\n}\n\nexport {\n  getCurrentViewRect,\n  doesCurrentViewContainEntirePage\n};","/* eslint-disable no-unsanitized/property */\nimport i18n from 'i18next';\n\nimport actions from 'actions';\nimport dayjs from 'dayjs';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport { workerTypes } from 'constants/types';\nimport { getSortStrategies } from 'constants/sortStrategies';\nimport { mapAnnotationToKey, getDataWithKey } from 'constants/map';\nimport { isSafari, isChromeOniOS, isFirefoxOniOS } from 'helpers/device';\nimport DataElements from 'src/constants/dataElement';\nimport core from 'core';\nimport getRootNode from './getRootNode';\nimport { getCurrentViewRect, doesCurrentViewContainEntirePage } from './printCurrentViewHelper';\n\nlet pendingCanvases = [];\nlet PRINT_QUALITY = 1;\nlet colorMap;\nlet grayscaleDarknessFactor = 1;\nconst printResetStyle = `\n#print-handler {\n  display: none;\n}\n\n@media print {\n  * {\n    display: none! important;\n  }\n\n  @page {\n    margin: 0; /* Set all margins to 0 */\n  }\n\n  html {\n    height: 100%;\n    display: block! important;\n  }\n\n  body {\n    height: 100%;\n    display: block! important;\n    overflow: visible !important;\n    padding: 0;\n    margin: 0 !important;\n  }\n\n  #print-handler {\n    display: block !important;\n    height: 100%;\n    width: 100%;\n    padding: 0;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    position: absolute;\n  }\n\n  #print-handler img {\n    display: block !important;\n    max-width: 100%;\n    max-height: 100%;\n    height: 100%;\n    width: 100%;\n    object-fit: contain;\n    page-break-after: always;\n    padding: 0;\n    margin: 0;\n  }\n\n  #print-handler .page__container {\n    box-sizing: border-box;\n    display: flex !important;\n    flex-direction: column;\n    padding: 10px;\n    min-height: 100%;\n    min-width: 100%;\n    font-size: 10px;\n  }\n\n  #print-handler .page__container .page__header {\n    display: block !important;\n    align-self: flex-start;\n    font-size: 2rem;\n    margin-bottom: 2rem;\n    padding-bottom: 0.6rem;\n    border-bottom: 0.1rem solid black;\n  }\n\n  #print-handler .page__container .note {\n    display: flex !important;\n    flex-direction: column;\n    padding: 0.6rem;\n    border: 0.1rem lightgray solid;\n    border-radius: 0.4rem;\n    margin-bottom: 0.5rem;\n  }\n\n  #print-handler .page__container .note .note__info {\n    display: block !important;\n    font-size: 1.3rem;\n    margin-bottom: 0.1rem;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon {\n    display: flex !important;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon {\n    display: block !important;\n    width: 1.65rem;\n    height: 1.65rem;\n    margin-top: -0.1rem;\n    margin-right: 0.2rem;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon path:not([fill=none]) {\n    display: block !important;\n    fill: currentColor;\n  }\n\n  #print-handler .page__container .note .note__root .note__content {\n    display: block !important;\n    margin-left: 0.3rem;\n  }\n\n  #print-handler .page__container .note .note__root {\n    display: block !important;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon svg {\n    display: block !important;\n  }\n\n  #print-handler .page__container .note .note__reply {\n    display: block !important;\n    margin: 0.5rem 0 0 2rem;\n  }\n\n  #print-handler .page__container .note .note__content {\n    display: block !important;\n    font-size: 1.2rem;\n    margin-top: 0.1rem;\n  }\n\n  #app {\n    overflow: visible !important;\n  }\n\n  .App {\n    display: none !important;\n  }\n\n  html, body, #app {\n    max-width: none !important;\n  }\n}\n`;\n\nexport const setGrayscaleDarknessFactor = (factor) => {\n  grayscaleDarknessFactor = factor;\n};\n\ndayjs.extend(LocalizedFormat);\n\nexport const print = async (dispatch, isEmbedPrintSupported, sortStrategy, colorMap, options = {}) => {\n  const {\n    includeAnnotations,\n    includeComments,\n    maintainPageOrientation,\n    onProgress,\n    printQuality = PRINT_QUALITY,\n    printWithoutModal = false,\n    language,\n    isPrintCurrentView,\n    printedNoteDateFormat: dateFormat,\n    isGrayscale = false,\n    timezone\n  } = options;\n  let { pagesToPrint } = options;\n\n  if (!core.getDocument()) {\n    return;\n  }\n\n  const documentType = core.getDocument().getType();\n  const bbURLPromise = core.getPrintablePDF();\n\n  if (!isGrayscale && bbURLPromise) {\n    const printPage = window.open('', '_blank');\n    // eslint-disable-next-line no-unsanitized/method\n    printPage.document.write(i18n.t('message.preparingToPrint'));\n    bbURLPromise.then((result) => {\n      printPage.location.href = result.url;\n    });\n  } else if (isEmbedPrintSupported && documentType === workerTypes.PDF) {\n    dispatch(actions.openElement(DataElements.LOADING_MODAL));\n    printPdf().then(() => {\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    });\n  } else if (includeAnnotations || includeComments || printWithoutModal) {\n    if (!pagesToPrint) {\n      pagesToPrint = [];\n      for (let i = 1; i <= core.getTotalPages(); i++) {\n        pagesToPrint.push(i);\n      }\n    }\n    if (isPrintCurrentView) {\n      pagesToPrint = [core.getDocumentViewer().getCurrentPage()];\n    }\n\n    const createPages = creatingPages(\n      pagesToPrint,\n      includeComments,\n      includeAnnotations,\n      maintainPageOrientation,\n      printQuality,\n      sortStrategy,\n      colorMap,\n      dateFormat,\n      onProgress,\n      isPrintCurrentView,\n      language,\n      false,\n      isGrayscale,\n      timezone,\n    );\n    Promise.all(createPages)\n      .then((pages) => {\n        printPages(pages);\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  } else {\n    dispatch(actions.openElement('printModal'));\n  }\n};\n\nconst printPdf = () => core.exportAnnotations().then((xfdfString) => {\n  const printDocument = true;\n  return core\n    .getDocument()\n    .getFileData({ xfdfString, printDocument })\n    .then((data) => {\n      const arr = new Uint8Array(data);\n      const blob = new Blob([arr], { type: 'application/pdf' });\n      const printHandler = getRootNode().getElementById('print-handler');\n      printHandler.src = URL.createObjectURL(blob);\n\n      return new Promise((resolve) => {\n        const loadListener = function() {\n          printHandler.contentWindow.print();\n          printHandler.removeEventListener('load', loadListener);\n\n          resolve();\n        };\n\n        printHandler.addEventListener('load', loadListener);\n      });\n    });\n});\n\nexport const creatingPages = (pagesToPrint, includeComments, includeAnnotations, maintainPageOrientation, printQuality, sortStrategy, clrMap, dateFormat, onProgress, isPrintCurrentView, language, createCanvases = false, isGrayscale = false, timezone) => {\n  const createdPages = [];\n  pendingCanvases = [];\n  PRINT_QUALITY = printQuality;\n  colorMap = clrMap;\n\n  pagesToPrint.forEach((pageNumber) => {\n    createdPages.push(creatingImage(pageNumber, includeAnnotations, maintainPageOrientation, isPrintCurrentView, createCanvases, isGrayscale));\n\n    if (onProgress) {\n      createdPages[createdPages.length - 1].then((htmlElement) => {\n        onProgress(pageNumber, htmlElement);\n      });\n    }\n\n    const printableAnnotationNotes = getPrintableAnnotationNotes(pageNumber);\n    if (includeComments && printableAnnotationNotes) {\n      const sortedNotes = getSortStrategies()[sortStrategy].getSortedNotes(printableAnnotationNotes);\n      if (sortedNotes.length) {\n        createdPages.push(creatingNotesPage(sortedNotes, pageNumber, dateFormat, language, timezone));\n      }\n      if (onProgress) {\n        createdPages[createdPages.length - 1].then((htmlElement) => {\n          onProgress(pageNumber, htmlElement);\n        });\n      }\n    }\n  });\n\n  return createdPages;\n};\n\nconst getResetPrintStyle = () => {\n  const style = document.createElement('style');\n  style.id = 'print-handler-css';\n  style.textContent = printResetStyle;\n  return style;\n};\n\nexport const printPages = (pages) => {\n  const printHandler = getRootNode().getElementById('print-handler');\n  printHandler.innerHTML = '';\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n\n  if (isApryseWebViewerWebComponent) {\n    // In the Web component mode, the window.print function uses the top window as target for printing.\n    // The approach here is to teleport the print handler div to the top parent and inject some CSS\n    // to make it print nicely\n    printHandler.parentNode.removeChild(printHandler);\n    document.body.appendChild(printHandler);\n    if (!document.getElementById('print-handler-css')) {\n      const style = getResetPrintStyle();\n      document.head.appendChild(style);\n    }\n  }\n\n  const fragment = document.createDocumentFragment();\n  pages.forEach((page) => {\n    fragment.appendChild(page);\n  });\n\n  printHandler.appendChild(fragment);\n\n  if (isSafari && !(isChromeOniOS || isFirefoxOniOS)) {\n    // Print for Safari browser. Makes Safari 11 consistently work.\n    document.execCommand('print');\n  } else {\n    // It looks like both Chrome and Firefox (on iOS) use the top window as target for window.print instead of the frame where it was triggered,\n    // so we need to teleport the print handler div to the top parent and inject some CSS to make it print nicely.\n    // This can be removed when Chrome and Firefox for iOS respect the origin frame as the actual target for window.print\n    if (isChromeOniOS || isFirefoxOniOS) {\n      const node = isApryseWebViewerWebComponent ? getRootNode() : window.parent.document;\n      if (node.getElementById('print-handler')) {\n        node.getElementById('print-handler').remove();\n      }\n      node.appendChild(printHandler.cloneNode(true));\n\n      if (!node.getElementById('print-handler-css')) {\n        const style = getResetPrintStyle();\n        const node = isApryseWebViewerWebComponent ? getRootNode() : window.parent.document.head;\n        node.appendChild(style);\n      }\n    }\n\n    printDocument();\n  }\n};\n\nconst printDocument = () => {\n  const doc = core.getDocument();\n  const tempTitle = window.parent.document.title;\n\n  if (!doc) {\n    return;\n  }\n\n  const fileName = doc.getFilename();\n  const fileNameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;\n\n  const onBeforePrint = () => {\n    window.parent.document.title = fileNameWithoutExtension;\n  };\n\n  const onAfterPrint = () => {\n    window.parent.document.title = tempTitle;\n\n    if (window.isApryseWebViewerWebComponent) {\n      const printHandler = document.getElementById('print-handler');\n      document.body.removeChild(printHandler);\n      const parentElement = getRootNode().querySelector('.PrintHandler');\n      parentElement.appendChild(printHandler);\n    }\n  };\n\n  window.addEventListener('beforeprint', onBeforePrint, { once: true });\n  window.addEventListener('afterprint', onAfterPrint, { once: true });\n  window.print();\n};\n\nexport const cancelPrint = () => {\n  const doc = core.getDocument();\n  pendingCanvases.forEach((id) => doc.cancelLoadCanvas(id));\n};\n\nexport const getPrintableAnnotationNotes = (pageNumber) => core\n  .getAnnotationsList()\n  .filter(\n    (annotation) => annotation.Listable &&\n      annotation.PageNumber === pageNumber &&\n      !annotation.isReply() &&\n      !annotation.isGrouped() &&\n      annotation.Printable,\n  );\n\nconst creatingImage = (pageNumber, includeAnnotations, maintainPageOrientation, isPrintCurrentView, createCanvases = false, isGrayscale = false) => new Promise((resolve) => {\n  const pageIndex = pageNumber - 1;\n  const printRotation = getPrintRotation(pageIndex, maintainPageOrientation);\n  const onCanvasLoaded = async (canvas) => {\n    pendingCanvases = pendingCanvases.filter((pendingCanvas) => pendingCanvas !== id);\n    positionCanvas(canvas, pageIndex);\n    let printableAnnotInfo = [];\n    if (!includeAnnotations) {\n      // according to Adobe, even if we exclude annotations, it will still draw widget annotations\n      const annotatationsToPrint = core.getAnnotationsList().filter((annotation) => {\n        return annotation.PageNumber === pageNumber && !(annotation instanceof window.Core.Annotations.WidgetAnnotation);\n      });\n      // store the previous Printable value so that we can set it back later\n      printableAnnotInfo = annotatationsToPrint.map((annotation) => ({\n        annotation, printable: annotation.Printable\n      }));\n      // set annotations to false so that it won't show up in the printed page\n      annotatationsToPrint.forEach((annotation) => {\n        annotation.Printable = false;\n      });\n    }\n\n    if (isGrayscale && grayscaleDarknessFactor >= 1) {\n      const ctx = canvas.getContext('2d');\n      // Get the old transform before reset because the annotation canvas will need it\n      const oldTransform = ctx.getTransform();\n      // Reset underlying transforms. This seems only for DWG (WVS) but could happen elsewhere.\n      ctx.resetTransform();\n      ctx.globalCompositeOperation = 'color';\n      ctx.fillStyle = 'white';\n      ctx.globalAlpha = 1;\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n      ctx.globalCompositeOperation = 'source-over';\n      ctx.setTransform(oldTransform);\n    } else if (isGrayscale) {\n      const ctx = canvas.getContext('2d');\n      ctx.globalCompositeOperation = 'source-over';\n      const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n      const { data } = imageData;\n      for (let i = 0; i < data.length; i += 4) {\n        if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) {\n          continue;\n        }\n        data[i] = data[i + 1] = data[i + 2] = ((data[i] + data[i + 1] + data[i + 2]) / 3) * grayscaleDarknessFactor;\n      }\n      ctx.putImageData(imageData, 0, 0);\n    }\n\n    const alwaysPrintAnnotationsInColor = core.getDocumentViewer().isAlwaysPrintAnnotationsInColorEnabled();\n    const drawAnnotationsInGrayscale = isGrayscale && !alwaysPrintAnnotationsInColor;\n    await drawAnnotationsOnCanvas(canvas, pageNumber, drawAnnotationsInGrayscale);\n\n    printableAnnotInfo.forEach((info) => {\n      info.annotation.Printable = info.printable;\n    });\n\n    if (createCanvases) {\n      resolve(canvas.toDataURL());\n    }\n\n    const img = document.createElement('img');\n    img.src = canvas.toDataURL();\n    img.onload = () => {\n      resolve(img);\n    };\n  };\n\n  let zoom = 1;\n  let renderRect;\n  if (isPrintCurrentView) {\n    zoom = core.getZoom();\n    renderRect = getCurrentViewRect(pageNumber);\n\n    const pageDimensions = core.getDocument().getPageInfo(pageNumber);\n    if (doesCurrentViewContainEntirePage(renderRect, pageDimensions)) {\n      renderRect = undefined;\n    }\n  }\n\n  if (!renderRect) {\n    zoom = calculatePageZoom(pageNumber);\n  }\n\n  const id = core.getDocument().loadCanvas({\n    pageNumber,\n    zoom,\n    pageRotation: printRotation,\n    drawComplete: onCanvasLoaded,\n    multiplier: PRINT_QUALITY,\n    'print': true,\n    renderRect\n  });\n\n  pendingCanvases.push(id);\n});\n\nexport const creatingNotesPage = (annotations, pageNumber, dateFormat, language, timezone) => new Promise((resolve) => {\n  const container = document.createElement('div');\n  container.className = 'page__container';\n\n  const header = document.createElement('div');\n  header.className = 'page__header';\n  header.innerHTML = `${i18n.t('option.shared.page')} ${pageNumber}`;\n\n  container.appendChild(header);\n  annotations.forEach((annotation) => {\n    const note = getNote(annotation, dateFormat, language, timezone);\n\n    container.appendChild(note);\n  });\n\n  resolve(container);\n});\n\nconst getPrintRotation = (pageIndex, maintainPageOrientation) => {\n  if (!maintainPageOrientation) {\n    const { width, height } = core.getPageInfo(pageIndex + 1);\n    const documentRotation = getDocumentRotation(pageIndex);\n    let printRotation = (4 - documentRotation) % 4;\n\n    // automatically rotate pages so that they fill up as much of the printed page as possible\n    if (printRotation % 2 === 0 && width > height) {\n      printRotation++;\n    } else if (printRotation % 2 === 1 && height > width) {\n      printRotation = 0;\n    }\n    return printRotation;\n  }\n\n  return core.getRotation(pageIndex + 1);\n};\n\nconst positionCanvas = (canvas, pageIndex) => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const documentRotation = getDocumentRotation(pageIndex);\n  const ctx = canvas.getContext('2d');\n\n  const printRotation = (4 - documentRotation) % 4;\n  // To check if automatic print rotation will be applied\n  const isAutoRotated = ((printRotation % 2 === 0 && width > height) || (printRotation % 2 === 1 && height > width));\n\n  // If this is pdf js and auto rotated, apply different transform\n  if (window.Core.isPdfjs && isAutoRotated) {\n    switch (documentRotation) {\n      case 0:\n        ctx.translate(height, 0);\n        ctx.rotate((90 * Math.PI) / 180);\n        break;\n      case 1:\n        ctx.translate(0, height);\n        ctx.rotate((270 * Math.PI) / 180);\n        break;\n      case 2:\n        ctx.translate(height, 0);\n        ctx.rotate((-270 * Math.PI) / 180);\n        break;\n      case 3:\n        ctx.translate(0, height);\n        ctx.rotate((270 * Math.PI) / 180);\n        break;\n    }\n  } else if (!window.Core.isPdfjs) {\n    switch (documentRotation) {\n      case 1:\n        ctx.translate(width, 0);\n        break;\n      case 2:\n        ctx.translate(width, height);\n        break;\n      case 3:\n        ctx.translate(0, height);\n        break;\n    }\n    ctx.rotate((documentRotation * 90 * Math.PI) / 180);\n  }\n};\n\nconst drawAnnotationsOnCanvas = (canvas, pageNumber, isGrayscale) => {\n  if (isGrayscale) {\n    const ctx = canvas.getContext('2d');\n    ctx.filter = 'grayscale(1)';\n  }\n\n  const widgetAnnotations = core\n    .getAnnotationsList()\n    .filter((annotation) => annotation.PageNumber === pageNumber && annotation instanceof window.Core.Annotations.WidgetAnnotation);\n  // just draw markup annotations\n  if (widgetAnnotations.length === 0) {\n    return core.drawAnnotations(pageNumber, canvas);\n  }\n  // draw all annotations\n  const widgetContainer = createWidgetContainer(pageNumber - 1);\n  return core.drawAnnotations(pageNumber, canvas, true, widgetContainer).then(() => {\n    const node = (window.isApryseWebViewerWebComponent) ? getRootNode() : document.body;\n    node.appendChild(widgetContainer);\n    return import(/* webpackChunkName: 'html2canvas' */ 'html2canvas').then(({ default: html2canvas }) => {\n      return html2canvas(widgetContainer, {\n        canvas,\n        backgroundColor: null,\n        scale: 1,\n        logging: false,\n      }).then(() => {\n        node.removeChild(widgetContainer);\n      });\n    });\n  });\n};\n\nconst getDocumentRotation = (pageIndex) => {\n  const pageNumber = pageIndex + 1;\n  const completeRotation = core.getCompleteRotation(pageNumber);\n  const viewerRotation = core.getRotation(pageNumber);\n\n  return (completeRotation - viewerRotation + 4) % 4;\n};\n\nconst getNote = (annotation, dateFormat, language, timezone) => {\n  const note = document.createElement('div');\n  note.className = 'note';\n\n  const noteRoot = document.createElement('div');\n  noteRoot.className = 'note__root';\n\n  const noteRootInfo = document.createElement('div');\n  noteRootInfo.className = 'note__info--with-icon';\n\n  const noteIcon = getNoteIcon(annotation);\n\n  noteRootInfo.appendChild(noteIcon);\n  noteRootInfo.appendChild(getNoteInfo(annotation, dateFormat, language, timezone));\n  noteRoot.appendChild(noteRootInfo);\n  noteRoot.appendChild(getNoteContent(annotation));\n\n  note.appendChild(noteRoot);\n  annotation.getReplies().forEach((reply) => {\n    const noteReply = document.createElement('div');\n    noteReply.className = 'note__reply';\n    noteReply.appendChild(getNoteInfo(reply, dateFormat, language, timezone));\n    noteReply.appendChild(getNoteContent(reply));\n\n    note.appendChild(noteReply);\n  });\n\n  return note;\n};\n\nconst getNoteIcon = (annotation) => {\n  const key = mapAnnotationToKey(annotation);\n  const iconColor = colorMap[key] && colorMap[key].iconColor;\n  const icon = getDataWithKey(key).icon;\n  const isBase64 = icon && icon.trim().indexOf('data:') === 0;\n\n  let noteIcon;\n  if (isBase64) {\n    noteIcon = document.createElement('img');\n    noteIcon.src = icon;\n  } else {\n    let innerHTML;\n    if (icon) {\n      const isInlineSvg = icon.indexOf('<svg') === 0;\n      /* eslint-disable global-require */\n      // eslint-disable-next-line import/no-dynamic-require\n      innerHTML = isInlineSvg ? icon : require(`../../assets/icons/${icon}.svg`);\n    } else {\n      innerHTML = annotation.Subject;\n    }\n\n    noteIcon = document.createElement('div');\n    noteIcon.innerHTML = innerHTML;\n  }\n\n  noteIcon.className = 'note__icon';\n  noteIcon.style.color = iconColor && annotation[iconColor].toHexString();\n  return noteIcon;\n};\n\nconst getNoteInfo = (annotation, dateFormat, language, timezone) => {\n  let dateCreated;\n  if (timezone) {\n    const datetimeStr = annotation.DateCreated.toLocaleString('en-US', { timeZone: timezone });\n    dateCreated = new Date(datetimeStr);\n  } else {\n    dateCreated = annotation.DateCreated;\n  }\n  const info = document.createElement('div');\n  let date = dayjs(dateCreated).format(dateFormat);\n\n  if (language) {\n    date = dayjs(dateCreated).locale(language).format(dateFormat);\n  }\n\n  info.className = 'note__info';\n  if (annotation.Subject === '' || annotation.Subject === null || annotation.Subject === undefined) {\n    info.innerHTML = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  } else {\n    info.innerHTML = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.subject')}: ${annotation.Subject} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  }\n\n  return info;\n};\n\nconst getNoteContent = (annotation) => {\n  const contentElement = document.createElement('div');\n  const contentText = annotation.getContents();\n\n  contentElement.className = 'note__content';\n  if (contentText) {\n    // ensure that new lines are preserved and rendered properly\n    contentElement.style.whiteSpace = 'pre-wrap';\n    contentElement.innerHTML = `${contentText}`;\n  }\n  return contentElement;\n};\n\nconst createWidgetContainer = (pageIndex) => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const widgetContainer = document.createElement('div');\n\n  widgetContainer.id = 'printWidgetContainer';\n  widgetContainer.style.width = width;\n  widgetContainer.style.height = height;\n  widgetContainer.style.position = 'relative';\n  widgetContainer.style.top = '-10000px';\n\n  return widgetContainer;\n};\n\nconst calculatePageZoom = (pageNumber) => {\n  let zoom = 1;\n\n  // cap the size that we render the page at when printing\n  const pageInfo = core.getDocument().getPageInfo(pageNumber);\n  const pageSize = Math.sqrt(pageInfo.width * pageInfo.height);\n  const pageSizeTarget = 2500;\n\n  if (pageSize > pageSizeTarget) {\n    zoom = pageSizeTarget / pageSize;\n  }\n\n  return zoom;\n};","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nconst ToggleElementButton = ({ onClick, dataElement, isElementDisabled, isActive, ariaLabel, ...restProps }) => {\n  if (isElementDisabled) {\n    return null;\n  }\n\n  return (\n    <Button {...restProps} isActive={isActive} dataElement={dataElement} onClick={onClick} ariaLabel={ariaLabel} />\n  );\n};\n\nconst mapStateToProps = (state, ownProps) => {\n  const isActive = selectors.isElementOpen(state, ownProps.element);\n\n  return {\n    isElementDisabled: selectors.isElementDisabled(state, ownProps.dataElement),\n    isActive,\n  };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: () => {\n    dispatch(actions.toggleElement(ownProps.element));\n    if (ownProps.onClick) {\n      ownProps.onClick(dispatch);\n    }\n  },\n});\n\nconst ConnectedToggleElementButton = connect(mapStateToProps, mapDispatchToProps)(ToggleElementButton);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedToggleElementButton {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import ToggleElementButton from './ToggleElementButton';\n\nexport default ToggleElementButton;","class LocalStorageManager {\n  constructor() {\n    // Browser will throw an error after accessing window.localStorage\n    // when loading webviewer through an iframe. So we add a catch.\n    try {\n      this.localStorageEnabled = !!window.localStorage;\n    } catch (error) {\n      console.error('window.localStorage unavailable. Disabling local storage.');\n      this.localStorageEnabled = false;\n    }\n  }\n\n  enableLocalStorage() {\n    this.localStorageEnabled = true;\n  }\n\n  disableLocalStorage() {\n    this.localStorageEnabled = false;\n  }\n\n  isLocalStorageEnabled() {\n    return this.localStorageEnabled;\n  }\n}\n\nexport default new LocalStorageManager();","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = false;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\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 */\nfunction 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\nmodule.exports = debounce;\n","import React, { useContext } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst TabsContext = React.createContext();\n\n// eslint-disable-next-line arrow-body-style\nexport const Tabs = React.memo((props) => {\n  return (\n    <TabsContext.Provider value={props.id}>\n      {props.children}\n    </TabsContext.Provider>\n  );\n});\n\nTabs.displayName = 'Tabs';\nTabs.propTypes = {\n  id: PropTypes.string.isRequired,\n  children: PropTypes.node.isRequired,\n};\n\nexport const Tab = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id) === dataElement,\n  ], shallowEqual);\n  const dispatch = useDispatch();\n\n  let propsToInject = {\n    className: classNames({\n      selected: isSelected,\n      [children.props.className]: !!children.props.className,\n    }),\n    onClick: () => {\n      children.props.onClick?.();\n      dispatch(actions.setSelectedTab(id, dataElement));\n    },\n  };\n\n  // need to do this because the children may be wrapped by React.memo\n  const type = typeof (children.type.type || children.type);\n  // only inject isSelected if children is a component\n  if (type === 'function') {\n    propsToInject = Object.assign(propsToInject, {\n      isTabSelected: isSelected,\n      dataElement,\n    });\n  } else {\n    propsToInject = Object.assign(propsToInject, {\n      'data-element': dataElement,\n    });\n  }\n\n  return isDisabled ? null : React.cloneElement(children, propsToInject);\n};\n\nTab.propTypes = {\n  children: PropTypes.node.isRequired,\n  index: PropTypes.number,\n  dataElement: PropTypes.string.isRequired,\n};\n\nexport const TabHeader = ({ dataElement, children }) => {\n  const [isDisabled] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n  ]);\n\n  return (<div data-element={dataElement}>{isDisabled ? null : children}</div>);\n};\n\nTabHeader.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n\nexport const TabPanel = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id).includes(dataElement),\n  ], shallowEqual);\n\n  return isDisabled ? null : (\n    <div\n      className=\"tab-panel\"\n      data-element={dataElement}\n      style={{ display: isSelected ? '' : 'none' }}\n    >\n      {typeof children.type === 'function'\n        ? React.cloneElement(children, { isTabPanelSelected: isSelected })\n        : children}\n    </div>\n  );\n};\n\nTabPanel.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n","var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\nfunction 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\nmodule.exports = throttle;\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  const mapDisplayModeToNumberOfPages = {\n    Single: 1,\n    Continuous: 1,\n    Facing: 2,\n    FacingContinuous: 2,\n    CoverFacing: 2,\n    Cover: 2,\n  };\n\n  return mapDisplayModeToNumberOfPages[core.getDisplayMode(documentViewerKey)] || 1;\n};\n","import core from 'core';\n\nexport default (nextPageNumber, documentViewerKey = 1) => {\n  const totalPageNumber = core.getTotalPages(documentViewerKey);\n  const currPageNumber = core.getCurrentPage(documentViewerKey);\n\n  let nextPage = Math.min(totalPageNumber, nextPageNumber);\n  nextPage = Math.max(1, nextPage);\n\n  if (nextPage !== currPageNumber) {\n    core.setCurrentPage(nextPage, documentViewerKey);\n  }\n};\n","import { useEffect } from 'react';\nimport getRootNode from 'helpers/getRootNode';\n\n// https://usehooks.com/useOnClickOutside/\nexport default (ref, handler) => {\n  useEffect(\n    () => {\n      const listener = (event) => {\n        // Do nothing if clicking ref's element or descendent elements\n        if (!ref.current || ref.current.contains(event.target)) {\n          return;\n        }\n\n        handler(event);\n      };\n      let browserDocument = document;\n      if (window.isApryseWebViewerWebComponent) {\n        browserDocument = getRootNode().getElementById('app');\n      }\n      browserDocument.addEventListener('mousedown', listener);\n      browserDocument.addEventListener('touchstart', listener);\n\n      return () => {\n        browserDocument.removeEventListener('mousedown', listener);\n        browserDocument.removeEventListener('touchstart', listener);\n      };\n    },\n    // Add ref and handler to effect dependencies\n    // It's worth noting that because passed in handler is a new ...\n    // ... function on every render that will cause this effect ...\n    // ... callback/cleanup to run every render. It's not a big deal ...\n    // ... but to optimize you can wrap handler in useCallback before ...\n    // ... passing it into this hook.\n    [ref, handler],\n  );\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = 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)) 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)) 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}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open(\"HEAD\",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:top.location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\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}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\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\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import Choice from './Choice';\n\nexport default Choice;","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","export const rotateRad = (cx, cy, x, y, radians) => {\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx; // xcos(theta) + ysin(theta)\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy; // -ysin(theta) + xcos(theta)\n\n  return { x: nx, y: ny };\n};\n\nexport const rotateDeg = (cx, cy, x, y, angle) => {\n  const radians = (Math.PI / 180) * angle;\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx;\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy;\n\n  return { x: nx, y: ny };\n};\n","import i18next from 'i18next';\nimport dayjs from 'dayjs';\nimport core from 'core';\nimport React from 'react';\nimport { rotateRad } from 'helpers/rotate';\nimport { rgbaToHex } from 'helpers/color';\nimport { getAnnotationClass } from 'helpers/getAnnotationClass';\nimport getLatestActivityDate from 'helpers/getLatestActivityDate';\n\nfunction getDocumentCenter(pageNumber) {\n  let result;\n  if (pageNumber <= core.getTotalPages()) {\n    result = core.getPageInfo(pageNumber);\n  } else {\n    result = {\n      width: 0,\n      height: 0,\n    };\n  }\n  return { x: result.width / 2, y: result.height / 2 };\n}\n\nfunction getRotationRad(pageNumber) {\n  const orientation = core.getRotation(pageNumber);\n  return (4 - orientation) * (Math.PI / 2);\n}\n\nconst sortStrategies = {\n  position: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      if (a.PageNumber === b.PageNumber) {\n        const rotation = getRotationRad(a.PageNumber);\n        const center = getDocumentCenter(a.PageNumber);\n\n        // Simulated with respect to the document origin\n        const rotatedA = [\n          rotateRad(center.x, center.y, a.X, a.Y, rotation),\n          rotateRad(center.x, center.y, a.X + a.Width, a.Y + a.Height, rotation),\n        ];\n        const rotatedB = [\n          rotateRad(center.x, center.y, b.X, b.Y, rotation),\n          rotateRad(center.x, center.y, b.X + b.Width, b.Y + b.Height, rotation),\n        ];\n\n        const smallestA = rotatedA.reduce(\n          (smallest, current) => (current.y < smallest ? current.y : smallest),\n          Number.MAX_SAFE_INTEGER,\n        );\n        const smallestB = rotatedB.reduce(\n          (smallest, current) => (current.y < smallest ? current.y : smallest),\n          Number.MAX_SAFE_INTEGER,\n        );\n\n        return smallestA - smallestB;\n      }\n      return a.PageNumber - b.PageNumber;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => currNote.PageNumber !== prevNote.PageNumber,\n    getSeparatorContent: (prevNote, currNote, { pageLabels }) => `${i18next.t('option.shared.page')} ${pageLabels[currNote.PageNumber - 1]}`,\n  },\n  createdDate: {\n    getSortedNotes: (notes) => notes.sort((a, b) => (a.DateCreated || 0) - (b.DateCreated || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = prevNote.DateCreated;\n      const currNoteDate = currNote.DateCreated;\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const createdDate = currNote.DateCreated;\n      if (createdDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const createdDateString = dayjs(new Date(createdDate)).format(dayFormat);\n\n        if (createdDateString === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (createdDateString === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return createdDateString;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  modifiedDate: {\n    getSortedNotes: (notes) => notes.sort((a, b) => (getLatestActivityDate(b) || 0) - (getLatestActivityDate(a) || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = getLatestActivityDate(prevNote);\n      const currNoteDate = getLatestActivityDate(currNote);\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const latestActivityDate = getLatestActivityDate(currNote);\n      if (latestActivityDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const latestActivityDay = dayjs(latestActivityDate).format(dayFormat);\n\n        if (latestActivityDay === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (latestActivityDay === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return latestActivityDay;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  status: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const statusA =\n          a.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${a.getStatus().toLowerCase()}`).toUpperCase();\n      const statusB =\n          b.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${b.getStatus().toLowerCase()}`).toUpperCase();\n      return statusA < statusB ? -1 : statusA > statusB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => prevNote.getStatus() !== currNote.getStatus(),\n    getSeparatorContent: (prevNote, currNote) => {\n      return currNote.getStatus() === ''\n        ? i18next.t('option.state.none')\n        : i18next.t(`option.state.${currNote.getStatus().toLowerCase()}`);\n    },\n  },\n  author: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const authorA = core.getDisplayAuthor(a['Author'])?.toUpperCase();\n      const authorB = core.getDisplayAuthor(b['Author'])?.toUpperCase();\n      return authorA < authorB ? -1 : authorA > authorB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => core.getDisplayAuthor(prevNote['Author']) !== core.getDisplayAuthor(currNote['Author']),\n    getSeparatorContent: (prevNote, currNote) => {\n      return core.getDisplayAuthor(currNote['Author']);\n    },\n  },\n  type: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const typeA = getAnnotationClass(a);\n      const typeB = getAnnotationClass(b);\n      return typeA < typeB ? -1 : typeA > typeB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      return getAnnotationClass(prevNote) !== getAnnotationClass(currNote);\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      return i18next.t(`option.type.${getAnnotationClass(currNote)}`);\n    },\n  },\n  color: {\n    getSortedNotes: (notes) => notes.sort((prevNote, currNote) => {\n      let colorA = '#485056';\n      let colorB = '#485056';\n      if (currNote.Color) {\n        colorA = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n      }\n      if (prevNote.Color) {\n        colorB = rgbaToHex(prevNote.Color.R, prevNote.Color.G, prevNote.Color.B, prevNote.Color.A);\n      }\n      return colorA < colorB ? -1 : colorA > colorB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      let colorA = '#485056';\n      let colorB = '#485056';\n      if (currNote.Color) {\n        colorA = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n      }\n      if (prevNote.Color) {\n        colorB = rgbaToHex(prevNote.Color.R, prevNote.Color.G, prevNote.Color.B, prevNote.Color.A);\n      }\n      return colorA !== colorB;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      let color = '#485056';\n      if (currNote.Color) {\n        color = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n      }\n      return (\n        <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>\n          {i18next.t('option.notesOrder.color')}\n          <div\n            style={{ background: color, width: '7px', height: '7px', borderRadius: '10000000px', marginLeft: '10px' }}\n          ></div>\n        </div>\n      );\n    },\n  },\n};\n\nexport const getSortStrategies = () => sortStrategies;\n\nexport const addSortStrategy = (newStrategy) => {\n  const { name, getSortedNotes, shouldRenderSeparator, getSeparatorContent } = newStrategy;\n\n  sortStrategies[name] = {\n    getSortedNotes,\n    shouldRenderSeparator,\n    getSeparatorContent,\n  };\n};\n\n/**\n * Contains string enums for all the possible sorting algorithms available in NotesPanel.\n * @name UI.NotesPanelSortStrategy\n * @property {string} POSITION Sort notes by position.\n * @property {string} CREATED_DATE Sort notes by creation date.\n * @property {string} MODIFIED_DATE Sort notes by last modification date.\n * @property {string} STATUS Sort notes by status.\n * @property {string} AUTHOR Sort notes by the author.\n * @property {string} TYPE Sort notes by type.\n * @property {string} COLOR Sort notes by color.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.AUTHOR);\n  });\n */\nexport const NotesPanelSortStrategy = {\n  POSITION: 'position',\n  CREATED_DATE: 'createdDate',\n  MODIFIED_DATE: 'modifiedDate',\n  STATUS: 'status',\n  AUTHOR: 'author',\n  TYPE: 'type',\n  COLOR: 'color'\n};","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","let searchListeners = [];\nlet overrideSearchExecutionFn;\n\nexport function addSearchListener(searchListener) {\n  searchListeners.push(searchListener);\n}\n\nexport function removeSearchListener(searchListener) {\n  searchListeners = searchListeners.filter((listener) => {\n    return listener !== searchListener;\n  });\n}\n\nexport function getSearchListeners() {\n  return [...searchListeners];\n}\n\nexport function clearSearchListeners() {\n  searchListeners = [];\n}\n\nexport function overrideSearchExecution(fn) {\n  overrideSearchExecutionFn = fn;\n}\n\nexport function getOverrideSearchExecution() {\n  return overrideSearchExecutionFn;\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","// cheap lodash replacements\nexport function memoize(fn) {\n  var result = null;\n\n  var memoized = function memoized() {\n    if (result == null) {\n      result = fn();\n    }\n\n    return result;\n  };\n\n  return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\nexport function union(itemsA, itemsB) {\n  var set = new Set();\n\n  var insertItem = function insertItem(item) {\n    return set.add(item);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  set.forEach(function (key) {\n    return result.push(key);\n  });\n  return result;\n}","function _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 _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 { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n  function EnterLeaveCounter(isNodeInDocument) {\n    _classCallCheck(this, EnterLeaveCounter);\n\n    _defineProperty(this, \"entered\", []);\n\n    _defineProperty(this, \"isNodeInDocument\", void 0);\n\n    this.isNodeInDocument = isNodeInDocument;\n  }\n\n  _createClass(EnterLeaveCounter, [{\n    key: \"enter\",\n    value: function enter(enteringNode) {\n      var _this = this;\n\n      var previousLength = this.entered.length;\n\n      var isNodeEntered = function isNodeEntered(node) {\n        return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n      };\n\n      this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n      return previousLength === 0 && this.entered.length > 0;\n    }\n  }, {\n    key: \"leave\",\n    value: function leave(leavingNode) {\n      var previousLength = this.entered.length;\n      this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n      return previousLength > 0 && this.entered.length === 0;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.entered = [];\n    }\n  }]);\n\n  return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n  return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n  return Boolean(window.safari);\n});","function _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 _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\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n  function MonotonicInterpolant(xs, ys) {\n    _classCallCheck(this, MonotonicInterpolant);\n\n    _defineProperty(this, \"xs\", void 0);\n\n    _defineProperty(this, \"ys\", void 0);\n\n    _defineProperty(this, \"c1s\", void 0);\n\n    _defineProperty(this, \"c2s\", void 0);\n\n    _defineProperty(this, \"c3s\", void 0);\n\n    var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n    var indexes = [];\n\n    for (var i = 0; i < length; i++) {\n      indexes.push(i);\n    }\n\n    indexes.sort(function (a, b) {\n      return xs[a] < xs[b] ? -1 : 1;\n    }); // Get consecutive differences and slopes\n\n    var dys = [];\n    var dxs = [];\n    var ms = [];\n    var dx;\n    var dy;\n\n    for (var _i = 0; _i < length - 1; _i++) {\n      dx = xs[_i + 1] - xs[_i];\n      dy = ys[_i + 1] - ys[_i];\n      dxs.push(dx);\n      dys.push(dy);\n      ms.push(dy / dx);\n    } // Get degree-1 coefficients\n\n\n    var c1s = [ms[0]];\n\n    for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n      var m2 = ms[_i2];\n      var mNext = ms[_i2 + 1];\n\n      if (m2 * mNext <= 0) {\n        c1s.push(0);\n      } else {\n        dx = dxs[_i2];\n        var dxNext = dxs[_i2 + 1];\n        var common = dx + dxNext;\n        c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n      }\n    }\n\n    c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n    var c2s = [];\n    var c3s = [];\n    var m;\n\n    for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n      m = ms[_i3];\n      var c1 = c1s[_i3];\n      var invDx = 1 / dxs[_i3];\n\n      var _common = c1 + c1s[_i3 + 1] - m - m;\n\n      c2s.push((m - c1 - _common) * invDx);\n      c3s.push(_common * invDx * invDx);\n    }\n\n    this.xs = xs;\n    this.ys = ys;\n    this.c1s = c1s;\n    this.c2s = c2s;\n    this.c3s = c3s;\n  }\n\n  _createClass(MonotonicInterpolant, [{\n    key: \"interpolate\",\n    value: function interpolate(x) {\n      var xs = this.xs,\n          ys = this.ys,\n          c1s = this.c1s,\n          c2s = this.c2s,\n          c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n      var i = xs.length - 1;\n\n      if (x === xs[i]) {\n        return ys[i];\n      } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n      var low = 0;\n      var high = c3s.length - 1;\n      var mid;\n\n      while (low <= high) {\n        mid = Math.floor(0.5 * (low + high));\n        var xHere = xs[mid];\n\n        if (xHere < x) {\n          low = mid + 1;\n        } else if (xHere > x) {\n          high = mid - 1;\n        } else {\n          return ys[mid];\n        }\n      }\n\n      i = Math.max(0, high); // Interpolate\n\n      var diff = x - xs[i];\n      var diffSq = diff * diff;\n      return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n    }\n  }]);\n\n  return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return null;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nexport function getEventClientOffset(e) {\n  return {\n    x: e.clientX,\n    y: e.clientY\n  };\n}\n\nfunction isImageNode(node) {\n  var _document$documentEle;\n\n  return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) !== null && _document$documentEle !== void 0 && _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n  var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n  var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n  if (isSafari() && isImage) {\n    dragPreviewHeight /= window.devicePixelRatio;\n    dragPreviewWidth /= window.devicePixelRatio;\n  }\n\n  return {\n    dragPreviewWidth: dragPreviewWidth,\n    dragPreviewHeight: dragPreviewHeight\n  };\n}\n\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n  // The browsers will use the image intrinsic size under different conditions.\n  // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n  var isImage = isImageNode(dragPreview);\n  var dragPreviewNode = isImage ? sourceNode : dragPreview;\n  var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n  var offsetFromDragPreview = {\n    x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n    y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n  };\n  var sourceWidth = sourceNode.offsetWidth,\n      sourceHeight = sourceNode.offsetHeight;\n  var anchorX = anchorPoint.anchorX,\n      anchorY = anchorPoint.anchorY;\n\n  var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n      dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n      dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n  var calculateYOffset = function calculateYOffset() {\n    var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n    offsetFromDragPreview.y, // Align at the center\n    offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n    offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n    var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n    if (isSafari() && isImage) {\n      // We'll have to wait for @3x to see if this is entirely correct\n      y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n    }\n\n    return y;\n  };\n\n  var calculateXOffset = function calculateXOffset() {\n    // Interpolate coordinates depending on anchor point\n    // If you know a simpler way to do this, let me know\n    var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n    offsetFromDragPreview.x, // Align at the center\n    offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n    offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n    return interpolantX.interpolate(anchorX);\n  }; // Force offsets if specified in the options.\n\n\n  var offsetX = offsetPoint.offsetX,\n      offsetY = offsetPoint.offsetY;\n  var isManualOffsetX = offsetX === 0 || offsetX;\n  var isManualOffsetY = offsetY === 0 || offsetY;\n  return {\n    x: isManualOffsetX ? offsetX : calculateXOffset(),\n    y: isManualOffsetY ? offsetY : calculateYOffset()\n  };\n}","var _nativeTypesConfig;\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 * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n  exposeProperties: {\n    files: function files(dataTransfer) {\n      return Array.prototype.slice.call(dataTransfer.files);\n    },\n    items: function items(dataTransfer) {\n      return dataTransfer.items;\n    },\n    dataTransfer: function dataTransfer(_dataTransfer) {\n      return _dataTransfer;\n    }\n  },\n  matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.HTML, {\n  exposeProperties: {\n    html: function html(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer2) {\n      return _dataTransfer2;\n    }\n  },\n  matchesTypes: ['Html', 'text/html']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n  exposeProperties: {\n    urls: function urls(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer3) {\n      return _dataTransfer3;\n    }\n  },\n  matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n  exposeProperties: {\n    text: function text(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer4) {\n      return _dataTransfer4;\n    }\n  },\n  matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';\nexport var HTML = '__NATIVE_HTML__';","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n  var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n    return resultSoFar || dataTransfer.getData(typeToTry);\n  }, '');\n  return result != null ? result : defaultValue;\n}","function _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 _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\nexport var NativeDragSource = /*#__PURE__*/function () {\n  function NativeDragSource(config) {\n    _classCallCheck(this, NativeDragSource);\n\n    _defineProperty(this, \"item\", void 0);\n\n    _defineProperty(this, \"config\", void 0);\n\n    this.config = config;\n    this.item = {};\n    this.initializeExposedProperties();\n  }\n\n  _createClass(NativeDragSource, [{\n    key: \"initializeExposedProperties\",\n    value: function initializeExposedProperties() {\n      var _this = this;\n\n      Object.keys(this.config.exposeProperties).forEach(function (property) {\n        Object.defineProperty(_this.item, property, {\n          configurable: true,\n          enumerable: true,\n          get: function get() {\n            // eslint-disable-next-line no-console\n            console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n            return null;\n          }\n        });\n      });\n    }\n  }, {\n    key: \"loadDataTransfer\",\n    value: function loadDataTransfer(dataTransfer) {\n      var _this2 = this;\n\n      if (dataTransfer) {\n        var newProperties = {};\n        Object.keys(this.config.exposeProperties).forEach(function (property) {\n          newProperties[property] = {\n            value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n            configurable: true,\n            enumerable: true\n          };\n        });\n        Object.defineProperties(this.item, newProperties);\n      }\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      return true;\n    }\n  }, {\n    key: \"beginDrag\",\n    value: function beginDrag() {\n      return this.item;\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(monitor, handle) {\n      return handle === monitor.getSourceId();\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {// empty\n    }\n  }]);\n\n  return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n  var result = new NativeDragSource(nativeTypesConfig[type]);\n  result.loadDataTransfer(dataTransfer);\n  return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n  if (!dataTransfer) {\n    return null;\n  }\n\n  var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n  return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n    var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n    return matchesTypes.some(function (t) {\n      return dataTransferTypes.indexOf(t) > -1;\n    });\n  })[0] || null;\n}","function _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 _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\nexport var OptionsReader = /*#__PURE__*/function () {\n  function OptionsReader(globalContext, options) {\n    _classCallCheck(this, OptionsReader);\n\n    _defineProperty(this, \"ownerDocument\", null);\n\n    _defineProperty(this, \"globalContext\", void 0);\n\n    _defineProperty(this, \"optionsArgs\", void 0);\n\n    this.globalContext = globalContext;\n    this.optionsArgs = options;\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.globalContext) {\n        return this.globalContext;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      var _this$globalContext;\n\n      if ((_this$globalContext = this.globalContext) !== null && _this$globalContext !== void 0 && _this$globalContext.document) {\n        return this.globalContext.document;\n      } else if (this.window) {\n        return this.window.document;\n      } else {\n        return undefined;\n      }\n    }\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      var _this$optionsArgs;\n\n      return ((_this$optionsArgs = this.optionsArgs) === null || _this$optionsArgs === void 0 ? void 0 : _this$optionsArgs.rootElement) || this.window;\n    }\n  }]);\n\n  return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _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 _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 { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n  // React-Dnd Components\n  // Internal State\n  function HTML5BackendImpl(manager, globalContext, options) {\n    var _this = this;\n\n    _classCallCheck(this, HTML5BackendImpl);\n\n    _defineProperty(this, \"options\", void 0);\n\n    _defineProperty(this, \"actions\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    _defineProperty(this, \"enterLeaveCounter\", void 0);\n\n    _defineProperty(this, \"sourcePreviewNodes\", new Map());\n\n    _defineProperty(this, \"sourcePreviewNodeOptions\", new Map());\n\n    _defineProperty(this, \"sourceNodes\", new Map());\n\n    _defineProperty(this, \"sourceNodeOptions\", new Map());\n\n    _defineProperty(this, \"dragStartSourceIds\", null);\n\n    _defineProperty(this, \"dropTargetIds\", []);\n\n    _defineProperty(this, \"dragEnterTargetIds\", []);\n\n    _defineProperty(this, \"currentNativeSource\", null);\n\n    _defineProperty(this, \"currentNativeHandle\", null);\n\n    _defineProperty(this, \"currentDragSourceNode\", null);\n\n    _defineProperty(this, \"altKeyPressed\", false);\n\n    _defineProperty(this, \"mouseMoveTimeoutTimer\", null);\n\n    _defineProperty(this, \"asyncEndDragFrameId\", null);\n\n    _defineProperty(this, \"dragOverTargetIds\", null);\n\n    _defineProperty(this, \"lastClientOffset\", null);\n\n    _defineProperty(this, \"hoverRafId\", null);\n\n    _defineProperty(this, \"getSourceClientOffset\", function (sourceId) {\n      var source = _this.sourceNodes.get(sourceId);\n\n      return source && getNodeClientOffset(source) || null;\n    });\n\n    _defineProperty(this, \"endDragNativeItem\", function () {\n      if (!_this.isDraggingNativeItem()) {\n        return;\n      }\n\n      _this.actions.endDrag();\n\n      if (_this.currentNativeHandle) {\n        _this.registry.removeSource(_this.currentNativeHandle);\n      }\n\n      _this.currentNativeHandle = null;\n      _this.currentNativeSource = null;\n    });\n\n    _defineProperty(this, \"isNodeInDocument\", function (node) {\n      // Check the node either in the main document or in the current context\n      return Boolean(node && _this.document && _this.document.body && _this.document.body.contains(node));\n    });\n\n    _defineProperty(this, \"endDragIfSourceWasRemovedFromDOM\", function () {\n      var node = _this.currentDragSourceNode;\n\n      if (node == null || _this.isNodeInDocument(node)) {\n        return;\n      }\n\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragStartCapture\", function () {\n      _this.clearCurrentDragSourceNode();\n\n      _this.dragStartSourceIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragStart\", function (e) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      var dragStartSourceIds = _this.dragStartSourceIds;\n      _this.dragStartSourceIds = null;\n      var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n      if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      } // Don't publish the source just yet (see why below)\n\n\n      _this.actions.beginDrag(dragStartSourceIds || [], {\n        publishSource: false,\n        getSourceClientOffset: _this.getSourceClientOffset,\n        clientOffset: clientOffset\n      });\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (_this.monitor.isDragging()) {\n        if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n          // Use custom drag image if user specifies it.\n          // If child drag source refuses drag but parent agrees,\n          // use parent's node as drag image. Neither works in IE though.\n          var sourceId = _this.monitor.getSourceId();\n\n          var sourceNode = _this.sourceNodes.get(sourceId);\n\n          var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n          if (dragPreview) {\n            var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n                anchorX = _this$getCurrentSourc.anchorX,\n                anchorY = _this$getCurrentSourc.anchorY,\n                offsetX = _this$getCurrentSourc.offsetX,\n                offsetY = _this$getCurrentSourc.offsetY;\n\n            var anchorPoint = {\n              anchorX: anchorX,\n              anchorY: anchorY\n            };\n            var offsetPoint = {\n              offsetX: offsetX,\n              offsetY: offsetY\n            };\n            var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n            dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n          }\n        }\n\n        try {\n          // Firefox won't drag without setting data\n          dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n        } catch (err) {// IE doesn't support MIME types in setData\n        } // Store drag source node so we can check whether\n        // it is removed from DOM and trigger endDrag manually.\n\n\n        _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n        var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n            captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n        if (!captureDraggingState) {\n          // Usually we want to publish it in the next tick so that browser\n          // is able to screenshot the current (not yet dragging) state.\n          //\n          // It also neatly avoids a situation where render() returns null\n          // in the same tick for the source element, and browser freaks out.\n          setTimeout(function () {\n            return _this.actions.publishDragSource();\n          }, 0);\n        } else {\n          // In some cases the user may want to override this behavior, e.g.\n          // to work around IE not supporting custom drag previews.\n          //\n          // When using a custom drag layer, the only way to prevent\n          // the default drag preview from drawing in IE is to screenshot\n          // the dragging state in which the node itself has zero opacity\n          // and height. In this case, though, returning null from render()\n          // will abruptly end the dragging, which is not obvious.\n          //\n          // This is the reason such behavior is strictly opt-in.\n          _this.actions.publishDragSource();\n        }\n      } else if (nativeType) {\n        // A native item (such as URL) dragged from inside the document\n        _this.beginDragNativeItem(nativeType);\n      } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n        // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n        // Just let it drag. It's a native type (URL or text) and will be picked up in\n        // dragenter handler.\n        return;\n      } else {\n        // If by this time no drag source reacted, tell browser not to drag.\n        e.preventDefault();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEndCapture\", function () {\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        // Firefox can dispatch this event in an infinite loop\n        // if dragend handler does something like showing an alert.\n        // Only proceed if we have not handled it already.\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnterCapture\", function (e) {\n      _this.dragEnterTargetIds = [];\n\n      var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n      if (!isFirstEnter || _this.monitor.isDragging()) {\n        return;\n      }\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (nativeType) {\n        // A native item (such as file or URL) dragged from outside the document\n        _this.beginDragNativeItem(nativeType, dataTransfer);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnter\", function (e) {\n      var dragEnterTargetIds = _this.dragEnterTargetIds;\n      _this.dragEnterTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey; // If the target changes position as the result of `dragenter`, `dragover` might still\n      // get dispatched despite target being no longer there. The easy solution is to check\n      // whether there actually is a target before firing `hover`.\n\n      if (dragEnterTargetIds.length > 0) {\n        _this.actions.hover(dragEnterTargetIds, {\n          clientOffset: getEventClientOffset(e)\n        });\n      }\n\n      var canDrop = dragEnterTargetIds.some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // IE requires this to fire dragover events\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragOverCapture\", function () {\n      _this.dragOverTargetIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragOver\", function (e) {\n      var dragOverTargetIds = _this.dragOverTargetIds;\n      _this.dragOverTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        // Prevent default \"drop and blow away the whole document\" action.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey;\n      _this.lastClientOffset = getEventClientOffset(e);\n\n      if (_this.hoverRafId === null && typeof requestAnimationFrame !== 'undefined') {\n        _this.hoverRafId = requestAnimationFrame(function () {\n          if (_this.monitor.isDragging()) {\n            _this.actions.hover(dragOverTargetIds || [], {\n              clientOffset: _this.lastClientOffset\n            });\n          }\n\n          _this.hoverRafId = null;\n        });\n      }\n\n      var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // Show user-specified drop effect.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      } else if (_this.isDraggingNativeItem()) {\n        // Don't show a nice cursor but still prevent default\n        // \"drop and blow away the whole document\" action.\n        e.preventDefault();\n      } else {\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragLeaveCapture\", function (e) {\n      if (_this.isDraggingNativeItem()) {\n        e.preventDefault();\n      }\n\n      var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n      if (!isLastLeave) {\n        return;\n      }\n\n      if (_this.isDraggingNativeItem()) {\n        setTimeout(function () {\n          return _this.endDragNativeItem();\n        }, 0);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDropCapture\", function (e) {\n      _this.dropTargetIds = [];\n\n      if (_this.isDraggingNativeItem()) {\n        var _this$currentNativeSo;\n\n        e.preventDefault();\n        (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n      } else if (matchNativeItemType(e.dataTransfer)) {\n        // Dragging some elements, like <a> and <img> may still behave like a native drag event,\n        // even if the current drag event matches a user-defined type.\n        // Stop the default behavior when we're not expecting a native item to be dropped.\n        e.preventDefault();\n      }\n\n      _this.enterLeaveCounter.reset();\n    });\n\n    _defineProperty(this, \"handleTopDrop\", function (e) {\n      var dropTargetIds = _this.dropTargetIds;\n      _this.dropTargetIds = [];\n\n      _this.actions.hover(dropTargetIds, {\n        clientOffset: getEventClientOffset(e)\n      });\n\n      _this.actions.drop({\n        dropEffect: _this.getCurrentDropEffect()\n      });\n\n      if (_this.isDraggingNativeItem()) {\n        _this.endDragNativeItem();\n      } else if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleSelectStart\", function (e) {\n      var target = e.target; // Only IE requires us to explicitly say\n      // we want drag drop operation to start\n\n      if (typeof target.dragDrop !== 'function') {\n        return;\n      } // Inputs and textareas should be selectable\n\n\n      if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n        return;\n      } // For other targets, ask IE\n      // to enable drag and drop\n\n\n      e.preventDefault();\n      target.dragDrop();\n    });\n\n    this.options = new OptionsReader(globalContext, options);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.registry = manager.getRegistry();\n    this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n  }\n  /**\n   * Generate profiling statistics for the HTML5Backend.\n   */\n\n\n  _createClass(HTML5BackendImpl, [{\n    key: \"profile\",\n    value: function profile() {\n      var _this$dragStartSource, _this$dragOverTargetI;\n\n      return {\n        sourcePreviewNodes: this.sourcePreviewNodes.size,\n        sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n        sourceNodeOptions: this.sourceNodeOptions.size,\n        sourceNodes: this.sourceNodes.size,\n        dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n        dropTargetIds: this.dropTargetIds.length,\n        dragEnterTargetIds: this.dragEnterTargetIds.length,\n        dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n      };\n    } // public for test\n\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      return this.options.document;\n    }\n    /**\n     * Get the root element to use for event subscriptions\n     */\n\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      return this.options.rootElement;\n    }\n  }, {\n    key: \"setup\",\n    value: function setup() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      if (root.__isReactDndBackendSetUp) {\n        throw new Error('Cannot have two HTML5 backends at the same time.');\n      }\n\n      root.__isReactDndBackendSetUp = true;\n      this.addEventListeners(root);\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      root.__isReactDndBackendSetUp = false;\n      this.removeEventListeners(this.rootElement);\n      this.clearCurrentDragSourceNode();\n\n      if (this.asyncEndDragFrameId) {\n        var _this$window;\n\n        (_this$window = this.window) === null || _this$window === void 0 ? void 0 : _this$window.cancelAnimationFrame(this.asyncEndDragFrameId);\n      }\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this2 = this;\n\n      this.sourcePreviewNodeOptions.set(sourceId, options);\n      this.sourcePreviewNodes.set(sourceId, node);\n      return function () {\n        _this2.sourcePreviewNodes.delete(sourceId);\n\n        _this2.sourcePreviewNodeOptions.delete(sourceId);\n      };\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourceNodes.set(sourceId, node);\n      this.sourceNodeOptions.set(sourceId, options);\n\n      var handleDragStart = function handleDragStart(e) {\n        return _this3.handleDragStart(e, sourceId);\n      };\n\n      var handleSelectStart = function handleSelectStart(e) {\n        return _this3.handleSelectStart(e);\n      };\n\n      node.setAttribute('draggable', 'true');\n      node.addEventListener('dragstart', handleDragStart);\n      node.addEventListener('selectstart', handleSelectStart);\n      return function () {\n        _this3.sourceNodes.delete(sourceId);\n\n        _this3.sourceNodeOptions.delete(sourceId);\n\n        node.removeEventListener('dragstart', handleDragStart);\n        node.removeEventListener('selectstart', handleSelectStart);\n        node.setAttribute('draggable', 'false');\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      var handleDragEnter = function handleDragEnter(e) {\n        return _this4.handleDragEnter(e, targetId);\n      };\n\n      var handleDragOver = function handleDragOver(e) {\n        return _this4.handleDragOver(e, targetId);\n      };\n\n      var handleDrop = function handleDrop(e) {\n        return _this4.handleDrop(e, targetId);\n      };\n\n      node.addEventListener('dragenter', handleDragEnter);\n      node.addEventListener('dragover', handleDragOver);\n      node.addEventListener('drop', handleDrop);\n      return function () {\n        node.removeEventListener('dragenter', handleDragEnter);\n        node.removeEventListener('dragover', handleDragOver);\n        node.removeEventListener('drop', handleDrop);\n      };\n    }\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.addEventListener) {\n        return;\n      }\n\n      target.addEventListener('dragstart', this.handleTopDragStart);\n      target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.addEventListener('dragenter', this.handleTopDragEnter);\n      target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.addEventListener('dragover', this.handleTopDragOver);\n      target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.addEventListener('drop', this.handleTopDrop);\n      target.addEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.removeEventListener) {\n        return;\n      }\n\n      target.removeEventListener('dragstart', this.handleTopDragStart);\n      target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.removeEventListener('dragenter', this.handleTopDragEnter);\n      target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.removeEventListener('dragover', this.handleTopDragOver);\n      target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.removeEventListener('drop', this.handleTopDrop);\n      target.removeEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"getCurrentSourceNodeOptions\",\n    value: function getCurrentSourceNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n      return _objectSpread({\n        dropEffect: this.altKeyPressed ? 'copy' : 'move'\n      }, sourceNodeOptions || {});\n    }\n  }, {\n    key: \"getCurrentDropEffect\",\n    value: function getCurrentDropEffect() {\n      if (this.isDraggingNativeItem()) {\n        // It makes more sense to default to 'copy' for native resources\n        return 'copy';\n      }\n\n      return this.getCurrentSourceNodeOptions().dropEffect;\n    }\n  }, {\n    key: \"getCurrentSourcePreviewNodeOptions\",\n    value: function getCurrentSourcePreviewNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n      return _objectSpread({\n        anchorX: 0.5,\n        anchorY: 0.5,\n        captureDraggingState: false\n      }, sourcePreviewNodeOptions || {});\n    }\n  }, {\n    key: \"isDraggingNativeItem\",\n    value: function isDraggingNativeItem() {\n      var itemType = this.monitor.getItemType();\n      return Object.keys(NativeTypes).some(function (key) {\n        return NativeTypes[key] === itemType;\n      });\n    }\n  }, {\n    key: \"beginDragNativeItem\",\n    value: function beginDragNativeItem(type, dataTransfer) {\n      this.clearCurrentDragSourceNode();\n      this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n      this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n      this.actions.beginDrag([this.currentNativeHandle]);\n    }\n  }, {\n    key: \"setCurrentDragSourceNode\",\n    value: function setCurrentDragSourceNode(node) {\n      var _this5 = this;\n\n      this.clearCurrentDragSourceNode();\n      this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n\n      var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n      // means it has ended and the drag source node disappeared from DOM,\n      // so the browser didn't dispatch the dragend event.\n      //\n      // We need to wait before we start listening for mousemove events.\n      // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n      // immediately in some browsers.\n      //\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n      //\n\n      this.mouseMoveTimeoutTimer = setTimeout(function () {\n        var _this5$rootElement;\n\n        return (_this5$rootElement = _this5.rootElement) === null || _this5$rootElement === void 0 ? void 0 : _this5$rootElement.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n      }, MOUSE_MOVE_TIMEOUT);\n    }\n  }, {\n    key: \"clearCurrentDragSourceNode\",\n    value: function clearCurrentDragSourceNode() {\n      if (this.currentDragSourceNode) {\n        this.currentDragSourceNode = null;\n\n        if (this.rootElement) {\n          var _this$window2;\n\n          (_this$window2 = this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n          this.rootElement.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n        }\n\n        this.mouseMoveTimeoutTimer = null;\n        return true;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"handleDragStart\",\n    value: function handleDragStart(e, sourceId) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      if (!this.dragStartSourceIds) {\n        this.dragStartSourceIds = [];\n      }\n\n      this.dragStartSourceIds.unshift(sourceId);\n    }\n  }, {\n    key: \"handleDragEnter\",\n    value: function handleDragEnter(e, targetId) {\n      this.dragEnterTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDragOver\",\n    value: function handleDragOver(e, targetId) {\n      if (this.dragOverTargetIds === null) {\n        this.dragOverTargetIds = [];\n      }\n\n      this.dragOverTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDrop\",\n    value: function handleDrop(e, targetId) {\n      this.dropTargetIds.unshift(targetId);\n    }\n  }]);\n\n  return HTML5BackendImpl;\n}();","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context, options) {\n  return new HTML5BackendImpl(manager, context, options);\n};","import core from 'core';\n\nexport default (toolName) => {\n  const tool = core.getTool(toolName);\n  const ToolNames = window.Core.Tools.ToolNames;\n\n\n  const isHighlightTool =\n    tool?.name === ToolNames.HIGHLIGHT ||\n    tool?.name === ToolNames.HIGHLIGHT2 ||\n    tool?.name === ToolNames.HIGHLIGHT3 ||\n    tool?.name === ToolNames.HIGHLIGHT4;\n  if (isHighlightTool && !core.isBlendModeSupported('multiply')) {\n    tool.defaults.Opacity = null;\n  }\n\n  // widget don't support opacity\n  if (tool?.name.includes(ToolNames.TEXT_FORM_FIELD)) {\n    tool.defaults.Opacity = null;\n  }\n\n  return tool?.defaults;\n};\n","/**! \n * hotkeys-js v3.10.1 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件\n\nfunction addEvent(object, event, method, useCapture) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, useCapture);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // 修饰键转换成对应的键码\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // 处理传的key字符串转换成数组\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等\n\n  var keys = key.split(','); // 同时设置多个快捷键,以','分割\n\n  var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // 比较修饰键的数组\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  '⌫': 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  '↩': 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '⇪': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '⇧': 16,\n  shift: 16,\n  // altKey\n  '⌥': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '⌃': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '⌘': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // 记录摁下的绑定键\n\nvar winListendFocus = false; // window是否已经监听了focus事件\n\nvar _scope = 'all'; // 默认热键范围\n\nvar elementHasBindEvent = []; // 已绑定事件的节点记录\n// 返回键码\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n};\n\nvar getKey = function getKey(x) {\n  return Object.keys(_keyMap).find(function (k) {\n    return _keyMap[k] === x;\n  });\n};\n\nvar getModifier = function getModifier(x) {\n  return Object.keys(_modifier).find(function (k) {\n    return _modifier[k] === x;\n  });\n}; // 设置获取当前范围(默认为'所有')\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // 获取当前范围\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // 获取摁下绑定键的键值\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n}\n\nfunction getPressedKeyString() {\n  return _downKeys.map(function (c) {\n    return getKey(c) || getModifier(c) || String.fromCharCode(c);\n  });\n} // 表单控件控件判断 返回 Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // 判断摁下的键是否为某个键,返回true或者false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // 转换成键码\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // 循环删除handlers中的所有 scope(范围)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // 没有指定scope,获取scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // 如果scope被删除,将scope重置为all\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // 清除修饰键\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // 从列表中清除按压过的键\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // 将修饰键重置为false\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (typeof keysInfo === 'undefined') {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\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    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // 解除绑定某个范围的快捷键\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // 判断是否传入范围,没有就获取范围\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // 通过函数判断,是否解除绑定,函数相等直接返回\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n}; // 对监听对应快捷键的回调函数进行处理\n\n\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n\n  var modifiersMatch; // 看它是否在当前范围\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // 检查是否匹配修饰符(如果有返回true)\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // 调用处理程序,如果是修饰键不做处理\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // 处理keydown事件\n\n\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // 表单控件过滤 默认表单控件不触发快捷键\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致\n  // Webkit左右 command 键值不一样\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // 将 modifierMap 里面的修饰键绑定到 event 中\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // 获取范围 默认为 `all`\n\n\n  var scope = getScope(); // 对任何快捷键都需要做的处理\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  } // key 不在 _handlers 中返回\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // 记录当前按键键值\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // 找到处理内容\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n} // 判断 element 是否已经绑定事件\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // 需要处理的快捷键列表\n\n  var mods = [];\n  var scope = 'all'; // scope默认为all,所有范围都有效\n\n  var element = document; // 快捷键事件绑定节点\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+';\n  var capture = false; // 对为设定范围的判断\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // 按键列表\n\n    mods = []; // 如果是组合快捷键取得组合快捷键\n\n    if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键\n    // 判断key是否在_handlers中,不在就赋一个空数组\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  } // 在全局document上设置快捷键\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    }, capture);\n\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      }, capture);\n    }\n\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    }, capture);\n  }\n}\n\nfunction trigger(shortcut) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n  Object.keys(_handlers).forEach(function (key) {\n    var dataList = _handlers[key].filter(function (item) {\n      return item.scope === scope && item.shortcut === shortcut;\n    });\n\n    dataList.forEach(function (data) {\n      if (data && data.method) {\n        data.method();\n      }\n    });\n  });\n}\n\nvar _api = {\n  getPressedKeyString: getPressedKeyString,\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  trigger: trigger,\n  unbind: unbind,\n  keyMap: _keyMap,\n  modifier: _modifier,\n  modifierMap: modifierMap\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n","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\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}","import React, { useState, useRef, useEffect, useLayoutEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nimport { isMac, isWindows, isIOS, isAndroid } from 'helpers/device';\n\nimport './Tooltip.scss';\nimport getRootNode from 'helpers/getRootNode';\n\nconst propTypes = {\n  children: PropTypes.element.isRequired,\n  content: PropTypes.string,\n  hideShortcut: PropTypes.bool,\n  forcePosition: PropTypes.string,\n  hideOnClick: PropTypes.bool\n};\n\nconst Tooltip = forwardRef(({ content = '', children, hideShortcut, forcePosition, hideOnClick }, ref) => {\n  const timeoutRef = useRef(null);\n  const childRef = useRef(null);\n  useImperativeHandle(ref, () => childRef.current);\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, 'tooltip'));\n\n  const tooltipRef = useRef(null);\n  const [show, setShow] = useState(false);\n  const [opacity, setOpacity] = useState(0);\n  const [position, setPosition] = useState({\n    top: 0,\n    left: 0,\n  });\n  const [location, setLocation] = useState('bottom');\n  const [t] = useTranslation();\n  const delayShow = 300;\n  const opacityTimeout = 50;\n\n  useEffect(() => {\n    const showToolTip = () => {\n      timeoutRef.current = setTimeout(() => {\n        setShow(true);\n      }, delayShow - opacityTimeout);\n    };\n\n    const hideTooltip = () => {\n      clearTimeout(timeoutRef.current);\n      setShow(false);\n    };\n\n    childRef.current?.addEventListener('mouseenter', showToolTip);\n    childRef.current?.addEventListener('mouseleave', hideTooltip);\n    if (hideOnClick) {\n      childRef.current?.addEventListener('click', hideTooltip);\n    }\n    // only enable focus event for non popup buttons\n    if (childRef.current['ariaLabel'] !== 'action.close' && content !== 'action.close' &&\n      !childRef.current.parentElement.parentElement.className.includes('TextPopup')) {\n      childRef.current?.addEventListener('focus', showToolTip);\n      childRef.current?.addEventListener('blur', hideTooltip);\n    }\n\n    const observer = new MutationObserver((mutations) => {\n      // hide tooltip when button get disabled, disable buttons don't have \"mouseleave\" events\n      const lastMutation = mutations[mutations.length - 1];\n      if (lastMutation && lastMutation.attributeName === 'disabled' && lastMutation.target.disabled) {\n        hideTooltip();\n      }\n    });\n\n    observer.observe(childRef.current, { attributes: true, childList: false, characterData: false });\n\n    return () => {\n      hideTooltip();\n      observer.disconnect();\n\n      childRef.current?.removeEventListener('mouseenter', showToolTip);\n      childRef.current?.removeEventListener('mouseleave', hideTooltip);\n      if (hideOnClick) {\n        childRef.current?.removeEventListener('click', hideTooltip);\n      }\n      childRef.current?.removeEventListener('focus', showToolTip);\n      childRef.current?.removeEventListener('blur', hideTooltip);\n    };\n  }, [childRef, hideOnClick]);\n\n  useLayoutEffect(() => {\n    const childEle = childRef.current;\n    const tooltipEle = tooltipRef.current;\n\n    const setTopAndLeft = () => {\n      const childRect = childEle.getBoundingClientRect();\n      const tooltipRect = tooltipEle.getBoundingClientRect();\n\n      let hostX = 0;\n      let hostY = 0;\n      if (window.isApryseWebViewerWebComponent) {\n        const shadowRoot = getRootNode();\n        const hostRect = shadowRoot.host.getBoundingClientRect();\n        hostX = hostRect.x;\n        hostY = hostRect.y;\n      }\n\n      const locationTopLeftMap = {\n        // TODO be able to support other directions too\n        bottom: {\n          top: childRect.bottom - hostY,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2 - hostX,\n        },\n        bottomLeft: {\n          top: childRect.bottom - hostY,\n          left: childRect.left - hostX,\n        },\n        top: {\n          top: childRect.top - tooltipRect.height - hostY,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2 - hostX,\n        },\n        topLeft: {\n          top: childRect.top - tooltipRect.height - hostY,\n          left: childRect.left - hostX,\n        },\n        left: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2 - hostY,\n          left: childRect.left - tooltipRect.width - hostX,\n        },\n        right: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2 - hostY,\n          left: childRect.right - hostX,\n        },\n      };\n\n      // starting from placing the tooltip at the bottom location\n      // if the tooltip can't fit into the window, try placing it counterclockwise until we can find a location to fit it\n      const bestLocation = Object.keys(locationTopLeftMap).find((location) => {\n        if (forcePosition) {\n          return location === forcePosition;\n        }\n        const { top: newTop, left: newLeft } = locationTopLeftMap[location];\n\n        return (\n          newTop > 0\n          && newTop + tooltipRect.height < window.innerHeight\n          && newLeft > 0\n          && newLeft + tooltipRect.width < window.innerWidth\n        );\n      }) || 'bottom';\n      const { top: tooltipTop, left: tooltipLeft } = locationTopLeftMap[\n        bestLocation\n      ];\n\n      setPosition({\n        top: tooltipTop,\n        left: tooltipLeft,\n      });\n      setLocation(bestLocation);\n    };\n\n    if (show && childEle && tooltipEle) {\n      setTopAndLeft();\n      setTimeout(() => {\n        setOpacity(1);\n      }, opacityTimeout);\n    } else {\n      setOpacity(0);\n    }\n  }, [childRef, show]);\n\n  const isUsingMobileDevices = isIOS || isAndroid;\n  const child = React.cloneElement(children, {\n    ref: childRef,\n  });\n  const translatedContent = t(content);\n  // If shortcut.xxx exists in translation-en.json file\n  // method t will return the shortcut, otherwise it will return shortcut.xxx\n  let shortcutKey = content.slice(content.indexOf('.') + 1);\n  if (isWindows && shortcutKey === 'redo') {\n    shortcutKey = 'redo_windows';\n  }\n  const isActive = hotkeysManager.isActive(shortcutKey);\n\n  let hasShortcut = t(`shortcut.${shortcutKey}`).indexOf('.') === -1;\n  let shortcut = t(`shortcut.${shortcutKey}`);\n  if (isMac) {\n    shortcut = shortcut.replace('Ctrl', 'Cmd');\n  }\n\n  if (!isActive) {\n    hasShortcut = false;\n  }\n\n  return (\n    <React.Fragment>\n      {child}\n      {show &&\n        translatedContent &&\n        !isUsingMobileDevices &&\n        !isDisabled &&\n        ReactDOM.createPortal(\n          <div\n            className={`tooltip--${location}`}\n            style={{ opacity, ...position }}\n            ref={tooltipRef}\n            data-element=\"tooltip\"\n          >\n            <div className={'tooltip__content'}>\n              {translatedContent}\n              {hasShortcut && !hideShortcut && (\n                <span className=\"tooltip__shortcut\">{shortcut}</span>\n              )}\n            </div>\n          </div>,\n          getRootNode().querySelector('#app'),\n        )}\n    </React.Fragment>\n  );\n});\n\nTooltip.displayName = 'Tooltip';\nTooltip.propTypes = propTypes;\n\nexport default Tooltip;\n","import Tooltip from './Tooltip';\n\nexport default Tooltip;","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./LeftPanelPageTabsContainer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","export function getOpenedWarningModal() {\n  return document.querySelector('.WarningModal.open .container');\n}\n\nexport function getOpenedColorPicker() {\n  return document.querySelector('.ColorPickerModal.open');\n}\n\nexport function getAllOpenedModals() {\n  return document.querySelectorAll('.Modal.open');\n}\n\nexport function getDatePicker() {\n  return document.querySelector('[data-element=\"datePickerContainer\"]');\n}\n\nexport function getAllPanels(location) {\n  return document.querySelectorAll(`.flx-Panel.${location}`);\n}\n","export default (color) => {\n  const parsedColor = (color?.toHexString?.() || '').substring(1);\n  return parsedColor;\n};\n","export const ClickedItemTypes = {\n  BUTTON: 'button',\n};\n\nlet clickMiddleWare;\n\nexport const setClickMiddleWare = (middleware) => {\n  clickMiddleWare = middleware;\n};\n\nexport const getClickMiddleWare = () => clickMiddleWare;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n  _extends = Object.assign || 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  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar defaultProps = {\n  preventDefaultTouchmoveEvent: false,\n  delta: 10,\n  rotationAngle: 0,\n  trackMouse: false,\n  trackTouch: true\n};\nvar initialState = {\n  xy: [0, 0],\n  swiping: false,\n  eventData: undefined,\n  start: undefined\n};\nvar LEFT = 'Left';\nvar RIGHT = 'Right';\nvar UP = 'Up';\nvar DOWN = 'Down';\nvar touchStart = 'touchstart';\nvar touchMove = 'touchmove';\nvar touchEnd = 'touchend';\nvar mouseMove = 'mousemove';\nvar mouseUp = 'mouseup';\n\nfunction getDirection(absX, absY, deltaX, deltaY) {\n  if (absX > absY) {\n    if (deltaX > 0) {\n      return LEFT;\n    }\n\n    return RIGHT;\n  } else if (deltaY > 0) {\n    return UP;\n  }\n\n  return DOWN;\n}\n\nfunction rotateXYByAngle(pos, angle) {\n  if (angle === 0) return pos;\n  var angleInRadians = Math.PI / 180 * angle;\n  var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n  var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n  return [x, y];\n}\n\nfunction getHandlers(set, handlerProps) {\n  var onStart = function onStart(event) {\n    // if more than a single touch don't track, for now...\n    if (event.touches && event.touches.length > 1) return;\n    set(function (state, props) {\n      // setup mouse listeners on document to track swipe since swipe can leave container\n      if (props.trackMouse) {\n        document.addEventListener(mouseMove, onMove);\n        document.addEventListener(mouseUp, onUp);\n      }\n\n      var _ref = event.touches ? event.touches[0] : event,\n          clientX = _ref.clientX,\n          clientY = _ref.clientY;\n\n      var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n      return _extends({}, state, initialState, {\n        eventData: {\n          initial: [].concat(xy),\n          first: true\n        },\n        xy: xy,\n        start: event.timeStamp || 0\n      });\n    });\n  };\n\n  var onMove = function onMove(event) {\n    set(function (state, props) {\n      if (!state.xy[0] || !state.xy[1] || event.touches && event.touches.length > 1) {\n        return state;\n      }\n\n      var _ref2 = event.touches ? event.touches[0] : event,\n          clientX = _ref2.clientX,\n          clientY = _ref2.clientY;\n\n      var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n          x = _rotateXYByAngle[0],\n          y = _rotateXYByAngle[1];\n\n      var deltaX = state.xy[0] - x;\n      var deltaY = state.xy[1] - y;\n      var absX = Math.abs(deltaX);\n      var absY = Math.abs(deltaY);\n      var time = (event.timeStamp || 0) - state.start;\n      var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1); // if swipe is under delta and we have not started to track a swipe: skip update\n\n      if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n      var dir = getDirection(absX, absY, deltaX, deltaY);\n\n      var eventData = _extends({}, state.eventData, {\n        event: event,\n        absX: absX,\n        absY: absY,\n        deltaX: deltaX,\n        deltaY: deltaY,\n        velocity: velocity,\n        dir: dir\n      });\n\n      props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n      // so we can call preventDefault if needed\n\n      var cancelablePageSwipe = false;\n\n      if (props.onSwiping || props.onSwiped || props[\"onSwiped\" + dir]) {\n        cancelablePageSwipe = true;\n      }\n\n      if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault(); // first is now always false\n\n      return _extends({}, state, {\n        eventData: _extends({}, eventData, {\n          first: false\n        }),\n        swiping: true\n      });\n    });\n  };\n\n  var onEnd = function onEnd(event) {\n    set(function (state, props) {\n      var eventData;\n\n      if (state.swiping) {\n        eventData = _extends({}, state.eventData, {\n          event: event\n        });\n        props.onSwiped && props.onSwiped(eventData);\n        props[\"onSwiped\" + eventData.dir] && props[\"onSwiped\" + eventData.dir](eventData);\n      }\n\n      return _extends({}, state, initialState, {\n        eventData: eventData\n      });\n    });\n  };\n\n  var cleanUpMouse = function cleanUpMouse() {\n    // safe to just call removeEventListener\n    document.removeEventListener(mouseMove, onMove);\n    document.removeEventListener(mouseUp, onUp);\n  };\n\n  var onUp = function onUp(e) {\n    cleanUpMouse();\n    onEnd(e);\n  };\n\n  var attachTouch = function attachTouch(el) {\n    if (el && el.addEventListener) {\n      // attach touch event listeners and handlers\n      var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n      tls.forEach(function (_ref3) {\n        var e = _ref3[0],\n            h = _ref3[1];\n        return el.addEventListener(e, h);\n      }); // return properly scoped cleanup method for removing listeners\n\n      return function () {\n        return tls.forEach(function (_ref4) {\n          var e = _ref4[0],\n              h = _ref4[1];\n          return el.removeEventListener(e, h);\n        });\n      };\n    }\n  };\n\n  var onRef = function onRef(el) {\n    // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n    // ignore null here\n    if (el === null) return;\n    set(function (state, props) {\n      // if the same DOM el as previous just return state\n      if (state.el === el) return state;\n      var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n      if (state.el && state.el !== el && state.cleanUpTouch) {\n        state.cleanUpTouch();\n        addState.cleanUpTouch = null;\n      } // only attach if we want to track touch\n\n\n      if (props.trackTouch && el) {\n        addState.cleanUpTouch = attachTouch(el);\n      } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n      return _extends({}, state, {\n        el: el\n      }, addState);\n    });\n  }; // set ref callback to attach touch event listeners\n\n\n  var output = {\n    ref: onRef // if track mouse attach mouse down listener\n\n  };\n\n  if (handlerProps.trackMouse) {\n    output.onMouseDown = onStart;\n  }\n\n  return [output, attachTouch];\n}\n\nfunction updateTransientState(state, props, attachTouch) {\n  var addState = {}; // clean up touch handlers if no longer tracking touches\n\n  if (!props.trackTouch && state.cleanUpTouch) {\n    state.cleanUpTouch();\n    addState.cleanUpTouch = null;\n  } else if (props.trackTouch && !state.cleanUpTouch) {\n    // attach/re-attach touch handlers\n    if (state.el) {\n      addState.cleanUpTouch = attachTouch(state.el);\n    }\n  }\n\n  return _extends({}, state, addState);\n}\n\nfunction useSwipeable(props) {\n  var trackMouse = props.trackMouse;\n  var transientState = React.useRef(_extends({}, initialState, {\n    type: 'hook'\n  }));\n  var transientProps = React.useRef();\n  transientProps.current = _extends({}, defaultProps, props);\n\n  var _React$useMemo = React.useMemo(function () {\n    return getHandlers(function (cb) {\n      return transientState.current = cb(transientState.current, transientProps.current);\n    }, {\n      trackMouse: trackMouse\n    });\n  }, [trackMouse]),\n      handlers = _React$useMemo[0],\n      attachTouch = _React$useMemo[1];\n\n  transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n  return handlers;\n}\nvar Swipeable =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inheritsLoose(Swipeable, _React$PureComponent);\n\n  function Swipeable(props) {\n    var _this;\n\n    _this = _React$PureComponent.call(this, props) || this;\n\n    _this._set = function (cb) {\n      _this.transientState = cb(_this.transientState, _this.props);\n    };\n\n    _this.transientState = _extends({}, initialState, {\n      type: 'class'\n    });\n    return _this;\n  }\n\n  var _proto = Swipeable.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        style = _this$props.style,\n        _this$props$nodeName = _this$props.nodeName,\n        nodeName = _this$props$nodeName === void 0 ? 'div' : _this$props$nodeName,\n        innerRef = _this$props.innerRef,\n        children = _this$props.children,\n        trackMouse = _this$props.trackMouse;\n\n    var _getHandlers = getHandlers(this._set, {\n      trackMouse: trackMouse\n    }),\n        handlers = _getHandlers[0],\n        attachTouch = _getHandlers[1];\n\n    this.transientState = updateTransientState(this.transientState, this.props, attachTouch);\n    var ref = innerRef ? function (el) {\n      return innerRef(el), handlers.ref(el);\n    } : handlers.ref;\n    return React.createElement(nodeName, _extends({}, handlers, {\n      className: className,\n      style: style,\n      ref: ref\n    }), children);\n  };\n\n  return Swipeable;\n}(React.PureComponent);\nSwipeable.propTypes = {\n  onSwiped: PropTypes.func,\n  onSwiping: PropTypes.func,\n  onSwipedUp: PropTypes.func,\n  onSwipedRight: PropTypes.func,\n  onSwipedDown: PropTypes.func,\n  onSwipedLeft: PropTypes.func,\n  delta: PropTypes.number,\n  preventDefaultTouchmoveEvent: PropTypes.bool,\n  nodeName: PropTypes.string,\n  trackMouse: PropTypes.bool,\n  trackTouch: PropTypes.bool,\n  innerRef: PropTypes.func,\n  rotationAngle: PropTypes.number\n};\nSwipeable.defaultProps = defaultProps;\n\nexport { DOWN, LEFT, RIGHT, Swipeable, UP, useSwipeable };\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","\"use strict\";\n\nvar _require = require('./Draggable'),\n    Draggable = _require.default,\n    DraggableCore = _require.DraggableCore; // Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","export default (annotation) => {\n  const latestReplyActivityDate = annotation\n    .getReplies()\n    .reduce((acc, reply) => {\n      const replyDate = reply.DateModified || reply.DateCreated;\n      if (replyDate && new Date(replyDate) > new Date(acc)) {\n        return replyDate;\n      }\n      return acc;\n    }, 0);\n\n  if (latestReplyActivityDate) {\n    return latestReplyActivityDate;\n  }\n  if (annotation.DateModified) {\n    return annotation.DateModified;\n  }\n  if (annotation.DateCreated) {\n    return annotation.DateCreated;\n  }\n\n  return undefined;\n};\n","import { saveAs } from 'file-saver';\nimport core from 'core';\nimport { isIE } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport actions from 'actions';\nimport { creatingPages } from 'helpers/print';\nimport selectors from 'selectors';\nimport blobStream from 'blob-stream';\nimport { getSortStrategies } from 'constants/sortStrategies';\nimport { mapAnnotationToKey, getDataWithKey } from 'constants/map';\nimport range from 'lodash/range';\nimport getRootNode from 'helpers/getRootNode';\nimport { workerTypes } from 'constants/types';\nimport { isOfficeEditorMode } from './officeEditor';\nimport DataElements from 'src/constants/dataElement';\n\n\nexport default async (dispatch, options = {}, documentViewerKey = 1) => {\n  let doc = core.getDocument(documentViewerKey);\n  const {\n    filename = doc?.getFilename() || 'document',\n    includeAnnotations = true,\n    externalURL,\n    useDisplayAuthor = false,\n    store, // Must be defined if includeComments is true\n  } = options;\n  let pages = options.pages;\n  let includeComments = !!options.includeComments;\n  const downloadAllPages = !pages || pages.length === doc.getPageCount();\n\n  const downloadDataAsFile = (data, extension, options) => {\n    const arr = new Uint8Array(data);\n    const { downloadName } = options;\n    let file;\n    let downloadType = 'application/pdf';\n    if (options.downloadType === 'office') {\n      const extensionToMimetype = reverseObject(window.Core.mimeTypeToExtension);\n      downloadType = extensionToMimetype[extension];\n    }\n    if (isIE) {\n      file = new Blob([arr], { type: downloadType });\n    } else {\n      file = new File([arr], filename, { type: downloadType });\n    }\n    saveAs(file, downloadName || filename);\n\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    fireEvent(Events.FILE_DOWNLOADED);\n    if (includeComments || convertToPDF) {\n      doc.unloadResources();\n    }\n  };\n\n  // We currently don't convert to pdf, png, etc. for office editor.\n  // Until we can do that we force the download type to be 'office'.\n  // Office editor can't include comments either so we force that to false.\n  if (isOfficeEditorMode()) {\n    includeComments = false;\n  }\n\n  if (!options.downloadType) {\n    options.downloadType = 'pdf';\n  }\n  const downloadAsImage = options.downloadType === 'png';\n\n  dispatch(actions.openElement(DataElements.LOADING_MODAL));\n\n  if (downloadAsImage) {\n    if (!pages?.length) {\n      pages = range(1, doc.getPageCount() + 1, 1);\n    }\n    const state = store.getState();\n    const [\n      sortStrategy,\n      dateFormat,\n      language,\n      printQuality,\n      colorMap,\n    ] = [\n      selectors.getSortStrategy(state),\n      selectors.getPrintedNoteDateFormat(state),\n      selectors.getCurrentLanguage(state),\n      selectors.getPrintQuality(state),\n      selectors.getColorMap(state),\n    ];\n    const id = 'download-handler-css';\n    if (!getRootNode().querySelector(`#${id}`)) {\n      const style = window.document.createElement('style');\n      style.id = id;\n      style.textContent = `\n        img {\n          display: block !important;\n          max-width: 100%;\n          max-height: 100%;\n          height: 100%;\n          width: 100%;\n          object-fit: contain;\n          page-break-after: always;\n          padding: 0;\n          margin: 0;\n        }\n\n        .page__container {\n          margin: 10px;\n          box-sizing: border-box;\n          display: flex !important;\n          flex-direction: column;\n          padding: 10px;\n          min-height: 100%;\n          min-width: 100%;\n          font-size: 10px;\n        }\n\n        .page__container .page__header {\n          margin-top: 2rem;\n          display: block !important;\n          align-self: flex-start;\n          font-size: 2rem;\n          margin-bottom: 2rem;\n          padding-bottom: 0.6rem;\n          border-bottom: 0.1rem solid black;\n        }\n\n        .page__container .note {\n          display: flex !important;\n          flex-direction: column;\n          padding: 0.6rem;\n          border: 0.1rem lightgray solid;\n          border-radius: 0.4rem;\n          margin-bottom: 0.5rem;\n        }\n\n        .page__container .note .note__info {\n          display: block !important;\n          font-size: 1.3rem;\n          margin-bottom: 0.1rem;\n        }\n\n        .page__container .note .note__info--with-icon {\n          display: flex !important;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon {\n          display: block !important;\n          width: 1.65rem;\n          height: 1.65rem;\n          margin-top: -0.1rem;\n          margin-right: 0.2rem;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon path:not([fill=none]) {\n          display: block !important;\n          fill: currentColor;\n        }\n\n        .page__container .note .note__root .note__content {\n          display: block !important;\n          margin-left: 0.3rem;\n        }\n\n        .page__container .note .note__root {\n          display: block !important;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon svg {\n          display: block !important;\n        }\n\n        .page__container .note .note__reply {\n          display: block !important;\n          margin: 0.5rem 0 0 2rem;\n        }\n\n        .page__container .note .note__content {\n          display: block !important;\n          font-size: 1.2rem;\n          margin-top: 0.1rem;\n        }\n      `;\n      window.document.head.prepend(style);\n    }\n    const createdPages = creatingPages(\n      pages,\n      includeComments,\n      includeAnnotations,\n      true,\n      printQuality,\n      sortStrategy,\n      colorMap,\n      dateFormat,\n      undefined,\n      false,\n      language,\n      true,\n    );\n    const addWhiteBackground = (dataURL) => {\n      const pagePrintCanvas = document.createElement('canvas');\n      const pagePrintContext = pagePrintCanvas.getContext('2d');\n      return new Promise((res) => {\n        const printImg = new Image();\n        printImg.src = dataURL;\n        printImg.onload = () => {\n          pagePrintCanvas.width = printImg.width;\n          pagePrintCanvas.height = printImg.height;\n          pagePrintContext.fillStyle = '#FFFFFF';\n          pagePrintContext.fillRect(0, 0, pagePrintCanvas.width, pagePrintCanvas.height);\n          pagePrintContext.drawImage(printImg, 0, 0);\n          res(pagePrintCanvas.toDataURL());\n        };\n      });\n    };\n    const html2canvas = (await import('html2canvas')).default;\n    for (let page of createdPages) {\n      page = await page;\n      let dataURL;\n      if (page instanceof HTMLElement) {\n        document.body.appendChild(page);\n        const canvas = await html2canvas(page, {\n          backgroundColor: null,\n          scale: 1,\n          logging: false,\n        });\n        dataURL = await addWhiteBackground(canvas.toDataURL());\n        document.body.removeChild(page);\n      } else {\n        if (doc?.getType() === workerTypes.OFFICE || doc?.getType() === workerTypes.LEGACY_OFFICE || doc?.getType() === workerTypes.OFFICE_EDITOR) {\n          dataURL = await addWhiteBackground(page);\n        } else {\n          dataURL = page;\n        }\n      }\n      const link = document.createElement('a');\n      link.href = dataURL;\n      link.download = `${filename}.png`;\n      link.style.display = 'none';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    fireEvent(Events.FILE_DOWNLOADED);\n    return;\n  }\n\n  let annotationsPromise = Promise.resolve();\n  const convertToPDF = options.downloadType === 'pdf' && (doc.getType() === workerTypes.OFFICE || isOfficeEditorMode());\n\n  if (isOfficeEditorMode() && convertToPDF) {\n    const data = await doc.getFileData({\n      downloadType: 'pdf'\n    });\n\n    downloadDataAsFile(data, 'pdf', options);\n    return;\n  }\n\n  if (convertToPDF || includeComments) {\n    const xfdfString = await core.exportAnnotations({ fields: true, widgets: true, links: true, useDisplayAuthor }, documentViewerKey);\n    const fileData = await doc.getFileData({ xfdfString, includeAnnotations, downloadType: 'pdf' });\n    doc = await core.createDocument(fileData, { extension: 'pdf', filename });\n    if (includeComments) {\n      const canvas2pdf = await import('canvas2pdf');\n      const state = store.getState();\n      const [sortStrategy, colorMap] = [selectors.getSortStrategy(state), selectors.getColorMap(state)];\n      const pageWidth = 612;\n      const pageHeight = 792;\n      const titleFontSize = 12;\n      const bodyFontSize = 11;\n      const cardSpacing = 8;\n      const padding = 36;\n      const commentPages = {};\n      for (const pageNumber of pages) {\n        const annotationNotes = getSortStrategies()[sortStrategy].getSortedNotes(core.getAnnotationsList(documentViewerKey).filter((annotation) => annotation.Listable &&\n          annotation.PageNumber === pageNumber &&\n          !annotation.isReply() &&\n          !annotation.isGrouped()\n        ));\n        if (!annotationNotes?.length) {\n          continue;\n        }\n        const startX = padding;\n        let startY = padding;\n        let ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n        // eslint-disable-next-line no-inner-declarations\n        async function savePage() {\n          const blob = await new Promise((res) => {\n            ctx.stream.on('finish', () => res(ctx.stream.toBlob('application/pdf')));\n            ctx.end();\n          });\n          if (commentPages[pageNumber]) {\n            commentPages[pageNumber].push(blob);\n          } else {\n            commentPages[pageNumber] = [blob];\n          }\n        }\n        let x = startX;\n        let y = startY;\n\n        // Draw Title\n        const text = `Page ${pageNumber}`;\n        ctx.font = `${titleFontSize}px Helvetica`;\n        ctx.fillStyle = '#000';\n        let textSize = ctx.measureText(text);\n        ctx.fillText(text, x, y);\n        y += textSize.height;\n\n        for (const annotation of annotationNotes) {\n          if (y + 40 > pageHeight) {\n            await savePage();\n            ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n            x = padding;\n            y = padding;\n          }\n\n          y += cardSpacing;\n          startY = y;\n          y += cardSpacing;\n          x += cardSpacing;\n\n          // eslint-disable-next-line no-loop-func\n          let skip;\n          // // Draw Image onto canvas\n          // eslint-disable-next-line no-loop-func\n          await new Promise((resolve) => {\n            const key = mapAnnotationToKey(annotation);\n            const colorProperty = colorMap[key] && colorMap[key].iconColor;\n            const color = annotation[colorProperty || 'StrokeColor'].toString();\n            const iconKey = getDataWithKey(key).icon;\n            // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require,import/no-dynamic-require\n            const icon = require(`../../assets/icons/${iconKey}.svg`);\n            const blob = new Blob([icon], { type: 'image/svg+xml;charset=utf-8' });\n            const url = URL.createObjectURL(blob);\n            const img = new Image();\n            img.style.color = color;\n            img.src = url;\n            img.onload = () => {\n              ctx.drawImage(img, x, y, 24, 24);\n              URL.revokeObjectURL(url);\n              resolve();\n            };\n          });\n          x += 30;\n          y += 14;\n\n          // eslint-disable-next-line no-inner-declarations,no-loop-func\n          async function drawAnnotationComment(annotation, startX, isReply = false) {\n            // For drawing text with wrapped lines on X axis\n            async function drawTextAndWrap(text, checkNewLines = true) {\n              if (checkNewLines) {\n                const textArray = text.split('\\n');\n                if (textArray.length > 1) {\n                  for (const text of textArray) {\n                    await drawTextAndWrap(text, false);\n                    x = startX;\n                  }\n                  return;\n                }\n              }\n              const textSize = ctx.measureText(text);\n              if (textSize.width + x > pageWidth - padding - cardSpacing) {\n                let maxSize = (pageWidth - padding * 2 - cardSpacing * 3);\n                if (isReply) {\n                  maxSize -= 36;\n                }\n                const indexOfLastSpaceToFit = text.lastIndexOf(' ', text.length * maxSize / (textSize.width + x));\n                extractProperties(await drawText(text.substring(0, indexOfLastSpaceToFit), { x, y }));\n                y += textSize.height;\n                x = startX;\n                await drawTextAndWrap(text.substring(indexOfLastSpaceToFit + 1));\n              } else {\n                ctx.fillText(text, x, y);\n                y += textSize.height;\n              }\n            }\n\n            // For drawing text with page wrap on Y axis\n            async function drawText(text, options = {}) {\n              const {\n                bold = false,\n                fillStyle = '#000',\n                size = bodyFontSize,\n                font = 'Helvetica',\n              } = options;\n              let { x, y } = options;\n              ctx.fillStyle = fillStyle;\n              ctx.font = `${size}px ${font}`;\n              const textSize = ctx.measureText(text);\n              if (textSize.height + y > pageHeight - padding) {\n                drawRoundedRect(ctx, padding, startY, pageWidth - padding * 2, pageHeight - startY - padding, 4, 'bottom');\n                await savePage();\n                ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n                ctx.fillStyle = fillStyle;\n                ctx.font = `${size}px ${font}`;\n                x = startX;\n                y = padding + cardSpacing;\n                startY = padding;\n                skip = 'top';\n              }\n              ctx.fillText(text, x, y);\n              if (bold) {\n                ctx.fillText(text, x + 0.1, y);\n                textSize.width += 0.1;\n              }\n              return { textSize, x, y, startY };\n            }\n\n            function extractProperties(newProperties) {\n              x = newProperties.x;\n              y = newProperties.y;\n              startY = newProperties.startY;\n              textSize = newProperties.textSize;\n            }\n\n            // Draw Author text onto canvas\n            extractProperties(await drawText(annotation.Author || 'Guest', { bold: true, x, y }));\n            x += textSize.width + cardSpacing;\n\n            // Draw Date text onto canvas\n            const date = new Date(annotation.DateCreated);\n            const dateText = `- ${date.toLocaleString(undefined, {\n              month: 'short',\n              day: 'numeric',\n              year: 'numeric',\n              hour: 'numeric',\n              minute: 'numeric',\n            })}`;\n            extractProperties(await drawText(dateText, { fillStyle: '#485056', x, y }));\n            x += textSize.width + cardSpacing;\n\n            if (!isReply) {\n              // Draw Subject text onto canvas\n              const subjectText = `Subject: ${annotation.Subject}`;\n              const subjectTextSize = ctx.measureText(subjectText);\n              if (subjectTextSize.width < 90) {\n                subjectTextSize.width = 90;\n              }\n              ctx.fillText(subjectText, pageWidth - padding - subjectTextSize.width - cardSpacing, y);\n            }\n\n            // Position on next line\n            x = startX;\n            y += textSize.height + cardSpacing;\n            if (!isReply) {\n              y += cardSpacing;\n            }\n\n            // Draw comment text onto canvas\n            ctx.fillStyle = '#000';\n            const annotContents = annotation.getContents();\n            if (annotContents) {\n              await drawTextAndWrap(annotation.getContents());\n              y += cardSpacing;\n            } else {\n              y -= cardSpacing;\n            }\n\n            return y - cardSpacing;\n          }\n\n          let lastYPos = await drawAnnotationComment(annotation, x - 30);\n          x = startX + 36;\n\n          for (const reply of annotation.getReplies()) {\n            y += cardSpacing;\n            lastYPos = await drawAnnotationComment(reply, x, true);\n          }\n\n          drawRoundedRect(ctx, padding, startY, pageWidth - padding * 2, lastYPos - startY + cardSpacing, 4, skip);\n\n          // Reset X Position\n          x = startX;\n        }\n\n        await savePage();\n      }\n\n      let pageOffset = 1;\n      for (let page of Object.keys(commentPages)) {\n        page = parseInt(page);\n        for (const blob of commentPages[page]) {\n          const tempDoc = await core.createDocument(blob, { extension: 'pdf' });\n          await doc.insertPages(tempDoc, [1], page + pageOffset);\n          if (!downloadAllPages) {\n            // eslint-disable-next-line no-loop-func\n            pages = pages.map((p) => (p >= page + pageOffset ? p + 1 : p));\n            pages.push(page + pageOffset);\n          }\n          pageOffset++;\n          tempDoc.unloadResources();\n        }\n      }\n\n      if (downloadAllPages) {\n        pages = undefined;\n      } else {\n        pages = pages.sort((a, b) => a - b);\n      }\n\n      annotationsPromise = Promise.resolve((await doc.extractXFDF({ pages })).xfdfString);\n    } else {\n      annotationsPromise = Promise.resolve(xfdfString);\n    }\n  } else if (includeAnnotations && !options.xfdfString && !downloadAsImage) {\n    if (options.documentToBeDownloaded) {\n      annotationsPromise = Promise.resolve((await options.documentToBeDownloaded.extractXFDF(pages)).xfdfString);\n    } else {\n      annotationsPromise = core.exportAnnotations({ useDisplayAuthor }, documentViewerKey);\n    }\n  } else if (!options.xfdfString && !includeAnnotations) {\n    options.xfdfString = window.Core.EMPTY_XFDF;\n  }\n\n  return annotationsPromise.then(async (xfdfString) => {\n    options.xfdfString = options.xfdfString || xfdfString;\n    if (!includeAnnotations) {\n      options.includeAnnotations = false;\n    }\n\n    const getDownloadFilename = (name, extension) => {\n      if (name.slice(-extension.length).toLowerCase() !== extension) {\n        name += extension;\n      }\n      return name;\n    };\n\n    const array = doc.getFilename().split('.');\n    const extension = `${array[array.length - 1]}`;\n    const isNotPDF =\n      doc?.getType().includes('video')\n      || doc?.getType() === 'audio'\n      || doc?.getType() === workerTypes.OFFICE\n      || isOfficeEditorMode();\n    const downloadName =\n      isNotPDF\n        ? getDownloadFilename(filename, `.${extension}`)\n        : getDownloadFilename(filename, '.pdf');\n\n    // Cloning the options object to be able to delete the customDocument property if needed.\n    // doc.getFileData(options) will throw an error if this customDocument property is passed in\n    const clonedOptions = Object.assign({}, options);\n    if (clonedOptions.documentToBeDownloaded) {\n      doc = clonedOptions.documentToBeDownloaded;\n      delete clonedOptions.documentToBeDownloaded;\n    }\n    if (clonedOptions.store) {\n      delete clonedOptions.store;\n    }\n\n    const handleError = (error) => {\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      throw new Error(error.message);\n    };\n\n    const signatureWidgets = core.getAnnotationsList().filter((a) => a instanceof window.Core.Annotations.SignatureWidgetAnnotation);\n    const signedStatues = await Promise.all(signatureWidgets.map((a) => a.isSignedDigitally()));\n    const isSignedDigitally = signedStatues.includes(true);\n    if (isSignedDigitally) {\n      clonedOptions.flags |= window.Core.SaveOptions.INCREMENTAL;\n    }\n\n    if (externalURL) {\n      const downloadIframe =\n        getRootNode().querySelector('#download-iframe') ||\n        document.createElement('iframe');\n      downloadIframe.width = 0;\n      downloadIframe.height = 0;\n      downloadIframe.id = 'download-iframe';\n      downloadIframe.src = null;\n      document.body.appendChild(downloadIframe);\n      downloadIframe.src = externalURL;\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      fireEvent(Events.FILE_DOWNLOADED);\n    } else if (pages && !downloadAllPages) {\n      return doc.extractPages(pages, options.xfdfString).then((data) => downloadDataAsFile(data, extension, { ...options, downloadName }), handleError);\n    } else {\n      return doc.getFileData(clonedOptions).then((data) => downloadDataAsFile(data, extension, { ...options, downloadName }), handleError);\n    }\n  }).catch((error) => {\n    console.warn(error);\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n  });\n};\n\nfunction drawRoundedRect(ctx, x, y, width, height, radius, skip = undefined) {\n  const skipTop = skip === 'top';\n  const skipBottom = skip === 'bottom';\n  ctx.beginPath();\n  ctx.strokeStyle = 'lightgray';\n  ctx.lineWidth = 1;\n  if (skipTop) {\n    ctx.moveTo(x, y);\n    ctx.lineTo(x, y + height - radius);\n    ctx.quadraticCurveTo(x, y + height, x + radius, y + height);\n    ctx.lineTo(x + width - radius, y + height);\n    ctx.quadraticCurveTo(x + width, y + height, x + width, y + height - radius);\n    ctx.lineTo(x + width, y);\n  } else if (skipBottom) {\n    ctx.moveTo(x, y + height);\n    ctx.lineTo(x, y + radius);\n    ctx.quadraticCurveTo(x, y, x + radius, y);\n    ctx.lineTo(x + width - radius, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n    ctx.lineTo(x + width, y + height);\n  } else {\n    ctx.moveTo(x + radius, y);\n    ctx.lineTo(x + width - radius, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n    ctx.lineTo(x + width, y + height - radius);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n    ctx.lineTo(x + radius, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n    ctx.lineTo(x, y + radius);\n    ctx.quadraticCurveTo(x, y, x + radius, y);\n    ctx.closePath();\n  }\n  ctx.stroke();\n}\n\nfunction reverseObject(obj) {\n  return Object.assign({}, ...(Object.entries(obj).map(([key, value]) => ({ [value]: key }))));\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\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 React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, w as isTouchCapable, x as isMobileDevice, y as defaultComponents, z as classNames, A as isDocumentElement, B as exportedEqual, C as cleanValue, D as scrollIntoView, E as noop, M as MenuPlacer } from './index-75b02bac.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\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\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    var _ignoreCase$ignoreAcc = _objectSpread({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignoreCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n      candidate = stripDiacritics(candidate);\n    }\n\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICB6SW5kZXg6IDk5OTksXG4gICAgICBib3JkZXI6IDAsXG4gICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgIGhlaWdodDogMSxcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICBwYWRkaW5nOiAwLFxuICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\n\nfunction DummyInput(_ref) {\n  var inProp = _ref.in,\n      out = _ref.out,\n      onExited = _ref.onExited,\n      appear = _ref.appear,\n      enter = _ref.enter,\n      exit = _ref.exit,\n      innerRef = _ref.innerRef,\n      emotion = _ref.emotion,\n      props = _objectWithoutProperties(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, props, {\n    css: /*#__PURE__*/_css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      fontSize: 'inherit',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(0)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGluOiBpblByb3AsXG4gIG91dCxcbiAgb25FeGl0ZWQsXG4gIGFwcGVhcixcbiAgZW50ZXIsXG4gIGV4aXQsXG4gIGlubmVyUmVmLFxuICBlbW90aW9uLFxuICAuLi5wcm9wc1xufTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY3NzPXt7XG4gICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgIC8vIGdldCByaWQgb2YgYW55IGRlZmF1bHQgc3R5bGVzXG4gICAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgLy8gaW1wb3J0YW50ISB3aXRob3V0IGB3aWR0aGAgYnJvd3NlcnMgd29uJ3QgYWxsb3cgZm9jdXNcbiAgICAgICAgd2lkdGg6IDEsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gbW9iaWxlIHdoaWxzdCBtYWludGFpbmluZyBcInNjcm9sbCBpbnRvIHZpZXdcIiBiZWhhdmlvdXJcbiAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n  }));\n}\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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar NodeResolver = /*#__PURE__*/function (_Component) {\n  _inherits(NodeResolver, _Component);\n\n  var _super = _createSuper(NodeResolver);\n\n  function NodeResolver() {\n    _classCallCheck(this, NodeResolver);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(NodeResolver, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.innerRef(findDOMNode(this));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.props.innerRef(null);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n\n  return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); 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$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar canUseDOM = !!( window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock = /*#__PURE__*/function (_Component) {\n  _inherits(ScrollLock, _Component);\n\n  var _super = _createSuper$1(ScrollLock);\n\n  function ScrollLock() {\n    var _this;\n\n    _classCallCheck(this, ScrollLock);\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    _this.originalStyles = {};\n    _this.listenerOptions = {\n      capture: false,\n      passive: false\n    };\n    return _this;\n  }\n\n  _createClass(ScrollLock, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!canUseDOM) return;\n      var _this$props = this.props,\n          accountForScrollbars = _this$props.accountForScrollbars,\n          touchScrollTarget = _this$props.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style;\n\n      if (accountForScrollbars) {\n        // store any styles already applied to the body\n        STYLE_KEYS.forEach(function (key) {\n          var val = targetStyle && targetStyle[key];\n          _this2.originalStyles[key] = val;\n        });\n      } // apply the lock styles and padding if this is the first scroll lock\n\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n        var clientWidth = document.body ? document.body.clientWidth : 0;\n        var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n        Object.keys(LOCK_STYLES).forEach(function (key) {\n          var val = LOCK_STYLES[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n\n        if (targetStyle) {\n          targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n        }\n      } // account for touch devices\n\n\n      if (target && isTouchDevice()) {\n        // Mobile Safari ignores { overflow: hidden } declaration on the body.\n        target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n        if (touchScrollTarget) {\n          touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      } // increment active scroll locks\n\n\n      activeScrollLocks += 1;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this3 = this;\n\n      if (!canUseDOM) return;\n      var _this$props2 = this.props,\n          accountForScrollbars = _this$props2.accountForScrollbars,\n          touchScrollTarget = _this$props2.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style; // safely decrement active scroll locks\n\n      activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        STYLE_KEYS.forEach(function (key) {\n          var val = _this3.originalStyles[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n      } // remove touch listeners\n\n\n      if (target && isTouchDevice()) {\n        target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n        if (touchScrollTarget) {\n          touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return ScrollLock;\n}(Component);\n\nScrollLock.defaultProps = {\n  accountForScrollbars: true\n};\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); 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$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock = /*#__PURE__*/function (_PureComponent) {\n  _inherits(ScrollBlock, _PureComponent);\n\n  var _super = _createSuper$2(ScrollBlock);\n\n  function ScrollBlock() {\n    var _this;\n\n    _classCallCheck(this, ScrollBlock);\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    _this.state = {\n      touchScrollTarget: null\n    };\n\n    _this.getScrollTarget = function (ref) {\n      if (ref === _this.state.touchScrollTarget) return;\n\n      _this.setState({\n        touchScrollTarget: ref\n      });\n    };\n\n    _this.blurSelectInput = function () {\n      if (document.activeElement) {\n        document.activeElement.blur();\n      }\n    };\n\n    return _this;\n  }\n\n  _createClass(ScrollBlock, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          isEnabled = _this$props.isEnabled;\n      var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n      if (!isEnabled) return children;\n      /*\n       * Div\n       * ------------------------------\n       * blocks scrolling on non-body elements behind the menu\n        * NodeResolver\n       * ------------------------------\n       * we need a reference to the scrollable element to \"unlock\" scroll on\n       * mobile devices\n        * ScrollLock\n       * ------------------------------\n       * actually does the scroll locking\n       */\n\n      return jsx(\"div\", null, jsx(\"div\", {\n        onClick: this.blurSelectInput,\n        css: _ref$1\n      }), jsx(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, children), touchScrollTarget ? jsx(ScrollLock, {\n        touchScrollTarget: touchScrollTarget\n      }) : null);\n    }\n  }]);\n\n  return ScrollBlock;\n}(PureComponent);\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); 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$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar ScrollCaptor = /*#__PURE__*/function (_Component) {\n  _inherits(ScrollCaptor, _Component);\n\n  var _super = _createSuper$3(ScrollCaptor);\n\n  function ScrollCaptor() {\n    var _this;\n\n    _classCallCheck(this, ScrollCaptor);\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    _this.isBottom = false;\n    _this.isTop = false;\n    _this.scrollTarget = void 0;\n    _this.touchStart = void 0;\n\n    _this.cancelScroll = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.handleEventDelta = function (event, delta) {\n      var _this$props = _this.props,\n          onBottomArrive = _this$props.onBottomArrive,\n          onBottomLeave = _this$props.onBottomLeave,\n          onTopArrive = _this$props.onTopArrive,\n          onTopLeave = _this$props.onTopLeave;\n      var _this$scrollTarget = _this.scrollTarget,\n          scrollTop = _this$scrollTarget.scrollTop,\n          scrollHeight = _this$scrollTarget.scrollHeight,\n          clientHeight = _this$scrollTarget.clientHeight;\n      var target = _this.scrollTarget;\n      var isDeltaPositive = delta > 0;\n      var availableScroll = scrollHeight - clientHeight - scrollTop;\n      var shouldCancelScroll = false; // reset bottom/top flags\n\n      if (availableScroll > delta && _this.isBottom) {\n        if (onBottomLeave) onBottomLeave(event);\n        _this.isBottom = false;\n      }\n\n      if (isDeltaPositive && _this.isTop) {\n        if (onTopLeave) onTopLeave(event);\n        _this.isTop = false;\n      } // bottom limit\n\n\n      if (isDeltaPositive && delta > availableScroll) {\n        if (onBottomArrive && !_this.isBottom) {\n          onBottomArrive(event);\n        }\n\n        target.scrollTop = scrollHeight;\n        shouldCancelScroll = true;\n        _this.isBottom = true; // top limit\n      } else if (!isDeltaPositive && -delta > scrollTop) {\n        if (onTopArrive && !_this.isTop) {\n          onTopArrive(event);\n        }\n\n        target.scrollTop = 0;\n        shouldCancelScroll = true;\n        _this.isTop = true;\n      } // cancel scroll\n\n\n      if (shouldCancelScroll) {\n        _this.cancelScroll(event);\n      }\n    };\n\n    _this.onWheel = function (event) {\n      _this.handleEventDelta(event, event.deltaY);\n    };\n\n    _this.onTouchStart = function (event) {\n      // set touch start so we can calculate touchmove delta\n      _this.touchStart = event.changedTouches[0].clientY;\n    };\n\n    _this.onTouchMove = function (event) {\n      var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n      _this.handleEventDelta(event, deltaY);\n    };\n\n    _this.getScrollTarget = function (ref) {\n      _this.scrollTarget = ref;\n    };\n\n    return _this;\n  }\n\n  _createClass(ScrollCaptor, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListening(this.scrollTarget);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListening(this.scrollTarget);\n    }\n  }, {\n    key: \"startListening\",\n    value: function startListening(el) {\n      // bail early if no element is available to attach to\n      if (!el) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"stopListening\",\n    value: function stopListening(el) {\n      if (!el) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, this.props.children);\n    }\n  }]);\n\n  return ScrollCaptor;\n}(Component);\n\nfunction ScrollCaptorSwitch(_ref) {\n  var _ref$isEnabled = _ref.isEnabled,\n      isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,\n      props = _objectWithoutProperties(_ref, [\"isEnabled\"]);\n\n  return isEnabled ? /*#__PURE__*/React.createElement(ScrollCaptor, props) : props.children;\n}\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var isSearchable = context.isSearchable,\n      isMulti = context.isMulti,\n      label = context.label,\n      isDisabled = context.isDisabled,\n      tabSelectsValue = context.tabSelectsValue;\n\n  switch (event) {\n    case 'menu':\n      return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n    case 'input':\n      return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n    case 'value':\n      return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n  }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n  var value = context.value,\n      isDisabled = context.isDisabled;\n  if (!value) return;\n\n  switch (event) {\n    case 'deselect-option':\n    case 'pop-value':\n    case 'remove-value':\n      return \"option \".concat(value, \", deselected.\");\n\n    case 'select-option':\n      return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n  }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n  var focusedValue = _ref.focusedValue,\n      getOptionLabel = _ref.getOptionLabel,\n      selectValue = _ref.selectValue;\n  return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n  var focusedOption = _ref2.focusedOption,\n      getOptionLabel = _ref2.getOptionLabel,\n      options = _ref2.options;\n  return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n  var inputValue = _ref3.inputValue,\n      screenReaderMessage = _ref3.screenReaderMessage;\n  return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nfunction ownKeys$1(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$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$1,\n  valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // initialize with source styles\n  var styles = _objectSpread$1({}, source); // massage in target styles\n\n\n  Object.keys(target).forEach(function (key) {\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nfunction ownKeys$2(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$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf(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$4() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar defaultProps = {\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel,\n  getOptionValue: getOptionValue,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: '0',\n  tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n\n  var _super = _createSuper$4(Select);\n\n  // Misc. Instance Properties\n  // ------------------------------\n  // TODO\n  // Refs\n  // ------------------------------\n  // Lifecycle\n  // ------------------------------\n  function Select(_props) {\n    var _this;\n\n    _classCallCheck(this, Select);\n\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaLiveSelection: '',\n      ariaLiveContext: '',\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      menuOptions: {\n        render: [],\n        focusable: []\n      },\n      selectValue: []\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.clearFocusValueOnUpdate = false;\n    _this.commonProps = void 0;\n    _this.components = void 0;\n    _this.hasGroups = false;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.inputIsHiddenAfterUpdate = void 0;\n    _this.instancePrefix = '';\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n\n    _this.focusedOptionRef = null;\n\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n\n    _this.menuListRef = null;\n\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n\n    _this.inputRef = null;\n\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n\n    _this.cacheComponents = function (components) {\n      _this.components = defaultComponents({\n        components: components\n      });\n    };\n\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n          onChange = _this$props.onChange,\n          name = _this$props.name;\n      onChange(newValue, _objectSpread$2(_objectSpread$2({}, actionMeta), {}, {\n        name: name\n      }));\n    };\n\n    _this.setValue = function (newValue) {\n      var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n      var option = arguments.length > 2 ? arguments[2] : undefined;\n      var _this$props2 = _this.props,\n          closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n          isMulti = _this$props2.isMulti;\n\n      _this.onInputChange('', {\n        action: 'set-value'\n      });\n\n      if (closeMenuOnSelect) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } // when the select value should change, we should reset focusedValue\n\n\n      _this.clearFocusValueOnUpdate = true;\n\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n          blurInputOnSelect = _this$props3.blurInputOnSelect,\n          isMulti = _this$props3.isMulti;\n      var selectValue = _this.state.selectValue;\n\n      if (isMulti) {\n        if (_this.isOptionSelected(newValue, selectValue)) {\n          var candidate = _this.getOptionValue(newValue);\n\n          _this.setValue(selectValue.filter(function (i) {\n            return _this.getOptionValue(i) !== candidate;\n          }), 'deselect-option', newValue);\n\n          _this.announceAriaLiveSelection({\n            event: 'deselect-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          if (!_this.isOptionDisabled(newValue, selectValue)) {\n            _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue)\n              }\n            });\n          } else {\n            // announce that option is disabled\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue),\n                isDisabled: true\n              }\n            });\n          }\n        }\n      } else {\n        if (!_this.isOptionDisabled(newValue, selectValue)) {\n          _this.setValue(newValue, 'select-option');\n\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          // announce that option is disabled\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue),\n              isDisabled: true\n            }\n          });\n        }\n      }\n\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n\n    _this.removeValue = function (removedValue) {\n      var selectValue = _this.state.selectValue;\n\n      var candidate = _this.getOptionValue(removedValue);\n\n      var newValue = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n\n      _this.announceAriaLiveSelection({\n        event: 'remove-value',\n        context: {\n          value: removedValue ? _this.getOptionLabel(removedValue) : ''\n        }\n      });\n\n      _this.focusInput();\n    };\n\n    _this.clearValue = function () {\n      _this.onChange(null, {\n        action: 'clear'\n      });\n    };\n\n    _this.popValue = function () {\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValue = selectValue.slice(0, selectValue.length - 1);\n\n      _this.announceAriaLiveSelection({\n        event: 'pop-value',\n        context: {\n          value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n        }\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    };\n\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n\n    _this.getOptionLabel = function (data) {\n      return _this.props.getOptionLabel(data);\n    };\n\n    _this.getOptionValue = function (data) {\n      return _this.props.getOptionValue(data);\n    };\n\n    _this.getStyles = function (key, props) {\n      var base = defaultStyles[key](props);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n    };\n\n    _this.getActiveDescendentId = function () {\n      var menuIsOpen = _this.props.menuIsOpen;\n      var _this$state = _this.state,\n          menuOptions = _this$state.menuOptions,\n          focusedOption = _this$state.focusedOption;\n      if (!focusedOption || !menuIsOpen) return undefined;\n      var index = menuOptions.focusable.indexOf(focusedOption);\n      var option = menuOptions.render[index];\n      return option && option.key;\n    };\n\n    _this.announceAriaLiveSelection = function (_ref2) {\n      var event = _ref2.event,\n          context = _ref2.context;\n\n      _this.setState({\n        ariaLiveSelection: valueEventAriaMessage(event, context)\n      });\n    };\n\n    _this.announceAriaLiveContext = function (_ref3) {\n      var event = _ref3.event,\n          context = _ref3.context;\n\n      _this.setState({\n        ariaLiveContext: instructionsAriaMessage(event, _objectSpread$2(_objectSpread$2({}, context), {}, {\n          label: _this.props['aria-label']\n        }))\n      });\n    };\n\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n\n      event.stopPropagation();\n      event.preventDefault();\n\n      _this.focusInput();\n    };\n\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n\n    _this.onControlMouseDown = function (event) {\n      var openMenuOnClick = _this.props.openMenuOnClick;\n\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if ( // $FlowFixMe\n        event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n\n      if ( // $FlowFixMe\n      event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n          isMulti = _this$props4.isMulti,\n          menuIsOpen = _this$props4.menuIsOpen;\n\n      _this.focusInput();\n\n      if (menuIsOpen) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      _this.clearValue();\n\n      event.stopPropagation();\n      _this.openAfterFocus = false;\n\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n\n    _this.onTouchStart = function (_ref4) {\n      var touches = _ref4.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n\n    _this.onTouchMove = function (_ref5) {\n      var touches = _ref5.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return; // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      } // reset move vars\n\n\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onControlMouseDown(event);\n    };\n\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onClearIndicatorMouseDown(event);\n    };\n\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n\n    _this.handleInputChange = function (event) {\n      var inputValue = event.currentTarget.value;\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.onInputChange(inputValue, {\n        action: 'input-change'\n      });\n\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n\n    _this.onInputFocus = function (event) {\n      var _this$props5 = _this.props,\n          isSearchable = _this$props5.isSearchable,\n          isMulti = _this$props5.isMulti;\n\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n\n      _this.setState({\n        isFocused: true\n      });\n\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n\n      _this.openAfterFocus = false;\n    };\n\n    _this.onInputBlur = function (event) {\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n\n        return;\n      }\n\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n\n      _this.onInputChange('', {\n        action: 'input-blur'\n      });\n\n      _this.onMenuClose();\n\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    };\n\n    _this.shouldHideSelectedOptions = function () {\n      var _this$props6 = _this.props,\n          hideSelectedOptions = _this$props6.hideSelectedOptions,\n          isMulti = _this$props6.isMulti;\n      if (hideSelectedOptions === undefined) return isMulti;\n      return hideSelectedOptions;\n    };\n\n    _this.onKeyDown = function (event) {\n      var _this$props7 = _this.props,\n          isMulti = _this$props7.isMulti,\n          backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n          escapeClearsValue = _this$props7.escapeClearsValue,\n          inputValue = _this$props7.inputValue,\n          isClearable = _this$props7.isClearable,\n          isDisabled = _this$props7.isDisabled,\n          menuIsOpen = _this$props7.menuIsOpen,\n          onKeyDown = _this$props7.onKeyDown,\n          tabSelectsValue = _this$props7.tabSelectsValue,\n          openMenuOnFocus = _this$props7.openMenuOnFocus;\n      var _this$state2 = _this.state,\n          focusedOption = _this$state2.focusedOption,\n          focusedValue = _this$state2.focusedValue,\n          selectValue = _this$state2.selectValue;\n      if (isDisabled) return;\n\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n\n        if (event.defaultPrevented) {\n          return;\n        }\n      } // Block option hover events when the user has just pressed a key\n\n\n      _this.blockOptionHover = true;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('previous');\n\n          break;\n\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('next');\n\n          break;\n\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n\n          break;\n\n        case 'Tab':\n          if (_this.isComposing) return;\n\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n\n            _this.selectOption(focusedOption);\n\n            break;\n          }\n\n          return;\n\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.inputIsHiddenAfterUpdate = false;\n\n            _this.onInputChange('', {\n              action: 'menu-close'\n            });\n\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n\n          break;\n\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n\n            break;\n          }\n\n          if (!focusedOption) return;\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n\n          break;\n\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n\n          break;\n\n        case 'PageUp':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pageup');\n\n          break;\n\n        case 'PageDown':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pagedown');\n\n          break;\n\n        case 'Home':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('first');\n\n          break;\n\n        case 'End':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('last');\n\n          break;\n\n        default:\n          return;\n      }\n\n      event.preventDefault();\n    };\n\n    _this.buildMenuOptions = function (props, selectValue) {\n      var _props$inputValue = props.inputValue,\n          inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n          options = props.options;\n\n      var toOption = function toOption(option, id) {\n        var isDisabled = _this.isOptionDisabled(option, selectValue);\n\n        var isSelected = _this.isOptionSelected(option, selectValue);\n\n        var label = _this.getOptionLabel(option);\n\n        var value = _this.getOptionValue(option);\n\n        if (_this.shouldHideSelectedOptions() && isSelected || !_this.filterOption({\n          label: label,\n          value: value,\n          data: option\n        }, inputValue)) {\n          return;\n        }\n\n        var onHover = isDisabled ? undefined : function () {\n          return _this.onOptionHover(option);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this.selectOption(option);\n        };\n        var optionId = \"\".concat(_this.getElementId('option'), \"-\").concat(id);\n        return {\n          innerProps: {\n            id: optionId,\n            onClick: onSelect,\n            onMouseMove: onHover,\n            onMouseOver: onHover,\n            tabIndex: -1\n          },\n          data: option,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: 'option',\n          value: value\n        };\n      };\n\n      return options.reduce(function (acc, item, itemIndex) {\n        if (item.options) {\n          // TODO needs a tidier implementation\n          if (!_this.hasGroups) _this.hasGroups = true;\n          var items = item.options;\n          var children = items.map(function (child, i) {\n            var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n            if (option) acc.focusable.push(child);\n            return option;\n          }).filter(Boolean);\n\n          if (children.length) {\n            var groupId = \"\".concat(_this.getElementId('group'), \"-\").concat(itemIndex);\n            acc.render.push({\n              type: 'group',\n              key: groupId,\n              data: item,\n              options: children\n            });\n          }\n        } else {\n          var option = toOption(item, \"\".concat(itemIndex));\n\n          if (option) {\n            acc.render.push(option);\n            acc.focusable.push(item);\n          }\n        }\n\n        return acc;\n      }, {\n        render: [],\n        focusable: []\n      });\n    };\n\n    var _value = _props.value;\n    _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_this));\n\n    _this.cacheComponents(_props.components);\n\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n    var _selectValue = cleanValue(_value);\n\n    _this.buildMenuOptions = memoizeOne(_this.buildMenuOptions, function (newArgs, lastArgs) {\n      var _ref6 = newArgs,\n          _ref7 = _slicedToArray(_ref6, 2),\n          newProps = _ref7[0],\n          newSelectValue = _ref7[1];\n\n      var _ref8 = lastArgs,\n          _ref9 = _slicedToArray(_ref8, 2),\n          lastProps = _ref9[0],\n          lastSelectValue = _ref9[1];\n\n      return newSelectValue === lastSelectValue && newProps.inputValue === lastProps.inputValue && newProps.options === lastProps.options;\n    }).bind(_assertThisInitialized(_this));\n\n    var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n      render: [],\n      focusable: []\n    };\n\n    _this.state.menuOptions = _menuOptions;\n    _this.state.selectValue = _selectValue;\n    return _this;\n  }\n\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var _this$props8 = this.props,\n          options = _this$props8.options,\n          value = _this$props8.value,\n          menuIsOpen = _this$props8.menuIsOpen,\n          inputValue = _this$props8.inputValue; // re-cache custom components\n\n      this.cacheComponents(nextProps.components); // rebuild the menu options\n\n      if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n        var selectValue = cleanValue(nextProps.value);\n        var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n          render: [],\n          focusable: []\n        };\n        var focusedValue = this.getNextFocusedValue(selectValue);\n        var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n        this.setState({\n          menuOptions: menuOptions,\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedValue: focusedValue\n        });\n      } // some updates should toggle the state of the input visibility\n\n\n      if (this.inputIsHiddenAfterUpdate != null) {\n        this.setState({\n          inputIsHidden: this.inputIsHiddenAfterUpdate\n        });\n        delete this.inputIsHiddenAfterUpdate;\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props9 = this.props,\n          isDisabled = _this$props9.isDisabled,\n          menuIsOpen = _this$props9.menuIsOpen;\n      var isFocused = this.state.isFocused;\n\n      if ( // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programatically disabled while focused\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } // scroll the focused option into view if necessary\n\n\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n  }, {\n    key: \"onMenuOpen\",\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      var _this$props10 = this.props,\n          isSearchable = _this$props10.isSearchable,\n          isMulti = _this$props10.isMulti;\n      this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n      this.onInputChange('', {\n        action: 'menu-close'\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    } // ==============================\n    // Methods\n    // ==============================\n\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    } // aliased for consumers\n\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n\n      var _this$state3 = this.state,\n          selectValue = _this$state3.selectValue,\n          isFocused = _this$state3.isFocused;\n      var menuOptions = this.buildMenuOptions(this.props, selectValue);\n      var _this$props11 = this.props,\n          isMulti = _this$props11.isMulti,\n          tabSelectsValue = _this$props11.tabSelectsValue;\n      var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n      if (!isMulti) {\n        var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      } // only scroll if the menu isn't already open\n\n\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.inputIsHiddenAfterUpdate = false;\n      this.setState({\n        menuOptions: menuOptions,\n        focusedValue: null,\n        focusedOption: menuOptions.focusable[openAtIndex]\n      }, function () {\n        _this2.onMenuOpen();\n\n        _this2.announceAriaLiveContext({\n          event: 'menu',\n          context: {\n            tabSelectsValue: tabSelectsValue\n          }\n        });\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$props12 = this.props,\n          isMulti = _this$props12.isMulti,\n          isSearchable = _this$props12.isSearchable;\n      var _this$state4 = this.state,\n          selectValue = _this$state4.selectValue,\n          focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n      if (!isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n\n      if (!focusedValue) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'value'\n        });\n      }\n\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n\n          break;\n\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n\n          break;\n      }\n\n      if (nextFocus === -1) {\n        this.announceAriaLiveContext({\n          event: 'input',\n          context: {\n            isSearchable: isSearchable,\n            isMulti: isMulti\n          }\n        });\n      }\n\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var _this$props13 = this.props,\n          pageSize = _this$props13.pageSize,\n          tabSelectsValue = _this$props13.tabSelectsValue;\n      var _this$state5 = this.state,\n          focusedOption = _this$state5.focusedOption,\n          menuOptions = _this$state5.menuOptions;\n      var options = menuOptions.focusable;\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n\n      var focusedIndex = options.indexOf(focusedOption);\n\n      if (!focusedOption) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'menu',\n          context: {\n            tabSelectsValue: tabSelectsValue\n          }\n        });\n      }\n\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n      this.announceAriaLiveContext({\n        event: 'menu',\n        context: {\n          isDisabled: isOptionDisabled(options[nextFocus]),\n          tabSelectsValue: tabSelectsValue\n        }\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    // ==============================\n    // Getters\n    // ==============================\n    value: function getTheme() {\n      // Use the default theme if there are no customizations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      } // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n\n\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      } // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n\n\n      return _objectSpread$2(_objectSpread$2({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n          cx = this.cx,\n          getStyles = this.getStyles,\n          getValue = this.getValue,\n          setValue = this.setValue,\n          selectOption = this.selectOption,\n          props = this.props;\n      var isMulti = props.isMulti,\n          isRtl = props.isRtl,\n          options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        cx: cx,\n        clearValue: clearValue,\n        getStyles: getStyles,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        setValue: setValue,\n        selectProps: props,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"getNextFocusedValue\",\n    value: function getNextFocusedValue(nextSelectValue) {\n      if (this.clearFocusValueOnUpdate) {\n        this.clearFocusValueOnUpdate = false;\n        return null;\n      }\n\n      var _this$state6 = this.state,\n          focusedValue = _this$state6.focusedValue,\n          lastSelectValue = _this$state6.selectValue;\n      var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n      if (lastFocusedIndex > -1) {\n        var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n        if (nextFocusedIndex > -1) {\n          // the focused value is still in the selectValue, return it\n          return focusedValue;\n        } else if (lastFocusedIndex < nextSelectValue.length) {\n          // the focusedValue is not present in the next selectValue array by\n          // reference, so return the new value at the same index\n          return nextSelectValue[lastFocusedIndex];\n        }\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getNextFocusedOption\",\n    value: function getNextFocusedOption(options) {\n      var lastFocusedOption = this.state.focusedOption;\n      return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.state.menuOptions.render.length;\n    }\n  }, {\n    key: \"countOptions\",\n    value: function countOptions() {\n      return this.state.menuOptions.focusable.length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props14 = this.props,\n          isClearable = _this$props14.isClearable,\n          isMulti = _this$props14.isMulti; // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      var _this3 = this;\n\n      if (selectValue.indexOf(option) > -1) return true;\n\n      if (typeof this.props.isOptionSelected === 'function') {\n        return this.props.isOptionSelected(option, selectValue);\n      }\n\n      var candidate = this.getOptionValue(option);\n      return selectValue.some(function (i) {\n        return _this3.getOptionValue(i) === candidate;\n      });\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var inputValue = this.props.inputValue;\n        var selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: inputValue,\n          selectValue: selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    } // ==============================\n    // Mouse Handlers\n    // ==============================\n\n  }, {\n    key: \"startListeningComposition\",\n    // ==============================\n    // Composition Handlers\n    // ==============================\n    value: function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    // ==============================\n    // Touch Handlers\n    // ==============================\n    value: function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"constructAriaLiveMessage\",\n    // ==============================\n    // Renderers\n    // ==============================\n    value: function constructAriaLiveMessage() {\n      var _this$state7 = this.state,\n          ariaLiveContext = _this$state7.ariaLiveContext,\n          selectValue = _this$state7.selectValue,\n          focusedValue = _this$state7.focusedValue,\n          focusedOption = _this$state7.focusedOption;\n      var _this$props15 = this.props,\n          options = _this$props15.options,\n          menuIsOpen = _this$props15.menuIsOpen,\n          inputValue = _this$props15.inputValue,\n          screenReaderStatus = _this$props15.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n      var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n        focusedValue: focusedValue,\n        getOptionLabel: this.getOptionLabel,\n        selectValue: selectValue\n      }) : ''; // An aria live message representing the currently focused option in the select.\n\n      var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n        focusedOption: focusedOption,\n        getOptionLabel: this.getOptionLabel,\n        options: options\n      }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n      var resultsMsg = resultsAriaMessage({\n        inputValue: inputValue,\n        screenReaderMessage: screenReaderStatus({\n          count: this.countOptions()\n        })\n      });\n      return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n    }\n  }, {\n    key: \"renderInput\",\n    value: function renderInput() {\n      var _this$props16 = this.props,\n          isDisabled = _this$props16.isDisabled,\n          isSearchable = _this$props16.isSearchable,\n          inputId = _this$props16.inputId,\n          inputValue = _this$props16.inputValue,\n          tabIndex = _this$props16.tabIndex,\n          form = _this$props16.form;\n      var Input = this.components.Input;\n      var inputIsHidden = this.state.inputIsHidden;\n      var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n      var ariaAttributes = {\n        'aria-autocomplete': 'list',\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby']\n      };\n\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          readOnly: true,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n\n      var _this$commonProps = this.commonProps,\n          cx = _this$commonProps.cx,\n          theme = _this$commonProps.theme,\n          selectProps = _this$commonProps.selectProps;\n      return /*#__PURE__*/React.createElement(Input, _extends({\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        cx: cx,\n        getStyles: this.getStyles,\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        selectProps: selectProps,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        theme: theme,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this4 = this;\n\n      var _this$components = this.components,\n          MultiValue = _this$components.MultiValue,\n          MultiValueContainer = _this$components.MultiValueContainer,\n          MultiValueLabel = _this$components.MultiValueLabel,\n          MultiValueRemove = _this$components.MultiValueRemove,\n          SingleValue = _this$components.SingleValue,\n          Placeholder = _this$components.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props17 = this.props,\n          controlShouldRenderValue = _this$props17.controlShouldRenderValue,\n          isDisabled = _this$props17.isDisabled,\n          isMulti = _this$props17.isMulti,\n          inputValue = _this$props17.inputValue,\n          placeholder = _this$props17.placeholder;\n      var _this$state8 = this.state,\n          selectValue = _this$state8.selectValue,\n          focusedValue = _this$state8.focusedValue,\n          isFocused = _this$state8.isFocused;\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused\n        }), placeholder);\n      }\n\n      if (isMulti) {\n        var selectValues = selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: \"\".concat(_this4.getOptionValue(opt)).concat(index),\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this4.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this4.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n                e.stopPropagation();\n              }\n            },\n            data: opt\n          }), _this4.formatOptionLabel(opt, 'value'));\n        });\n        return selectValues;\n      }\n\n      if (inputValue) {\n        return null;\n      }\n\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var ClearIndicator = this.components.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props18 = this.props,\n          isDisabled = _this$props18.isDisabled,\n          isLoading = _this$props18.isLoading;\n      var isFocused = this.state.isFocused;\n\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var LoadingIndicator = this.components.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props19 = this.props,\n          isDisabled = _this$props19.isDisabled,\n          isLoading = _this$props19.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$components2 = this.components,\n          DropdownIndicator = _this$components2.DropdownIndicator,\n          IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var DropdownIndicator = this.components.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this5 = this;\n\n      var _this$components3 = this.components,\n          Group = _this$components3.Group,\n          GroupHeading = _this$components3.GroupHeading,\n          Menu = _this$components3.Menu,\n          MenuList = _this$components3.MenuList,\n          MenuPortal = _this$components3.MenuPortal,\n          LoadingMessage = _this$components3.LoadingMessage,\n          NoOptionsMessage = _this$components3.NoOptionsMessage,\n          Option = _this$components3.Option;\n      var commonProps = this.commonProps;\n      var _this$state9 = this.state,\n          focusedOption = _this$state9.focusedOption,\n          menuOptions = _this$state9.menuOptions;\n      var _this$props20 = this.props,\n          captureMenuScroll = _this$props20.captureMenuScroll,\n          inputValue = _this$props20.inputValue,\n          isLoading = _this$props20.isLoading,\n          loadingMessage = _this$props20.loadingMessage,\n          minMenuHeight = _this$props20.minMenuHeight,\n          maxMenuHeight = _this$props20.maxMenuHeight,\n          menuIsOpen = _this$props20.menuIsOpen,\n          menuPlacement = _this$props20.menuPlacement,\n          menuPosition = _this$props20.menuPosition,\n          menuPortalTarget = _this$props20.menuPortalTarget,\n          menuShouldBlockScroll = _this$props20.menuShouldBlockScroll,\n          menuShouldScrollIntoView = _this$props20.menuShouldScrollIntoView,\n          noOptionsMessage = _this$props20.noOptionsMessage,\n          onMenuScrollToTop = _this$props20.onMenuScrollToTop,\n          onMenuScrollToBottom = _this$props20.onMenuScrollToBottom;\n      if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n      var render = function render(props) {\n        // for performance, the menu options in state aren't changed when the\n        // focused option changes so we calculate additional props based on that\n        var isFocused = focusedOption === props.data;\n        props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, props, {\n          isFocused: isFocused\n        }), _this5.formatOptionLabel(props.data, 'menu'));\n      };\n\n      var menuUI;\n\n      if (this.hasOptions()) {\n        menuUI = menuOptions.render.map(function (item) {\n          if (item.type === 'group') {\n            var type = item.type,\n                group = _objectWithoutProperties(item, [\"type\"]);\n\n            var headingId = \"\".concat(item.key, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, group, {\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this5.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option);\n            }));\n          } else if (item.type === 'option') {\n            return render(item);\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref10) {\n        var ref = _ref10.ref,\n            _ref10$placerProps = _ref10.placerProps,\n            placement = _ref10$placerProps.placement,\n            maxHeight = _ref10$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this5.onMenuMouseDown,\n            onMouseMove: _this5.onMenuMouseMove\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollCaptorSwitch, {\n          isEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom\n        }, /*#__PURE__*/React.createElement(ScrollBlock, {\n          isEnabled: menuShouldBlockScroll\n        }, /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n          innerRef: _this5.getMenuListRef,\n          isLoading: isLoading,\n          maxHeight: maxHeight\n        }), menuUI))));\n      }); // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this6 = this;\n\n      var _this$props21 = this.props,\n          delimiter = _this$props21.delimiter,\n          isDisabled = _this$props21.isDisabled,\n          isMulti = _this$props21.isMulti,\n          name = _this$props21.name;\n      var selectValue = this.state.selectValue;\n      if (!name || isDisabled) return;\n\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this6.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this6.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value2\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      if (!this.state.isFocused) return null;\n      return /*#__PURE__*/React.createElement(A11yText, {\n        \"aria-live\": \"polite\"\n      }, /*#__PURE__*/React.createElement(\"span\", {\n        id: \"aria-selection-event\"\n      }, \"\\xA0\", this.state.ariaLiveSelection), /*#__PURE__*/React.createElement(\"span\", {\n        id: \"aria-context\"\n      }, \"\\xA0\", this.constructAriaLiveMessage()));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$components4 = this.components,\n          Control = _this$components4.Control,\n          IndicatorsContainer = _this$components4.IndicatorsContainer,\n          SelectContainer = _this$components4.SelectContainer,\n          ValueContainer = _this$components4.ValueContainer;\n      var _this$props22 = this.props,\n          className = _this$props22.className,\n          id = _this$props22.id,\n          isDisabled = _this$props22.isDisabled,\n          menuIsOpen = _this$props22.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }]);\n\n  return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };\n","import React from 'react';\n\nimport './HorizontalDivider.scss';\n\nconst HorizontalDivider = ({ style = {} }) => {\n  return (\n    <div\n      className=\"divider-container\"\n      style={style}\n    >\n      <div className=\"divider-horizontal\" />\n    </div>\n  );\n};\n\nexport default HorizontalDivider;","import HorizontalDivider from './HorizontalDivider';\n\nexport default HorizontalDivider;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport getToolStyles from 'helpers/getToolStyles';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from 'constants/map';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './ToolButton.scss';\n\nconst propTypes = {\n  toolName: PropTypes.string.isRequired,\n  group: PropTypes.string,\n  className: PropTypes.string,\n};\n\nconst ToolButton = ({\n  toolName,\n  className,\n  ...restProps\n}) => {\n  const [\n    isActive,\n    iconColorKey,\n    toolButtonObject,\n    customOverrides,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state) === toolName,\n      selectors.getIconColor(state, mapToolNameToKey(toolName)),\n      selectors.getToolButtonObject(state, toolName),\n      selectors.getCustomElementOverrides(state, selectors.getToolButtonDataElement(state, toolName)),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const { group = '', ...restObjectData } = toolButtonObject;\n\n  useEffect(() => {\n    if (typeof customOverrides?.disable === 'undefined') {\n      return;\n    }\n\n    if (customOverrides.disable) {\n      hotkeysManager.off(toolName);\n    } else {\n      hotkeysManager.on(toolName);\n    }\n  }, [customOverrides, toolName]);\n\n  const handleClick = () => {\n    if (isActive) {\n      if (toolName !== 'AnnotationCreateStamp' && toolName !== 'AnnotationCreateRedaction' && toolName !== 'AnnotationEraserTool') {\n        if (toolStylesExist(toolName)) {\n          dispatch(actions.toggleElement('toolStylePopup'));\n          if (toolName === 'AnnotationCreateRubberStamp') {\n            core.setToolMode(defaultTool);\n          }\n        }\n      }\n    } else {\n      if (group === 'miscTools') {\n        dispatch(actions.closeElement('toolStylePopup'));\n      }\n\n      core.setToolMode(toolName);\n      dispatch(actions.setActiveToolGroup(group));\n      dispatch(actions.setLastPickedToolForGroup(group, toolName));\n      if (toolName === 'AnnotationCreateRubberStamp') {\n        dispatch(actions.openElement('toolStylePopup'));\n      }\n    }\n  };\n\n  let color = '';\n  let fillColor = '';\n  let strokeColor = '';\n  const showColor = customOverrides?.showColor || toolButtonObject.showColor;\n  if (showColor === 'always' || (showColor === 'active' && isActive)) {\n    const toolStyles = getToolStyles(toolName);\n    color = toolStyles?.[iconColorKey]?.toHexString?.();\n    fillColor = getColor(toolStyles?.FillColor);\n    strokeColor = getColor(toolStyles?.StrokeColor);\n    if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n      // transparent\n      strokeColor = 'ff000000';\n    }\n  }\n\n  return (\n    <Button\n      className={classNames({\n        'tool-button': true,\n        hasStyles: toolStylesExist(toolName),\n        [className]: className,\n      })}\n      onClick={handleClick}\n      isActive={isActive}\n      color={color}\n      fillColor={fillColor}\n      strokeColor={strokeColor}\n      {...restProps}\n      {...restObjectData}\n    />\n  );\n};\n\nToolButton.propTypes = propTypes;\n\nexport default ToolButton;\n","import ToolButton from './ToolButton';\n\nexport default ToolButton;","/**\n * Enable multiple tools.\n * @method UI.enableTools\n * @param {Array.<string>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be enabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // enable sticky annotation tool and free text tool\n    instance.UI.enableTools([ 'AnnotationCreateSticky', 'AnnotationCreateFreeText' ]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = true;\nexport default (store) => createToolAPI(enable, store);\n","/**\n * Disable multiple tools. This API uses disableElements internally to remove tool buttons from the DOM, and also disable the corresponding hotkeys.\n * @method UI.disableTools\n * @param {Array.<string>|Array.<Core.Tools.ToolNames>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { Tools } = instance.Core;\n    // disable sticky annotation tool and free text tool\n    instance.UI.disableTools([Tools.ToolNames.STICKY, Tools.ToolNames.FREETEXT]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = false;\nexport default (store) => createToolAPI(enable, store);\n","import core from 'core';\r\nimport { PORTFOLIO_CONSTANTS } from './portfolio';\r\n\r\nexport async function getFileAttachments() {\r\n  const attachments = {\r\n    fileAttachmentAnnotations: [],\r\n    embeddedFiles: [],\r\n  };\r\n  if (!core.isFullPDFEnabled()) {\r\n    console.warn('Need fullAPI to be able to to view embedded files.');\r\n  } else {\r\n    const PDFNet = window.Core.PDFNet;\r\n    let doc = core.getDocument();\r\n    if (doc) {\r\n      doc = await doc.getPDFDoc();\r\n    }\r\n    const main = async () => {\r\n      const files = await PDFNet.NameTree.find(doc, 'EmbeddedFiles');\r\n      if (files && (await files.isValid())) {\r\n        // Traverse the list of embedded files.\r\n        const fileItr = await files.getIteratorBegin();\r\n        for (let counter = 0; await fileItr.hasNext(); await fileItr.next(), ++counter) {\r\n          const filesIteratorValue = await fileItr.value();\r\n          const filesIteratorKey = await fileItr.key();\r\n          // filesIteratorKey.getAsPDFText() returns name with nested level if file is in folder: format \"<0>name.pdf\"\r\n          const fileObject = await filesIteratorValue.get('F');\r\n          const fileData = await fileObject.value();\r\n          const filename = await fileData.getAsPDFText();\r\n          // Assume order is -1 for files without an order instead of getting the next largest value. Files will be displayed at the top of the list\r\n          let order = -1;\r\n          try {\r\n            // After being created with Adobe, the nested files don’t have an internal order (the ones at root level will always have an internal order), so they won't always have 'CI'\r\n            const ciValue = await (await filesIteratorValue.get(PORTFOLIO_CONSTANTS.CI)).value();\r\n            const adobeOrderValue = await (await ciValue.get(PORTFOLIO_CONSTANTS.ADOBE_ORDER)).value();\r\n            order = await adobeOrderValue.getNumber();\r\n          } catch (e) {\r\n            console.warn(e);\r\n          }\r\n          attachments.embeddedFiles.push({\r\n            filename,\r\n            id: filesIteratorKey.id,\r\n            order,\r\n            fileObject: filesIteratorValue\r\n          });\r\n        }\r\n      }\r\n    };\r\n\r\n    // doc will be undefined for non-pdf files\r\n    if (doc) {\r\n      await PDFNet.runWithCleanup(main);\r\n    }\r\n  }\r\n  const fileAttachmentAnnotations = core\r\n    .getAnnotationsList()\r\n    .filter((annot) => annot instanceof window.Core.Annotations.FileAttachmentAnnotation);\r\n\r\n  // re-order fileAttachment annotations by page number\r\n  fileAttachmentAnnotations.forEach((annot) => {\r\n    if (!attachments.fileAttachmentAnnotations[annot.PageNumber]) {\r\n      attachments.fileAttachmentAnnotations[annot.PageNumber] = [];\r\n    }\r\n    attachments.fileAttachmentAnnotations[annot.PageNumber].push(annot);\r\n  });\r\n  return attachments;\r\n}\r\n\r\nexport async function getEmbeddedFileData(iterator) {\r\n  const PDFNet = window.Core.PDFNet;\r\n  const fileSpec = await PDFNet.FileSpec.createFromObj(iterator);\r\n  const stm = await fileSpec.getFileData();\r\n  const filterReader = await PDFNet.FilterReader.create(stm);\r\n  const buffer = await filterReader.readAllIntoBuffer();\r\n  const blob = new Blob([buffer]);\r\n  return blob;\r\n}\r\n","export const svgHeight = 21;\nexport const getCircleRadius = (isMobile) => {\n  if (isMobile) {\n    return 8;\n  }\n  return 4;\n};\nexport const circleRadius = 8;","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import selectors from 'selectors';\n\nexport default (state, dataElements, priority) => dataElements.reduce((filteredDataElements, dataElement) => {\n  const currentPriority = selectors.getDisabledElementPriority(\n    state,\n    dataElement,\n  );\n\n  if (!currentPriority || priority >= currentPriority) {\n    return [...filteredDataElements, dataElement];\n  }\n\n  return filteredDataElements;\n}, []);\n","import getFilteredDataElements from 'helpers/getFilteredDataElements';\nimport { getEmbeddedFileData } from 'helpers/getFileAttachments';\nimport { isAndroid, isIOS } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport { setToolbarGroup } from './exposedActions';\n\n// viewer\n/**\n * Remove an element from DOM\n * @ignore\n * @param {string} dataElement the value of the data-element attribute of the element\n * @param {number} priority a value that indicates how specific this element is disabled.\n * If a element is disabled with priority 3, then calling enableElement with priority 2 won't enable it back because the element is disabled in a more specific manner.\n * This priority argument is used by external APIs such as instance.disableElements and instance.disableFeatures(...)\n * For example, instance.disableElements has priority 3 and instance.enableFeatures has priority 1.\n * So calling instance.enableFeatures([instance.UI.Feature.NotesPanel]) won't enable the notes panel if it's disabled by instance.disableElements(['notesPanel'])\n */\nexport const disableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(disableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      disableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'DISABLE_ELEMENT', payload: { dataElement, priority } });\n      updateCurrentToolbarGroup([dataElement], dispatch, getState);\n    }\n  }\n};\nexport const disableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  const filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n  dispatch({\n    type: 'DISABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n\n  updateCurrentToolbarGroup(filteredDataElements, dispatch, getState);\n};\n\n// A helper that updates the current toolbar group if the current toolbar group is disabled\nconst updateCurrentToolbarGroup = (dataElements, dispatch, getState) => {\n  // Check if we disabled a toolbar group\n  const disabledToolbarGroups = dataElements.filter((dataElement) => DataElements.TOOLBAR_GROUPS.includes(dataElement));\n  if (disabledToolbarGroups.length > 0) {\n    // If we did check if it is the currently active toolbar group\n    const activeToolbarGroup = selectors.getCurrentToolbarGroup(getState());\n    const wasActiveToolbarGroupDisabled = disabledToolbarGroups.includes(activeToolbarGroup);\n    // If it is disabled, switch to the first enabled toolbar group, or the view group if none are enabled\n    if (wasActiveToolbarGroupDisabled) {\n      const enabledToolbarGroups = selectors.getEnabledToolbarGroups(getState());\n      const firstEnabledToolbarGroup = enabledToolbarGroups[0] || DataElements.VIEW_TOOLBAR_GROUP;\n      // Set the toolbar group, with no default tool selected by default\n      setToolbarGroup(firstEnabledToolbarGroup, false)(dispatch, getState);\n    }\n  }\n};\nexport const enableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(enableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      enableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'ENABLE_ELEMENT', payload: { dataElement, priority } });\n    }\n  }\n};\nexport const enableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  let filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n\n  if (!core.isCreateRedactionEnabled()) {\n    filteredDataElements = filteredDataElements.filter(\n      (ele) => ele !== 'redactionButton',\n    );\n  }\n\n  dispatch({\n    type: 'ENABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n};\n\nexport const addPortfolioTab = ({ fileObject, name, extension }) => async (dispatch, getState) => {\n  const state = getState();\n  const tabManager = selectors.getTabManager(state);\n  tabManager.addTab(\n    await getEmbeddedFileData(fileObject),\n    {\n      setActive: true,\n      extension: extension,\n      filename: name,\n    },\n  );\n};\n\nexport const setIsElementHidden = (dataElement, isHidden) => ({\n  type: 'SET_IS_ELEMENT_HIDDEN',\n  payload: { dataElement, isHidden }\n});\nexport const setThumbnailMerging = (useThumbnailMerging = true) => ({\n  type: 'SET_THUMBNAIL_MERGING',\n  payload: { useThumbnailMerging },\n});\nexport const setThumbnailReordering = (useThumbnailReordering = true) => ({\n  type: 'SET_THUMBNAIL_REORDERING',\n  payload: { useThumbnailReordering },\n});\nexport const setThumbnailMultiselect = (useThumbnailMultiselect = true) => ({\n  type: 'SET_THUMBNAIL_MULTISELECT',\n  payload: { useThumbnailMultiselect },\n});\nexport const setIsMultipleViewerMerging = (isMultipleViewerMerging = false) => ({\n  type: 'SET_MULTI_VIEWER_MERGING',\n  payload: { isMultipleViewerMerging },\n});\nexport const updateCalibrationInfo = ({ isCalibration = true, tempScale = '', previousToolName, isFractionalUnit = false, defaultUnit = '' }) => ({\n  type: 'UPDATE_CALIBRATION_INFO',\n  payload: { isCalibration, tempScale, previousToolName, isFractionalUnit, defaultUnit }\n});\nexport const setIsAddingNewScale = (isAddingNewScale = false) => ({\n  type: 'SET_IS_ADDING_NEW_SCALE',\n  payload: { isAddingNewScale }\n});\nexport const updateDeleteScale = (deleteScale = '') => ({\n  type: 'UPDATE_DELETE_SCALE',\n  payload: { deleteScale }\n});\nexport const setEnableNotesPanelVirtualizedList = (enableNotesPanelVirtualizedList = true) => ({\n  type: 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST',\n  payload: { enableNotesPanelVirtualizedList },\n});\nexport const setNotesShowLastUpdatedDate = (notesShowLastUpdatedDate = false) => ({\n  type: 'SET_NOTES_SHOW_LAST_UPDATED_DATE',\n  payload: { notesShowLastUpdatedDate },\n});\nexport const setAllowPageNavigation = (allowPageNavigation = true) => ({\n  type: 'SET_ALLOW_PAGE_NAVIGATION',\n  payload: { allowPageNavigation },\n});\nexport const setLastPickedToolForGroup = (group, toolName) => ({\n  type: 'SET_LAST_PICKED_TOOL_FOR_GROUP',\n  payload: { group, toolName },\n});\nexport const setEnableToolGroupReordering = (enableToolGroupReordering = true) => ({\n  type: 'ENABLE_TOOL_GROUP_REORDERING',\n  payload: { enableToolGroupReordering },\n});\nexport const setActiveToolNameAndStyle = (toolObject) => (dispatch, getState) => {\n  const state = getState();\n  let name;\n\n  if (isIOS || isAndroid) {\n    name = toolObject.name;\n  } else {\n    // on desktop, auto switch between AnnotationEdit and TextSelect is true when you hover on text\n    // we do this to prevent this action from spamming the console\n    name =\n      toolObject.name === 'TextSelect' ? 'AnnotationEdit' : toolObject.name;\n  }\n\n  if (state.viewer.activeToolName === name) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_NAME_AND_STYLES',\n    payload: { toolName: name, toolStyles: toolObject.defaults || {} },\n  });\n};\nexport const setActiveToolStyles = (toolStyles = {}) => ({\n  type: 'SET_ACTIVE_TOOL_STYLES',\n  payload: { toolStyles },\n});\nexport const setCustomColor = (customColor = {}) => ({\n  type: 'SET_CUSTOM_COLOR',\n  payload: { customColor },\n});\nexport const setCustomColors = (customColors = []) => ({\n  type: 'SET_CUSTOM_COLORS',\n  payload: { customColors },\n});\nexport const setActiveToolGroup = (toolGroup) => (dispatch, getState) => {\n  const currentActiveToolGroup = selectors.getActiveToolGroup(getState());\n  const toolbarGroup = selectors.getCurrentToolbarGroup(getState());\n\n  if (currentActiveToolGroup === toolGroup) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_GROUP',\n    payload: { toolGroup, toolbarGroup },\n  });\n};\n\nexport const setSelectedScale = (selectedScale) => ({\n  type: 'SET_SELECTED_SCALE',\n  payload: { selectedScale }\n});\n\nexport const setNotePopupId = (id) => ({\n  type: 'SET_NOTE_POPUP_ID',\n  payload: { id },\n});\nexport const triggerNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: true },\n});\nexport const finishNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: false },\n});\nexport const setFitMode = (fitMode) => ({\n  type: 'SET_FIT_MODE',\n  payload: { fitMode },\n});\nexport const setZoom = (zoom, documentViewerKey = 1) => ({ type: 'SET_ZOOM', payload: { zoom, documentViewerKey } });\nexport const setRotation = (rotation) => ({\n  type: 'SET_ROTATION',\n  payload: { rotation },\n});\nexport const setDisplayMode = (displayMode) => ({\n  type: 'SET_DISPLAY_MODE',\n  payload: { displayMode },\n});\nexport const setCurrentPage = (currentPage) => ({\n  type: 'SET_CURRENT_PAGE',\n  payload: { currentPage },\n});\nexport const setFullScreen = (isFullScreen) => ({\n  type: 'SET_FULL_SCREEN',\n  payload: { isFullScreen },\n});\nexport const setReadOnly = (isReadOnly) => ({\n  type: 'SET_READ_ONLY',\n  payload: { isReadOnly },\n});\nexport const registerTool = (tool) => ({\n  type: 'REGISTER_TOOL',\n  payload: { ...tool },\n});\nexport const unregisterTool = (toolName) => ({\n  type: 'UNREGISTER_TOOL',\n  payload: { toolName },\n});\nexport const setToolButtonObjects = (toolButtonObjects) => ({\n  type: 'SET_TOOL_BUTTON_OBJECTS',\n  payload: { toolButtonObjects },\n});\nexport const setHeaderItems = (header, headerItems) => ({\n  type: 'SET_HEADER_ITEMS',\n  payload: { header, headerItems },\n});\nexport const setCustomHeadersAdditionalProperties = (customHeader, additionalProperties) => ({\n  type: 'SET_CUSTOM_HEADERS_ADDITIONAL_PROPERTIES',\n  payload: { customHeader, additionalProperties },\n});\nexport const setPopupItems = (dataElement, items) => ({\n  type: 'SET_POPUP_ITEMS',\n  payload: {\n    dataElement,\n    items,\n  },\n});\nexport const setMenuOverlayItems = (items) => ({\n  type: 'SET_MENUOVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setActivePalette = (colorMapKey, colorPalette) => ({\n  type: 'SET_ACTIVE_PALETTE',\n  payload: { colorMapKey, colorPalette },\n});\n\nexport const setIconColor = (colorMapKey, color) => ({\n  type: 'SET_ICON_COLOR',\n  payload: { colorMapKey, color },\n});\nexport const setColorMap = (colorMap) => ({\n  type: 'SET_COLOR_MAP',\n  payload: { colorMap },\n});\nexport const setLeftPanelWidth = (width) => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const disableReplyForAnnotations = (func) => ({\n  type: 'SET_REPLY_DISABLED_FUNC',\n  payload: { func },\n});\nexport const setMouseWheelZoom = (enableMouseWheelZoom = true) => ({\n  type: 'SET_MOUSE_WHEEL_ZOOM',\n  payload: { enableMouseWheelZoom },\n});\nexport const setReaderMode = (isReaderMode) => ({\n  type: 'SET_READER_MODE',\n  payload: { isReaderMode },\n});\nexport const setThumbnailSelectingPages = (isSelecting = true) => ({\n  type: 'SET_THUMBNAIL_PAGE_SELECT',\n  payload: { isSelecting },\n});\nexport const setPageManipulationOverlayItems = (items) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItems = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItemsSmall = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_SMALL',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItemsLarge = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_LARGE',\n  payload: {\n    items,\n  },\n});\nexport const setPageManipulationOverlayAlternativePosition = (position) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION',\n  payload: { position },\n});\nexport const setPageManipulationOverlayOpenByRightClick = (value) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_OPEN_BY_RIGHT_CLICK',\n  payload: value,\n});\nexport const setThumbnailControlMenuItems = (items) => ({\n  type: 'SET_THUMBNAIL_CONTROL_MENU_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setTabManager = (TabManager) => ({\n  type: 'SET_TAB_MANAGER',\n  payload: { TabManager },\n});\nexport const setMultiTab = (isMultiTab = true) => ({\n  type: 'SET_IS_MULTI_TAB',\n  payload: { isMultiTab },\n});\nexport const setTabs = (tabs) => ({\n  type: 'SET_TABS',\n  payload: { tabs },\n});\nexport const setActiveTab = (activeTab) => ({\n  type: 'SET_ACTIVE_TAB',\n  payload: { activeTab },\n});\nexport const setFonts = (fonts = []) => ({\n  type: 'SET_FONTS',\n  payload: { fonts },\n});\nexport const setIsMultiViewerMode = (isMultiViewerMode) => ({\n  type: 'SET_IS_MULTI_VIEWER_MODE',\n  payload: { isMultiViewerMode },\n});\nexport const setIsMultiViewerReady = (isMultiViewerReady) => ({\n  type: 'SET_IS_MULTI_VIEWER_READY',\n  payload: { isMultiViewerReady },\n});\nexport const setActiveDocumentViewerKey = (activeDocumentViewerKey) => ({\n  type: 'SET_ACTIVE_DOCUMENT_VIEWER_KEY',\n  payload: { activeDocumentViewerKey },\n});\nexport const setIsComparisonOverlayEnabled = (isComparisonOverlayEnabled) => ({\n  type: 'SET_COMPARISON_OVERLAY_ENABLED',\n  payload: { isComparisonOverlayEnabled },\n});\nexport const setIsCompareStarted = (isCompareStarted) => ({\n  type: 'SET_IS_COMPARE_STARTED',\n  payload: { isCompareStarted },\n});\nexport const setSyncViewer = (syncViewer) => ({\n  type: 'SET_SYNC_VIEWERS',\n  payload: { syncViewer },\n});\nexport const setSavedSignaturesTabEnabled = (enabled = true) => ({\n  type: 'SET_SAVED_SIGNATURES_TAB_ENABLED',\n  payload: { enabled }\n});\nexport const setInitialsOffset = (initalsOffset) => ({\n  type: 'SET_INITIALS_OFFSET',\n  payload: { initalsOffset },\n});\nexport const setFlyoutPosition = (newPosition) => ({\n  type: 'SET_FLYOUT_POSITION',\n  payload: { newPosition },\n});\nexport const addFlyout = (newFlyout) => (dispatch, getState) => {\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  while (flyoutMap[newFlyout.dataElement]) {\n    const oldDataElement = newFlyout.dataElement;\n    if (newFlyout.dataElement.match(/[0-9]$/)) {\n      const number = parseInt(newFlyout.dataElement.match(/\\d+$/)[0], 10);\n      newFlyout.dataElement = newFlyout.dataElement.replace(/\\d+$/, `${number + 1}`);\n    } else {\n      newFlyout.dataElement = `${newFlyout.dataElement}2`;\n    }\n    console.warn(`Flyout with dataElement ${oldDataElement} already exists. Renaming to ${newFlyout.dataElement}`);\n  }\n  dispatch({\n    type: 'ADD_FLYOUT',\n    payload: { dataElement: newFlyout.dataElement, flyout: newFlyout },\n  });\n};\nexport const removeFlyout = (dataElement) => ({\n  type: 'REMOVE_FLYOUT',\n  payload: { dataElement },\n});\nexport const setActiveFlyout = (dataElement) => (dispatch, getState) => {\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  if (dataElement && !flyoutMap[dataElement]) {\n    console.warn(`Flyout with dataElement ${dataElement} does not exist.`);\n    return;\n  }\n  dispatch({\n    type: 'SET_ACTIVE_FLYOUT',\n    payload: { dataElement },\n  });\n};\nexport const updateFlyout = (dataElement, newFlyout) => (dispatch, getState) => {\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  if (!flyoutMap[dataElement]) {\n    console.warn(`Flyout with dataElement ${dataElement} does not exist, adding new flyout`);\n    return addFlyout(newFlyout);\n  }\n  dispatch({\n    type: 'UPDATE_FLYOUT',\n    payload: { dataElement, flyout: newFlyout },\n  });\n};\nexport const setFlyoutToggleElement = (toggleElement) => ({\n  type: 'SET_FLYOUT_TOGGLE_ELEMENT',\n  payload: { toggleElement },\n});\n\n// document\nexport const setTotalPages = (totalPages, documentViewerKey = 1) => ({\n  type: 'SET_TOTAL_PAGES',\n  payload: { totalPages, documentViewerKey },\n});\nexport const setOutlines = (outlines) => ({\n  type: 'SET_OUTLINES',\n  payload: { outlines },\n});\nexport const setIsOutlineEditing = (isOutlineEditingEnabled = true) => ({\n  type: 'SET_OUTLINE_EDITING',\n  payload: { isOutlineEditingEnabled },\n});\nexport const setAutoExpandOutlines = (autoExpandOutlines = false) => ({\n  type: 'SET_AUTO_EXPAND_OUTLINES',\n  payload: { autoExpandOutlines },\n});\nexport const setAnnotationNumbering = (isAnnotationNumberingEnabled = false) => ({\n  type: 'SET_ANNOTATION_NUMBERING',\n  payload: { isAnnotationNumberingEnabled },\n});\nexport const setBookmarks = (bookmarks) => ({\n  type: 'SET_BOOKMARKS',\n  payload: { bookmarks },\n});\nexport const addBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'ADD_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const editBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'EDIT_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const removeBookmark = (pageIndex) => (dispatch, getState) => {\n  dispatch({\n    type: 'REMOVE_BOOKMARK',\n    payload: { pageIndex },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const setBookmarkIconShortcutVisibility = (bookmarkIconShortcutVisibility) => ({\n  type: 'SET_BOOKMARK_ICON_SHORTCUT_VISIBILITY',\n  payload: { bookmarkIconShortcutVisibility },\n});\nexport const setPortfolio = (portfolio) => ({\n  type: 'SET_PORTFOLIO',\n  payload: { portfolio },\n});\nexport const setLayers = (layers) => ({\n  type: 'SET_LAYERS',\n  payload: { layers },\n});\nexport const setPasswordAttempts = (attempt) => ({\n  type: 'SET_PASSWORD_ATTEMPTS',\n  payload: { attempt },\n});\nexport const setPrintQuality = (quality) => ({\n  type: 'SET_PRINT_QUALITY',\n  payload: { quality },\n});\nexport const setDefaultPrintOptions = (options) => ({\n  type: 'SET_DEFAULT_PRINT_OPTIONS',\n  payload: { options },\n});\nexport const setLoadingProgress = (percent) => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: percent },\n});\nexport const resetLoadingProgress = () => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: 0 },\n});\nexport const setVerificationResult = (result) => ({\n  type: 'SET_VERIFICATION_RESULT',\n  payload: { result },\n});\nexport const setIsRevocationCheckingEnabled = (isRevocationCheckingEnabled = false) => ({\n  type: 'SET_IS_REVOCATION_CHECKING_ENABLED',\n  payload: { isRevocationCheckingEnabled }\n});\nexport const setRevocationProxyPrefix = (revocationProxyPrefix) => ({\n  type: 'SET_REVOCATION_PROXY_PREFIX',\n  payload: { revocationProxyPrefix }\n});\n\n// user\nexport const setUserName = (userName) => ({\n  type: 'SET_USER_NAME',\n  payload: { userName },\n});\nexport const setAdminUser = (isAdminUser) => ({\n  type: 'SET_ADMIN_USER',\n  payload: { isAdminUser },\n});\n\n// search\nexport const searchText = (searchValue, options) => ({\n  type: 'SEARCH_TEXT',\n  payload: { searchValue, options },\n});\nexport const searchTextFull = (searchValue, options) => ({\n  type: 'SEARCH_TEXT_FULL',\n  payload: { searchValue, options },\n});\nexport const addSearchListener = (func) => ({\n  type: 'ADD_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const removeSearchListener = (func) => ({\n  type: 'REMOVE_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const setSearchValue = (value) => ({\n  type: 'SET_SEARCH_VALUE',\n  payload: { value },\n});\nexport const setReplaceValue = (replaceText) => ({\n  type: 'SET_REPLACE_VALUE',\n  payload: { replaceText },\n});\nexport const setNextResultValue = (nextResult, nextResultIndex) => ({\n  type: 'SET_NEXT_RESULT',\n  payload: { nextResult, nextResultIndex },\n});\nexport const setCaseSensitive = (isCaseSensitive) => ({\n  type: 'SET_CASE_SENSITIVE',\n  payload: { isCaseSensitive },\n});\nexport const setWholeWord = (isWholeWord) => ({\n  type: 'SET_WHOLE_WORD',\n  payload: { isWholeWord },\n});\nexport const setWildcard = (isWildcard) => ({\n  type: 'SET_WILD_CARD',\n  payload: { isWildcard },\n});\n\nexport const resetSearch = () => ({ type: 'RESET_SEARCH', payload: {} });\n\nexport const setNoteTransformFunction = (noteTransformFunction) => ({\n  type: 'SET_NOTE_TRANSFORM_FUNCTION',\n  payload: { noteTransformFunction },\n});\nexport const setCustomNoteSelectionFunction = (customNoteFunction) => ({\n  type: 'SET_CUSTOM_NOTE_SELECTION_FUNCTION',\n  payload: { customNoteFunction },\n});\nexport const setCustomApplyRedactionsHandler = (customApplyRedactionsHandler) => ({\n  type: 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER',\n  payload: { customApplyRedactionsHandler },\n});\n\nexport const setCustomMultiViewerSyncHandler = (customMultiViewerSyncHandler) => ({\n  type: 'SET_CUSTOM_MULTI_VIEWER_SYNC_HANDLER',\n  payload: { customMultiViewerSyncHandler },\n});\n\nexport const setCustomMultiViewerAcceptedFileFormats = (customMultiViewerAcceptedFileFormats) => ({\n  type: 'SET_CUSTOM_MULTI_VIEWER_ACCEPTED_FILE_FORMATS',\n  payload: { customMultiViewerAcceptedFileFormats },\n});\n\nexport const setEnableSnapMode = (enable) => ({\n  type: 'SET_ENABLE_SNAP_MODE',\n  payload: { enable },\n});\n\nexport const setLanguage = (language) => ({\n  type: 'SET_LANGUAGE',\n  payload: { language },\n});\n\nexport const setHideContentEditWarning = (hideWarning) => ({\n  type: 'SET_HIDE_CONTENT_EDIT_WARNING',\n  payload: { hideWarning },\n});\n\nexport const setCurrentContentBeingEdited = ({ content, annotation }) => ({\n  type: 'SET_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content, annotation },\n});\n\nexport const updateCurrentContentBeingEdited = (content) => ({\n  type: 'UPDATE_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content },\n});\n\nexport const clearCurrentContentBeingEdited = () => ({\n  type: 'CLEAR_CURRENT_CONTENT_BEING_EDITED',\n  payload: {},\n});\n\nexport const setProcessingSearchResults = (isProcessingSearchResults) => ({\n  type: 'SET_PROCESSING_SEARCH_RESULTS',\n  payload: { isProcessingSearchResults },\n});\n\nexport const triggerResetAudioPlaybackPosition = (shouldResetAudioPlaybackPosition) => ({\n  type: 'SET_RESET_AUDIO_PLAYBACK_POSITION',\n  payload: { shouldResetAudioPlaybackPosition },\n});\n\nexport const setActiveSoundAnnotation = (activeSoundAnnotation) => ({\n  type: 'SET_ACTIVE_SOUND_ANNOTATION',\n  payload: { activeSoundAnnotation },\n});\n\nexport const setAnnotationFilters = (annotationFilters) => ({\n  type: 'SET_ANNOTATION_FILTERS',\n  payload: { annotationFilters }\n});\n\nexport const setContentBoxEditor = (contentBoxEditor) => ({\n  type: 'SET_CONTENTBOX_EDITOR',\n  payload: { contentBoxEditor }\n});\n\nexport const setInitialsMode = (isEnabled) => ({\n  type: 'SET_INITIALS_MODE',\n  payload: { isEnabled }\n});\n\nexport const setShortcutKeyMap = (shortcutKeyMap) => ({\n  type: 'SET_SHORTCUT_KEY_MAP',\n  payload: shortcutKeyMap\n});\n\nexport const enableFeatureFlag = (featureFlag) => ({\n  type: 'ENABLE_FEATURE_FLAG',\n  payload: { featureFlag }\n});\n\nexport const disableFeatureFlag = (featureFlag) => ({\n  type: 'DISABLE_FEATURE_FLAG',\n  payload: { featureFlag }\n});\n\nexport const setComparePagesButtonEnabled = (isShowComparisonButtonEnabled) => ({\n  type: 'SET_COMPARE_PAGES_BUTTON_ENABLED',\n  payload: { isShowComparisonButtonEnabled }\n});\n\nexport const setIsMultiViewerModeAvailable = (isMultiViewerModeAvailable) => ({\n  type: 'SET_IS_MULTI_VIEWER_MODE_AVAILABLE',\n  payload: { isMultiViewerModeAvailable }\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n  return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n  if (isPromise(maybePromise)) {\n    return maybePromise;\n  }\n\n  return Promise.resolve(maybePromise);\n}","/**\n * Contains string enumeration for all themes for WebViewer. They are used to set the viewer theme.\n * @typedef UI.Theme\n * @property {string} DARK The theme where the WebViewer will be dark.\n * @property {string} LIGHT The theme where the WebViewer will be light.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default {\n  DARK: 'dark',\n  LIGHT: 'light',\n};","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw TypeError('Incorrect invocation');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","import core from 'core';\n\nexport default (toolName) => {\n  // we don't want to show the style popup for this tool\n  // TODO: there might be a better way to handle this. We can potentially have an API for hiding style popup for certain tools\n  if (toolName === 'CropPage' || toolName === 'SnippingTool') {\n    return false;\n  }\n\n  const tool = core.getTool(toolName);\n  let hasStyles;\n\n  if (tool?.defaults) {\n    hasStyles = Object.keys(tool.defaults).length > 0;\n  } else {\n    hasStyles = false;\n  }\n\n  return hasStyles;\n};\n","import { isIE } from 'helpers/device';\nimport core from 'core';\n\nexport default async (pageNumbersToExtract) => {\n  const documentViewer = core.getDocumentViewer();\n  const doc = documentViewer.getDocument();\n  const annotManager = documentViewer.getAnnotationManager();\n\n  const pageCount = doc.getPageCount();\n  const pageOutOfRange = pageNumbersToExtract.some((page) => page < 1 || page > pageCount);\n\n  if (pageOutOfRange) {\n    return Promise.reject(`Page out of range, please enter an array of numbers between 1 and ${pageCount}`);\n  }\n\n  const finishPromise = new Promise(function(resolve, reject) {\n    try {\n      const pageMap = new Map();\n      pageNumbersToExtract.forEach((page) => pageMap.set(page, true));\n\n      const annotationList = annotManager.getAnnotationsList().filter((annot) => pageMap.has(annot.PageNumber));\n      annotManager.exportAnnotations({ annotationList, widgets: true, links: true, fields: true }).then((xfdfString) => {\n        doc.extractPages(pageNumbersToExtract, xfdfString).then((data) => {\n          const arr = new Uint8Array(data);\n          const fileName = `${doc.getFilename()}.pdf` || 'extractedDocument.pdf';\n\n          let file = null;\n          if (isIE) {\n            file = new Blob([arr], { type: 'application/pdf' });\n          } else {\n            file = new File([arr], fileName, { type: 'application/pdf' });\n          }\n\n          resolve(file);\n        }).catch(function(ex) {\n          reject(ex);\n        });\n      });\n    } catch (ex) {\n      reject(ex);\n    }\n  });\n\n  return finishPromise;\n};\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 React from 'react';\nvar defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.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}","import { useState, useEffect } from 'react';\n\n// https://usehooks.com/useMedia/\nexport default (queries, values, defaultValue) => {\n  // Array containing a media query list for each query\n  const mediaQueryLists = queries.map((q) => window.matchMedia(`screen and ${q}`));\n\n  // Function that gets value based on matching media query\n  const getValue = (initial) => {\n    // HACK: Reading window.innerWidth prevents a bug where checking mql.matches\n    // in a background tab on chromium returns true even though it isn't.\n    if (initial) {\n      window.innerWidth;\n    }\n    // Get index of first media query that matches\n    const index = mediaQueryLists.findIndex((mql) => mql?.matches);\n    // Return related value or defaultValue if none\n    return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\n  };\n\n  // State and setter for matched value\n  const [value, setValue] = useState(() => getValue(true));\n\n  useEffect(\n    () => {\n      // Event listener callback\n      // Note: By defining getValue outside of useEffect we ensure that it has ...\n      // ... current values of hook args (as this hook callback is created once on mount).\n      const handler = () => setValue(() => getValue());\n      // Set a listener for each media query with above handler as callback.\n      mediaQueryLists.forEach((mql) => mql?.addListener(handler));\n      // Remove listeners on cleanup\n      return () => mediaQueryLists.forEach((mql) => mql?.removeListener(handler));\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [], // Empty array ensures effect is only run on mount and unmount\n  );\n\n  return value;\n};\n","export default {\n  pt_br: {\n    i18next: 'pt-BR',\n    dayjs: 'pt-br',\n  },\n  zh_cn: {\n    i18next: 'zh',\n    dayjs: 'zh-cn',\n  },\n  zh_tw: {\n    i18next: 'zh',\n    dayjs: 'zh-tw',\n  },\n};","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Tooltip from 'components/Tooltip';\nimport selectors from 'selectors';\n\nimport './CustomElement.scss';\n\nconst propTypes = {\n  className: PropTypes.string,\n  dataElement: PropTypes.string,\n  display: PropTypes.string,\n  render: PropTypes.func.isRequired,\n  renderArguments: PropTypes.array,\n  mediaQueryClassName: PropTypes.string,\n  title: PropTypes.string,\n};\n\nconst CustomElement = ({\n  className = 'CustomElement',\n  dataElement,\n  display,\n  render,\n  renderArguments,\n  mediaQueryClassName,\n  title,\n}) => {\n  const [reactComponent, setReactComponent] = useState(null);\n  const wrapperRef = useRef();\n  const toolTipWrapperRef = useRef();\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n\n  useEffect(() => {\n    // currently UI is running in an iframe, and there are two ways an user can add a CustomElement component to the header using setHeaderItems.\n    // one way is in a config file. This way the element created by document.createElement() is an instanceof window.Element but not window.parent.Element since\n    // code inside the config is running inside the iframe and window.parent is the iframe\n    // the other way is calling setHeaderItems and creating elements outside the iframe. This way the element is an instanceof window.parent.Element, not window.Element\n    const isDOMElement = (element) => {\n      try {\n        return (\n          element instanceof window.Element ||\n          element instanceof window.parent.Element\n        );\n      } catch (e) {\n        return false;\n      }\n    };\n\n    const isReactElement = (element) => React.isValidElement(element);\n\n    if (!isDisabled) {\n      const element = (renderArguments) ? render(...renderArguments) : render();\n      if (isDOMElement(element)) {\n        const wrapperElement = toolTipWrapperRef.current ? toolTipWrapperRef.current : wrapperRef.current;\n\n        while (wrapperElement.firstChild) {\n          wrapperElement.removeChild(wrapperElement.firstChild);\n        }\n        wrapperElement.appendChild(element);\n      } else if (isReactElement(element)) {\n        setReactComponent(element);\n      } else {\n        console.warn(\n          'The object returned by the render function does not seem to be either a DOM element or a React Component',\n        );\n      }\n    }\n  }, [isDisabled, render, renderArguments]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const children = (\n    <div\n      className={classNames({\n        [className]: !!className,\n        [mediaQueryClassName]: !!mediaQueryClassName,\n      })}\n      ref={wrapperRef}\n      data-element={dataElement}\n      style={{ display }}\n    >\n      {reactComponent}\n    </div>\n  );\n\n  return title ? (<Tooltip content={title} ref={toolTipWrapperRef}>{children}</Tooltip>) : children;\n};\n\nCustomElement.propTypes = propTypes;\n\nexport default CustomElement;\n","import CustomElement from './CustomElement';\n\nexport default CustomElement;","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","export const rgbaToHex = (r, g, b, a = 1) => {\n  r = r.toString(16);\n  g = g.toString(16);\n  b = b.toString(16);\n  a = Math.round(a * 255).toString(16);\n\n  if (r.length === 1) {\n    r = `0${r}`;\n  }\n  if (g.length === 1) {\n    g = `0${g}`;\n  }\n  if (b.length === 1) {\n    b = `0${b}`;\n  }\n  if (a.length === 1) {\n    a = `0${a}`;\n  }\n\n  return `#${r}${g}${b}${a}`;\n};\n\nexport const hexToRgba = (hexString) => {\n  let a = 1;\n  if (hexString.length === 9) {\n    a = (parseInt(hexString.slice(7, 9), 16) / 255).toFixed(2);\n  }\n  const r = parseInt(hexString.slice(1, 3), 16);\n  const g = parseInt(hexString.slice(3, 5), 16);\n  const b = parseInt(hexString.slice(5, 7), 16);\n\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const isDarkColorHex = (hexString) => {\n  const R = parseInt(hexString.substring(1, 3), 16);\n  const G = parseInt(hexString.substring(3, 5), 16);\n  const B = parseInt(hexString.substring(5, 7), 16);\n\n  return R < 40 && G < 40 && B < 40;\n};","import getRootNode from 'helpers/getRootNode';\n\nexport default (element, overlay, isTabletAndMobile, selector = 'data-element') => {\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n  const innerWidth = isApryseWebViewerWebComponent ? getRootNode().host.clientWidth : window.innerWidth;\n  const innerHeight = isApryseWebViewerWebComponent ? getRootNode().host.clientHeight : window.innerHeight;\n  const button = getRootNode().querySelector(`[${selector}=\"${element}\"]`);\n\n  let left = 0;\n  let right = 'auto';\n\n  // by default the button is visible in the header\n  // but it can be removed from the DOM by calling viewerInstance.disableElement(...);\n  // in this case we are not able to position the overlay correctly so we just \"hide\" the overlay\n  if (!button || !overlay.current) {\n    return { left: -9999, right };\n  }\n\n  const {\n    bottom: buttonBottom,\n    left: buttonLeft,\n  } = button.getBoundingClientRect();\n  const { width: overlayWidth, height: overlayHeight } = overlay.current.getBoundingClientRect();\n  const rootLeft = isApryseWebViewerWebComponent ? getRootNode().host.getBoundingClientRect().left : 0;\n  if ((buttonLeft - rootLeft) + overlayWidth > innerWidth) {\n    const rightMargin = 6;\n    left = innerWidth - rightMargin - overlayWidth;\n    right = 'auto';\n  } else {\n    left = buttonLeft - rootLeft;\n    right = 'auto';\n  }\n\n  const verticalGap = isTabletAndMobile ? 14 : 6;\n  const rootTop = isApryseWebViewerWebComponent ? getRootNode().host.getBoundingClientRect().top : 0;\n  let top = (buttonBottom - rootTop) + verticalGap;\n  if (buttonBottom > 100) {\n    // if the buttons are not on the top of the page, the popup can adjust its position to \"pass\" them, otherwise the popup should always be below them\n    if (buttonBottom + overlayHeight > innerHeight) {\n      const calculatedTop = innerHeight - overlayHeight - verticalGap;\n      top = calculatedTop > 0 ? calculatedTop : 0;\n    }\n  }\n\n  return {\n    left: !isNaN(left) ? Math.max(left, 0) : left,\n    right,\n    top,\n  };\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\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","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.22.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","// 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","import core from 'core';\n\nexport default (toolName, property, value) => {\n  const tools = [];\n\n  const toolArray = core.getToolsFromAllDocumentViewers(toolName);\n  for (const tool of toolArray) {\n    if (tool) {\n      tools.push(tool);\n    }\n  }\n\n  tools.forEach((tool) => {\n    tool.setStyles({\n      [property]: value,\n    });\n  });\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\nimport loadDocument from 'helpers/loadDocument';\nimport { setLoadingProgress } from 'actions/internalActions';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport downloadPdf from 'helpers/downloadPdf';\nimport Events from 'constants/events';\nimport isString from 'lodash/isString';\nimport DataElements from 'constants/dataElement';\nimport getRootNode, { getInstanceNode } from 'helpers/getRootNode';\n\nexport const enableMultiTab = () => (dispatch, getState) => {\n  const state = getState();\n  // if already in multi-tab mode do not recreate TabManager\n  if (selectors.getIsMultiTab(state) && selectors.getTabManager(state)) {\n    return;\n  }\n  const doc = core.getDocument();\n  let docArr = [];\n  if (doc) {\n    docArr.push(doc);\n  } else {\n    let initialDoc = getHashParameters('d', '');\n    initialDoc = initialDoc ? JSON.parse(initialDoc) : '';\n    if (initialDoc) {\n      if (Array.isArray(initialDoc)) {\n        docArr = docArr.concat(initialDoc);\n      } else {\n        docArr.push(initialDoc);\n      }\n    }\n  }\n  const tabManager = new TabManager(docArr, [], { dispatch, getState });\n  dispatch(actions.setMultiTab(true));\n  dispatch(actions.setTabManager(tabManager));\n  // Fix for event not firing on some devices\n  setTimeout(() => {\n    fireEvent(Events.TAB_MANAGER_READY);\n  }, 300);\n};\n\nexport function prepareMultiTab(initialDoc, store) {\n  const extensions = getHashParameters('extension', null)?.split(',');\n  if (extensions && extensions.length !== 1 && extensions.length !== initialDoc.length) {\n    throw new Error(`'initialDoc' array length doesn't match 'extension' array length.\n          Please add an extension for each document or add one for all documents.\n          ex:\n          Webviewer({ initialDoc: ['pdf_doc', 'word_doc'], extension: ['pdf', 'docx'] })\n          OR\n          Webviewer({ initialDoc: ['pdf_doc1', 'pdf_doc2', 'pdf_doc3'], extension: ['pdf'] })`);\n  }\n  if (extensions && extensions.length === 1) {\n    console.warn(`Extension option '${extensions[0]}' will be applied to all tabs from the constructor.`);\n  }\n  store.dispatch(actions.setMultiTab(true));\n  const tabManager = new TabManager(initialDoc, extensions, store);\n  store.dispatch(actions.setTabManager(tabManager));\n  tabManager.listenForAnnotChanges();\n  // Fix for event not firing on some devices\n  setTimeout(() => {\n    fireEvent(Events.TAB_MANAGER_READY);\n  }, 300);\n}\n\nexport default class TabManager {\n  db;\n  store;\n  useDB;\n\n  constructor(docArr, extensionArr, store) {\n    this.store = store;\n    const state = this.store.getState();\n    this.useDB = !state.advanced.disableIndexedDB;\n    const { tabs, isMultiTab } = state.viewer;\n\n    if (this.useDB) {\n      const req = indexedDB.open('WebViewer Files', 1);\n      req.onerror = TabManager.indexedDBNotSupported;\n      req.onsuccess = async () => {\n        this.db = req.result;\n        this.db.onerror = TabManager.throwError;\n      };\n      req.onupgradeneeded = (e) => {\n        e.target.result.createObjectStore('files');\n      };\n    }\n\n    // if already in multi-tab mode and already save created the TabManager do not recreate TabManager\n    if (isMultiTab && selectors.getTabManager(state)) {\n      return;\n    }\n\n    docArr.forEach((doc, index) => {\n      const extension = extensionArr && isString(doc) ? extensionArr[extensionArr.length > 1 ? index : 0] : undefined;\n      let filename = `Document ${tabs.length + 1}`;\n      if (isString(doc)) {\n        filename = doc.substring(doc.lastIndexOf('/') + 1);\n      } else if (doc instanceof window.Core.Document && doc.getFilename && doc.getFilename()) {\n        filename = doc.getFilename();\n      }\n      tabs.push(new Tab(tabs.length, doc, this, {\n        filename,\n        extension,\n      }, this.useDB));\n    });\n\n    this.store.dispatch(actions.setTabs(tabs));\n    this.prepareTabEventListeners();\n  }\n\n  prepareTabEventListeners() {\n    const documentViewer = core.getDocumentViewer(1);\n\n    // To control if the document was downloaded or not after any document changes\n    documentViewer.addEventListener('finishedRendering', () => {\n      this.listenForAnnotChanges();\n      this.listenToDocumentDownloaded(documentViewer);\n    }, { once: true });\n  }\n\n  async setActiveTab(id, saveCurrentActiveTabState = true) {\n    this.store.dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n    this.store.dispatch(setLoadingProgress(0));\n\n    const state = this.store.getState();\n    const { tabs, activeTab } = state.viewer;\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n    const isEmptyPageOpen = selectors.isElementOpen(state, DataElements.MULTITABS_EMPTY_PAGE);\n    this.prepareTabEventListeners();\n    const newTab = tabs.find((tab) => tab.id === id);\n    if (!newTab) {\n      return console.error(`Tab id not found: ${id}`);\n    }\n    if (currentTab) {\n      await core.getDocumentViewer().getAnnotationsLoadedPromise();\n    }\n    fireEvent(Events['BEFORE_TAB_CHANGED'], {\n      currentTab: currentTab ? {\n        src: currentTab.src,\n        options: currentTab.options,\n        id: currentTab.id,\n        annotationsChanged: currentTab.changes.annotations,\n        hasUnsavedChanges: currentTab.changes.hasUnsavedChanges\n      } : null,\n      nextTab: {\n        src: newTab.src,\n        options: newTab.options,\n        id: newTab.id,\n      },\n    });\n    // Need this timeout because window.dispatchEvent is synchronous\n    // This will cause the document to be closed if the customer exports an XFDF or runs another async call here\n    // Allow a timeout of 400ms for async calls to finish before closing the document.\n    setTimeout(async () => {\n      if (currentTab) {\n        saveCurrentActiveTabState && await currentTab.saveCurrentActiveTabState(this.db);\n        core.closeDocument();\n      }\n      this.store.dispatch(actions.setActiveTab(id));\n      isEmptyPageOpen && this.store.dispatch(actions.closeElement(DataElements.MULTITABS_EMPTY_PAGE));\n      await newTab.load(this.store.dispatch, this.db, this.getViewerState(state));\n    }, 400);\n  }\n\n  getViewerState = (state) => {\n    const currentViewerState = {};\n    const viewerState = state.viewer;\n\n    currentViewerState.documentContainerWidth = viewerState.documentContainerWidth;\n    currentViewerState.documentContainerHeight = viewerState.documentContainerHeight;\n    currentViewerState.isNotesPanelOpen = selectors.isElementOpen(state, 'notesPanel');\n    currentViewerState.isLeftPanelOpen = selectors.isElementOpen(state, 'leftPanel');\n    currentViewerState.isSearchPanelOpen = selectors.isElementOpen(state, 'searchPanel');\n    currentViewerState.activeToolName = viewerState.activeToolName;\n\n    return currentViewerState;\n  }\n\n  showDeleteWarning(tabToDelete) {\n    const title = 'warning.closeFile.title';\n    const message = 'warning.closeFile.message';\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        downloadPdf(this.store.dispatch).then(() => {\n          tabToDelete.changes.hasUnsavedChanges = false;\n          this.deleteTab(tabToDelete.id);\n        });\n      },\n      onSecondary: () => {\n        tabToDelete.changes.hasUnsavedChanges = false;\n        this.deleteTab(tabToDelete.id);\n      },\n      confirmBtnText: 'action.download',\n      secondaryBtnText: 'warning.closeFile.rejectDownloadButton',\n      secondaryBtnClass: 'secondary-btn-custom',\n      showAskAgainCheckbox: true,\n      onClose: (disableWarning) => {\n        disableWarning && this.store.dispatch(actions.disableDeleteTabWarning());\n      }\n    };\n    this.store.dispatch(actions.showWarningMessage(confirmationWarning));\n  }\n\n  deleteTab(id) {\n    const state = this.store.getState();\n    const { tabs, activeTab } = state.viewer;\n    const tabToDelete = tabs.find((tab) => tab.id === id);\n    const shouldShowWarning = selectors.getShowDeleteTabWarning(state) && tabToDelete.changes.hasUnsavedChanges;\n\n    if (shouldShowWarning) {\n      this.showDeleteWarning(tabToDelete);\n    } else {\n      const [deletedTab] = tabs.splice(tabs.findIndex((tab) => tab.id === id), 1);\n      deletedTab.delete(this.db);\n      fireEvent(Events['TAB_DELETED'], {\n        src: deletedTab.src,\n        options: deletedTab.options,\n        id: deletedTab.id,\n      });\n      if (id === activeTab && tabs.length) {\n        this.setActiveTab(tabs[0].id);\n      } else if (!tabs.length) {\n        core.closeDocument();\n        this.store.dispatch(actions.setActiveTab(null));\n      }\n      this.store.dispatch(actions.setTabs(tabs));\n    }\n  }\n\n  async addTab(src, options = {}) {\n    const saveCurrentTabState = options['saveCurrentActiveTabState'] || options['saveCurrent'];\n    const useDB = options['useDB'] === false ? options['useDB'] && this.useDB : this.useDB;\n    const shouldLoadTab = options['setActive'] || options['load'];\n    const { tabs } = this.store.getState().viewer;\n    const currId = tabs.reduce((highestId, tab) => {\n      return tab.id > highestId ? tab.id : highestId;\n    }, 0);\n    if (!('filename' in options)) {\n      options['filename'] = `Document ${currId + 2}`;\n      if (isString(src)) {\n        options['filename'] = src.substring(src.lastIndexOf('/') + 1);\n      } else if (src instanceof window.Core.Document && src.getFilename && src.getFilename()) {\n        options['filename'] = src.getFilename();\n      } else if (src instanceof File || Object.prototype.toString.call(src) === '[object File]') {\n        options['filename'] = src['name'];\n      }\n    }\n    const tab = new Tab(currId + 1, src, this, options, useDB);\n    tabs.push(tab);\n    fireEvent(Events['TAB_ADDED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n    });\n    if (shouldLoadTab) {\n      await this.setActiveTab(tab.id, saveCurrentTabState);\n    }\n    this.store.dispatch(actions.setTabs(tabs));\n    return tab.id;\n  }\n\n  moveTab(from, to) {\n    const { tabs } = this.store.getState().viewer;\n    const tab = tabs.splice(from, 1)[0];\n    tabs.splice(to, 0, tab);\n    fireEvent(Events['TAB_MOVED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n      prevIndex: from,\n      newIndex: to,\n    });\n    this.store.dispatch(actions.setTabs(tabs));\n  }\n\n  listenForAnnotChanges() {\n    const onAnnotChange = (_, __, info) => {\n      if (info.imported) {\n        return;\n      }\n      const { tabs, activeTab } = this.store.getState().viewer;\n      const tab = tabs.find((t) => t.id === activeTab);\n      // if we switch between multiviewer and multitab amd have annotations being removed,\n      // we can end up with a events fired for tabs that are no longer in the store\n      if (tab) {\n        tab.changes.annotations = true;\n        tab.changes.hasUnsavedChanges = true;\n      }\n      removeListeners();\n    };\n    const onFieldChange = () => {\n      const { tabs, activeTab } = this.store.getState().viewer;\n      const tab = tabs.find((t) => t.id === activeTab);\n      if (tab) {\n        tab.changes.annotations = true;\n        tab.changes.hasUnsavedChanges = true;\n      }\n      removeListeners();\n    };\n\n    core.addEventListener('annotationChanged', onAnnotChange);\n    core.addEventListener('fieldChanged', onFieldChange, { once: true });\n\n    const removeListeners = () => {\n      core.removeEventListener('annotationChanged', onAnnotChange);\n      core.removeEventListener('fieldChanged', onFieldChange);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  listenToDocumentDownloaded = async (documentViewer) => {\n    const { tabs, activeTab } = this.store.getState().viewer;\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n\n    const onFileDownloaded = () => {\n      currentTab.changes.hasUnsavedChanges = false;\n    };\n\n    const onPagesUpdated = (info) => {\n      if (info.source !== 'refresh') {\n        currentTab.changes.hasUnsavedChanges = true;\n      }\n    };\n\n    getInstanceNode().addEventListener(Events.FILE_DOWNLOADED, onFileDownloaded);\n    documentViewer.addEventListener('pagesUpdated', onPagesUpdated);\n\n    const removeListeners = () => {\n      getInstanceNode().removeEventListener(Events.FILE_DOWNLOADED, onFileDownloaded);\n      documentViewer.removeEventListener('pagesUpdated', onPagesUpdated);\n    };\n\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  // eslint-disable-next-line generator-star-spacing\n  *[Symbol.iterator]() {\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      yield tab;\n    }\n  }\n\n  map(cb) {\n    const mapped = [];\n    let index = 0;\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      mapped.push(cb(tab, index++));\n    }\n    return mapped;\n  }\n\n  static throwError() {\n    console.warn('File database has encountered an error. File data will not be saved when switching tabs');\n  }\n\n  static indexedDBNotSupported() {\n    console.warn('IndexedDB is not supported, file data will not be saved');\n  }\n\n  static MAX_FILE_SIZE = 2.5e8; // 250MB (in bytes)\n}\n\nexport class Tab {\n  disabled = false;\n  saveData = {\n    annotInDB: false,\n    docInDB: false,\n    scrollTop: null, // Float\n    scrollLeft: null, // Float\n    page: null, // Int\n    annots: null, // XFDF String\n  };\n  changes = {\n    annotations: false,\n    hasUnsavedChanges: false\n  };\n\n  id;\n  src;\n  options;\n  useDB;\n  tabManager;\n\n  constructor(id, src, tabManager, options = {}, useDB = true) {\n    this.id = id;\n    this.src = src;\n    this.options = options;\n    this.useDB = useDB;\n    this.tabManager = tabManager;\n  }\n\n  async preLoad(db) {\n    if (!this.useDB) {\n      return console.error('Cant preload tab with useDB = false');\n    }\n    const file = await fetch(this.src);\n    await this.writeToDB(db, await file.arrayBuffer());\n  }\n\n  async load(dispatch, db, viewerState) {\n    const annotsChanged = (this.saveData.annotInDB || this.saveData.annots);\n    this.options.loadAnnotations = !annotsChanged;\n    core.addEventListener('documentUnloaded', async () => {\n      this.restorePageDataOnLoad(viewerState, dispatch);\n      annotsChanged && await this.restoreAnnotDataOnLoad(db);\n    }, { once: true });\n    if (this.useDB && this.saveData.docInDB) {\n      const tx = db.transaction('files', 'readonly');\n      const store = tx.objectStore('files');\n      const req = store.get(this.id);\n      req.onsuccess = async () => {\n        const doc = req.result;\n        loadDocument(dispatch, doc, this.options);\n      };\n      tx.commit();\n    } else {\n      loadDocument(dispatch, this.src, this.options);\n    }\n  }\n\n  async saveCurrentActiveTabState(db) {\n    this.disabled = true;\n    this.savePageData();\n    const document = core.getDocument();\n    if (this.useDB && (document?.type === workerTypes.PDF && document.arePagesAltered() || this.src instanceof window.Core.Document)) {\n      await this.saveFileData(db, document);\n    } else if (this.changes.annotations) {\n      if (this.useDB) {\n        await this.saveAnnotDataInDB(db);\n      } else {\n        await this.saveAnnotData();\n      }\n    }\n    this.disabled = false;\n  }\n\n  async saveFileData(db, document) {\n    const xfdfString = await core.exportAnnotations();\n    const data = await document.getFileData({\n      xfdfString,\n      flags: window.Core.SaveOptions.LINEARIZED,\n      finishedWithDocument: true,\n    });\n    await this.writeToDB(db, data);\n  }\n\n  async saveAnnotData() {\n    this.saveData.annotInDB = false;\n    const annotData = await core.exportAnnotations({ options: { fields: true, widgets: true, links: true } });\n    if (annotData) {\n      this.saveData.annots = annotData;\n    }\n  }\n\n  async saveAnnotDataInDB(db) {\n    const annotData = await core.exportAnnotations({ options: { fields: true, widgets: true, links: true } });\n    if (annotData) {\n      const annots = annotData;\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.put(annots, `${this.id}-annots`);\n      await tx.commit();\n      this.saveData.annotInDB = true;\n    }\n  }\n\n  savePageData() {\n    const docContainer = getRootNode()\n      .getElementById('app')\n      .getElementsByClassName('DocumentContainer')[0];\n    this.saveData.scrollTop = docContainer.scrollTop;\n    this.saveData.scrollLeft = docContainer.scrollLeft;\n    this.saveData.page = core.getCurrentPage();\n    const precision = 10000;\n    this.saveData.zoom = Math.floor(core.getZoom() * precision) / precision;\n  }\n\n  restorePageDataOnLoad(viewerState, dispatch) {\n    const docContainer = getRootNode()\n      .getElementById('app')\n      .getElementsByClassName('DocumentContainer')[0];\n\n    const updateScroll = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      docContainer.scrollTop = this.saveData.scrollTop;\n      docContainer.scrollLeft = this.saveData.scrollLeft;\n    };\n\n    viewerState.isNotesPanelOpen && dispatch(actions.openElement('notesPanel'));\n    viewerState.isLeftPanelOpen && dispatch(actions.openElement('leftPanel'));\n    viewerState.isSearchPanelOpen && dispatch(actions.openElement('searchPanel'));\n    viewerState.activeToolName && core.setToolMode(viewerState.activeToolName);\n\n    const updateViewer = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      this.saveData.zoom && await core.zoomTo(this.saveData.zoom);\n      this.saveData.page && await core.setCurrentPage(this.saveData.page);\n    };\n\n    core.addEventListener('documentLoaded', updateViewer, { once: true });\n\n    this.saveData.scrollTop && core.addEventListener('finishedRendering', updateScroll, { once: true });\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', updateViewer);\n      core.removeEventListener('finishedRendering', updateScroll);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  async updateAnnotations(db) {\n    const state = this.tabManager.store.getState();\n    const activeTabId = selectors.getActiveTab(state);\n    if (activeTabId !== this.id) {\n      return selectors.getTabs(state).find((tab) => tab.id === activeTabId).updateAnnotations(db);\n    }\n\n    if (this.saveData.annotInDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      const annotReq = store.get(`${this.id}-annots`);\n      annotReq.onsuccess = async () => {\n        await core.getDocument().getDocumentCompletePromise();\n        await core.getAnnotationManager().importAnnotations(annotReq.result);\n      };\n      await tx.commit();\n    } else if (this.saveData.annots) {\n      await core.getDocument().getDocumentCompletePromise();\n      await core.getAnnotationManager().importAnnotations(this.saveData.annots);\n    }\n  }\n\n  async restoreAnnotDataOnLoad(db) {\n    const updateAnnotations = () => this.updateAnnotations(db);\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', updateAnnotations);\n    };\n    core.addEventListener('documentLoaded', updateAnnotations, { once: true });\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  async writeToDB(db, arrBuff) {\n    const tx = db.transaction('files', 'readwrite');\n    const store = tx.objectStore('files');\n    store.put(arrBuff, this.id);\n    this.saveData.docInDB = true;\n    await tx.commit();\n  }\n\n  async delete(db) {\n    if (this.useDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.delete(this.id);\n      store.delete(`${this.id}-annot-states`);\n      store.delete(`${this.id}-annots`);\n      await tx.commit();\n    }\n  }\n}\n","/**\n * Set the language of WebViewer UI.\n * @method UI.setLanguage\n * @param {string} language The language WebViewer UI will use. By default, following languages are supported: en, zh_cn, fr.\n * @returns {Promise<void>} A promise which is resolved after the language is set.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setLanguage('fr'); // set the language to French\n  });\n */\n/* eslint-disable no-unsanitized/method */\nimport i18next from 'i18next';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport dayjs from 'dayjs';\nimport languageRules from 'constants/languageRules';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nlet pendingLanguageTimeout;\nexport default (store) => async (language) => {\n  if (pendingLanguageTimeout) {\n    clearTimeout(pendingLanguageTimeout);\n  }\n  await new Promise((resolve) => {\n    pendingLanguageTimeout = setTimeout(async () => {\n      let languageObj = null;\n      let languageToImportLocaleFile = language;\n\n      if (languageRules[language]) {\n        languageObj = languageRules[language];\n        languageToImportLocaleFile = languageObj.dayjs || language;\n      }\n\n      // load locale file from \"dayjs/locale/\" folder, must match filename\n      try {\n        await import(`dayjs/locale/${languageToImportLocaleFile}.js`);\n        dayjs.locale(languageToImportLocaleFile);\n      } catch (e) {\n        dayjs.locale('en');\n      } finally {\n        const languageEventObject = {\n          prev: selectors.getCurrentLanguage(store.getState()),\n          next: language,\n        };\n        store.dispatch(actions.setLanguage(language));\n        const pendingLanguagePromise = i18next.changeLanguage(language);\n        setDatePickerLocale(pendingLanguagePromise, language);\n        await pendingLanguagePromise;\n        fireEvent(Events['LANGUAGE_CHANGED'], languageEventObject);\n      }\n      resolve();\n    }, 0);\n  });\n};\n\nconst setDatePickerLocale = (i18nextPromise, language) => {\n  i18nextPromise.then((t) => {\n    const { DatePickerWidgetAnnotation } = window.Core.Annotations;\n    const obj = t('datePicker', { 'returnObjects': true });\n    const options = DatePickerWidgetAnnotation.datePickerOptions;\n    options['i18n'] = obj;\n    options['local'] = language;\n\n    DatePickerWidgetAnnotation.datePickerOptions = options;\n\n    core.getAnnotationsList()\n      .filter((annot) => annot instanceof DatePickerWidgetAnnotation)\n      .forEach((widget) => {\n        widget.refreshDatePicker();\n      });\n  });\n};\n","import core from 'core';\n\nconst { MeasurementUnits } = window.Core.Annotations.Annotation;\nconst isMeasurementTool = (tool) => !!(tool && tool.Measure);\n\nconst imperialConverter = {\n  'ft': MeasurementUnits.PRIME_FT,\n  'in': MeasurementUnits.DOUBLE_PRIME_IN,\n};\n\nexport default () => {\n  const tools = [];\n  const toolModeMap = core.getToolModeMap();\n  Object.values(toolModeMap).forEach((tool) => {\n    if (isMeasurementTool(tool)) {\n      tools.push(tool);\n    }\n  });\n  return tools;\n};\n\nexport { isMeasurementTool, imperialConverter, MeasurementUnits };\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","export var ListenerType;\n\n(function (ListenerType) {\n  ListenerType[\"mouse\"] = \"mouse\";\n  ListenerType[\"touch\"] = \"touch\";\n  ListenerType[\"keyboard\"] = \"keyboard\";\n})(ListenerType || (ListenerType = {}));","// Used for MouseEvent.buttons (note the s on the end).\nvar MouseButtons = {\n  Left: 1,\n  Right: 2,\n  Center: 4\n}; // Used for e.button (note the lack of an s on the end).\n\nvar MouseButton = {\n  Left: 0,\n  Center: 1,\n  Right: 2\n};\n/**\n * Only touch events and mouse events where the left button is pressed should initiate a drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\n\nexport function eventShouldStartDrag(e) {\n  // For touch events, button will be undefined. If e.button is defined,\n  // then it should be MouseButton.Left.\n  return e.button === undefined || e.button === MouseButton.Left;\n}\n/**\n * Only touch events and mouse events where the left mouse button is no longer held should end a drag.\n * It's possible the user mouse downs with the left mouse button, then mouse down and ups with the right mouse button.\n * We don't want releasing the right mouse button to end the drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\n\nexport function eventShouldEndDrag(e) {\n  // Touch events will have buttons be undefined, while mouse events will have e.buttons's left button\n  // bit field unset if the left mouse button has been released\n  return e.buttons === undefined || (e.buttons & MouseButtons.Left) === 0;\n}\nexport function isTouchEvent(e) {\n  return !!e.targetTouches;\n}","import { isTouchEvent } from './predicates';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return undefined;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nexport function getEventClientTouchOffset(e, lastTargetTouchFallback) {\n  if (e.targetTouches.length === 1) {\n    return getEventClientOffset(e.targetTouches[0]);\n  } else if (lastTargetTouchFallback && e.touches.length === 1) {\n    if (e.touches[0].target === lastTargetTouchFallback.target) {\n      return getEventClientOffset(e.touches[0]);\n    }\n  }\n}\nexport function getEventClientOffset(e, lastTargetTouchFallback) {\n  if (isTouchEvent(e)) {\n    return getEventClientTouchOffset(e, lastTargetTouchFallback);\n  } else {\n    return {\n      x: e.clientX,\n      y: e.clientY\n    };\n  }\n}","var supportsPassive = function () {\n  // simular to jQuery's test\n  var supported = false;\n\n  try {\n    addEventListener('test', function () {// do nothing\n    }, Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supported = true;\n        return true;\n      }\n    }));\n  } catch (e) {// do nothing\n  }\n\n  return supported;\n}();\n\nexport default supportsPassive;","function _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\nexport var OptionsReader =\n/*#__PURE__*/\nfunction () {\n  function OptionsReader(incoming, context) {\n    var _this = this;\n\n    _classCallCheck(this, OptionsReader);\n\n    this.enableTouchEvents = true;\n    this.enableMouseEvents = false;\n    this.enableKeyboardEvents = false;\n    this.ignoreContextMenu = false;\n    this.enableHoverOutsideTarget = false;\n    this.touchSlop = 0;\n    this.scrollAngleRanges = undefined;\n    this.context = context;\n    this.delayTouchStart = incoming.delayTouchStart || incoming.delay || 0;\n    this.delayMouseStart = incoming.delayMouseStart || incoming.delay || 0;\n    Object.keys(incoming).forEach(function (key) {\n      if (incoming[key] != null) {\n        ;\n        _this[key] = incoming[key];\n      }\n    });\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.context && this.context.window) {\n        return this.context.window;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      if (this.window) {\n        return this.window.document;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return OptionsReader;\n}();","var _eventNames;\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 _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 '@react-dnd/invariant';\nimport { ListenerType } from './interfaces';\nimport { eventShouldStartDrag, eventShouldEndDrag, isTouchEvent } from './utils/predicates';\nimport { getEventClientOffset, getNodeClientOffset } from './utils/offsets';\nimport { distance, inAngleRanges } from './utils/math';\nimport supportsPassive from './utils/supportsPassive';\nimport { OptionsReader } from './OptionsReader';\nvar eventNames = (_eventNames = {}, _defineProperty(_eventNames, ListenerType.mouse, {\n  start: 'mousedown',\n  move: 'mousemove',\n  end: 'mouseup',\n  contextmenu: 'contextmenu'\n}), _defineProperty(_eventNames, ListenerType.touch, {\n  start: 'touchstart',\n  move: 'touchmove',\n  end: 'touchend'\n}), _defineProperty(_eventNames, ListenerType.keyboard, {\n  keydown: 'keydown'\n}), _eventNames);\n\nvar TouchBackend =\n/*#__PURE__*/\nfunction () {\n  function TouchBackend(manager, context, options) {\n    var _this = this;\n\n    _classCallCheck(this, TouchBackend);\n\n    this.getSourceClientOffset = function (sourceId) {\n      return getNodeClientOffset(_this.sourceNodes[sourceId]);\n    };\n\n    this.handleTopMoveStartCapture = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      }\n\n      _this.moveStartSourceIds = [];\n    };\n\n    this.handleMoveStart = function (sourceId) {\n      // Just because we received an event doesn't necessarily mean we need to collect drag sources.\n      // We only collect start collecting drag sources on touch and left mouse events.\n      if (Array.isArray(_this.moveStartSourceIds)) {\n        _this.moveStartSourceIds.unshift(sourceId);\n      }\n    };\n\n    this.handleTopMoveStart = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      } // Don't prematurely preventDefault() here since it might:\n      // 1. Mess up scrolling\n      // 2. Mess up long tap (which brings up context menu)\n      // 3. If there's an anchor link as a child, tap won't be triggered on link\n\n\n      var clientOffset = getEventClientOffset(e);\n\n      if (clientOffset) {\n        if (isTouchEvent(e)) {\n          _this.lastTargetTouchFallback = e.targetTouches[0];\n        }\n\n        _this._mouseClientOffset = clientOffset;\n      }\n\n      _this.waitingForDelay = false;\n    };\n\n    this.handleTopMoveStartDelay = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      }\n\n      var delay = e.type === eventNames.touch.start ? _this.options.delayTouchStart : _this.options.delayMouseStart;\n      _this.timeout = setTimeout(_this.handleTopMoveStart.bind(_this, e), delay);\n      _this.waitingForDelay = true;\n    };\n\n    this.handleTopMoveCapture = function () {\n      _this.dragOverTargetIds = [];\n    };\n\n    this.handleMove = function (_, targetId) {\n      if (_this.dragOverTargetIds) {\n        _this.dragOverTargetIds.unshift(targetId);\n      }\n    };\n\n    this.handleTopMove = function (e) {\n      if (_this.timeout) {\n        clearTimeout(_this.timeout);\n      }\n\n      if (!_this.document || _this.waitingForDelay) {\n        return;\n      }\n\n      var moveStartSourceIds = _this.moveStartSourceIds,\n          dragOverTargetIds = _this.dragOverTargetIds;\n      var enableHoverOutsideTarget = _this.options.enableHoverOutsideTarget;\n      var clientOffset = getEventClientOffset(e, _this.lastTargetTouchFallback);\n\n      if (!clientOffset) {\n        return;\n      } // If the touch move started as a scroll, or is is between the scroll angles\n\n\n      if (_this._isScrolling || !_this.monitor.isDragging() && inAngleRanges(_this._mouseClientOffset.x || 0, _this._mouseClientOffset.y || 0, clientOffset.x, clientOffset.y, _this.options.scrollAngleRanges)) {\n        _this._isScrolling = true;\n        return;\n      } // If we're not dragging and we've moved a little, that counts as a drag start\n\n\n      if (!_this.monitor.isDragging() && // eslint-disable-next-line no-prototype-builtins\n      _this._mouseClientOffset.hasOwnProperty('x') && moveStartSourceIds && distance(_this._mouseClientOffset.x || 0, _this._mouseClientOffset.y || 0, clientOffset.x, clientOffset.y) > (_this.options.touchSlop ? _this.options.touchSlop : 0)) {\n        _this.moveStartSourceIds = undefined;\n\n        _this.actions.beginDrag(moveStartSourceIds, {\n          clientOffset: _this._mouseClientOffset,\n          getSourceClientOffset: _this.getSourceClientOffset,\n          publishSource: false\n        });\n      }\n\n      if (!_this.monitor.isDragging()) {\n        return;\n      }\n\n      var sourceNode = _this.sourceNodes[_this.monitor.getSourceId()];\n\n      _this.installSourceNodeRemovalObserver(sourceNode);\n\n      _this.actions.publishDragSource();\n\n      e.preventDefault(); // Get the node elements of the hovered DropTargets\n\n      var dragOverTargetNodes = (dragOverTargetIds || []).map(function (key) {\n        return _this.targetNodes[key];\n      }); // Get the a ordered list of nodes that are touched by\n\n      var elementsAtPoint = _this.options.getDropTargetElementsAtPoint ? _this.options.getDropTargetElementsAtPoint(clientOffset.x, clientOffset.y, dragOverTargetNodes) : _this.document.elementsFromPoint(clientOffset.x, clientOffset.y); // Extend list with parents that are not receiving elementsFromPoint events (size 0 elements and svg groups)\n\n      var elementsAtPointExtended = [];\n\n      for (var nodeId in elementsAtPoint) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (!elementsAtPoint.hasOwnProperty(nodeId)) {\n          continue;\n        }\n\n        var currentNode = elementsAtPoint[nodeId];\n        elementsAtPointExtended.push(currentNode);\n\n        while (currentNode) {\n          currentNode = currentNode.parentElement;\n\n          if (elementsAtPointExtended.indexOf(currentNode) === -1) {\n            elementsAtPointExtended.push(currentNode);\n          }\n        }\n      }\n\n      var orderedDragOverTargetIds = elementsAtPointExtended // Filter off nodes that arent a hovered DropTargets nodes\n      .filter(function (node) {\n        return dragOverTargetNodes.indexOf(node) > -1;\n      }) // Map back the nodes elements to targetIds\n      .map(function (node) {\n        for (var targetId in _this.targetNodes) {\n          if (node === _this.targetNodes[targetId]) {\n            return targetId;\n          }\n        }\n\n        return undefined;\n      }) // Filter off possible null rows\n      .filter(function (node) {\n        return !!node;\n      }).filter(function (id, index, ids) {\n        return ids.indexOf(id) === index;\n      }); // Invoke hover for drop targets when source node is still over and pointer is outside\n\n      if (enableHoverOutsideTarget) {\n        for (var targetId in _this.targetNodes) {\n          if (_this.targetNodes[targetId] && _this.targetNodes[targetId].contains(sourceNode) && orderedDragOverTargetIds.indexOf(targetId) === -1) {\n            orderedDragOverTargetIds.unshift(targetId);\n            break;\n          }\n        }\n      } // Reverse order because dnd-core reverse it before calling the DropTarget drop methods\n\n\n      orderedDragOverTargetIds.reverse();\n\n      _this.actions.hover(orderedDragOverTargetIds, {\n        clientOffset: clientOffset\n      });\n    };\n\n    this.handleTopMoveEndCapture = function (e) {\n      _this._isScrolling = false;\n      _this.lastTargetTouchFallback = undefined;\n\n      if (!eventShouldEndDrag(e)) {\n        return;\n      }\n\n      if (!_this.monitor.isDragging() || _this.monitor.didDrop()) {\n        _this.moveStartSourceIds = undefined;\n        return;\n      }\n\n      e.preventDefault();\n      _this._mouseClientOffset = {};\n\n      _this.uninstallSourceNodeRemovalObserver();\n\n      _this.actions.drop();\n\n      _this.actions.endDrag();\n    };\n\n    this.handleCancelOnEscape = function (e) {\n      if (e.key === 'Escape' && _this.monitor.isDragging()) {\n        _this._mouseClientOffset = {};\n\n        _this.uninstallSourceNodeRemovalObserver();\n\n        _this.actions.endDrag();\n      }\n    };\n\n    this.options = new OptionsReader(options, context);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.sourceNodes = {};\n    this.sourcePreviewNodes = {};\n    this.sourcePreviewNodeOptions = {};\n    this.targetNodes = {};\n    this.listenerTypes = [];\n    this._mouseClientOffset = {};\n    this._isScrolling = false;\n\n    if (this.options.enableMouseEvents) {\n      this.listenerTypes.push(ListenerType.mouse);\n    }\n\n    if (this.options.enableTouchEvents) {\n      this.listenerTypes.push(ListenerType.touch);\n    }\n\n    if (this.options.enableKeyboardEvents) {\n      this.listenerTypes.push(ListenerType.keyboard);\n    }\n  } // public for test\n\n\n  _createClass(TouchBackend, [{\n    key: \"setup\",\n    value: function setup() {\n      if (!this.window) {\n        return;\n      }\n\n      invariant(!TouchBackend.isSetUp, 'Cannot have two Touch backends at the same time.');\n      TouchBackend.isSetUp = true;\n      this.addEventListener(this.window, 'start', this.getTopMoveStartHandler());\n      this.addEventListener(this.window, 'start', this.handleTopMoveStartCapture, true);\n      this.addEventListener(this.window, 'move', this.handleTopMove);\n      this.addEventListener(this.window, 'move', this.handleTopMoveCapture, true);\n      this.addEventListener(this.window, 'end', this.handleTopMoveEndCapture, true);\n\n      if (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n        this.addEventListener(this.window, 'contextmenu', this.handleTopMoveEndCapture);\n      }\n\n      if (this.options.enableKeyboardEvents) {\n        this.addEventListener(this.window, 'keydown', this.handleCancelOnEscape, true);\n      }\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      if (!this.window) {\n        return;\n      }\n\n      TouchBackend.isSetUp = false;\n      this._mouseClientOffset = {};\n      this.removeEventListener(this.window, 'start', this.handleTopMoveStartCapture, true);\n      this.removeEventListener(this.window, 'start', this.handleTopMoveStart);\n      this.removeEventListener(this.window, 'move', this.handleTopMoveCapture, true);\n      this.removeEventListener(this.window, 'move', this.handleTopMove);\n      this.removeEventListener(this.window, 'end', this.handleTopMoveEndCapture, true);\n\n      if (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n        this.removeEventListener(this.window, 'contextmenu', this.handleTopMoveEndCapture);\n      }\n\n      if (this.options.enableKeyboardEvents) {\n        this.removeEventListener(this.window, 'keydown', this.handleCancelOnEscape, true);\n      }\n\n      this.uninstallSourceNodeRemovalObserver();\n    }\n  }, {\n    key: \"addEventListener\",\n    value: function addEventListener(subject, event, handler, capture) {\n      var options = supportsPassive ? {\n        capture: capture,\n        passive: false\n      } : capture;\n      this.listenerTypes.forEach(function (listenerType) {\n        var evt = eventNames[listenerType][event];\n\n        if (evt) {\n          subject.addEventListener(evt, handler, options);\n        }\n      });\n    }\n  }, {\n    key: \"removeEventListener\",\n    value: function removeEventListener(subject, event, handler, capture) {\n      var options = supportsPassive ? {\n        capture: capture,\n        passive: false\n      } : capture;\n      this.listenerTypes.forEach(function (listenerType) {\n        var evt = eventNames[listenerType][event];\n\n        if (evt) {\n          subject.removeEventListener(evt, handler, options);\n        }\n      });\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node) {\n      var _this2 = this;\n\n      var handleMoveStart = this.handleMoveStart.bind(this, sourceId);\n      this.sourceNodes[sourceId] = node;\n      this.addEventListener(node, 'start', handleMoveStart);\n      return function () {\n        delete _this2.sourceNodes[sourceId];\n\n        _this2.removeEventListener(node, 'start', handleMoveStart);\n      };\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourcePreviewNodeOptions[sourceId] = options;\n      this.sourcePreviewNodes[sourceId] = node;\n      return function () {\n        delete _this3.sourcePreviewNodes[sourceId];\n        delete _this3.sourcePreviewNodeOptions[sourceId];\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      if (!this.document) {\n        return function () {\n          return null;\n        };\n      }\n\n      var handleMove = function handleMove(e) {\n        if (!_this4.document || !_this4.monitor.isDragging()) {\n          return;\n        }\n\n        var coords;\n        /**\n         * Grab the coordinates for the current mouse/touch position\n         */\n\n        switch (e.type) {\n          case eventNames.mouse.move:\n            coords = {\n              x: e.clientX,\n              y: e.clientY\n            };\n            break;\n\n          case eventNames.touch.move:\n            coords = {\n              x: e.touches[0].clientX,\n              y: e.touches[0].clientY\n            };\n            break;\n        }\n        /**\n         * Use the coordinates to grab the element the drag ended on.\n         * If the element is the same as the target node (or any of it's children) then we have hit a drop target and can handle the move.\n         */\n\n\n        var droppedOn = coords != null ? _this4.document.elementFromPoint(coords.x, coords.y) : undefined;\n        var childMatch = droppedOn && node.contains(droppedOn);\n\n        if (droppedOn === node || childMatch) {\n          return _this4.handleMove(e, targetId);\n        }\n      };\n      /**\n       * Attaching the event listener to the body so that touchmove will work while dragging over multiple target elements.\n       */\n\n\n      this.addEventListener(this.document.body, 'move', handleMove);\n      this.targetNodes[targetId] = node;\n      return function () {\n        if (_this4.document) {\n          delete _this4.targetNodes[targetId];\n\n          _this4.removeEventListener(_this4.document.body, 'move', handleMove);\n        }\n      };\n    }\n  }, {\n    key: \"getTopMoveStartHandler\",\n    value: function getTopMoveStartHandler() {\n      if (!this.options.delayTouchStart && !this.options.delayMouseStart) {\n        return this.handleTopMoveStart;\n      }\n\n      return this.handleTopMoveStartDelay;\n    }\n  }, {\n    key: \"installSourceNodeRemovalObserver\",\n    value: function installSourceNodeRemovalObserver(node) {\n      var _this5 = this;\n\n      this.uninstallSourceNodeRemovalObserver();\n      this.draggedSourceNode = node;\n      this.draggedSourceNodeRemovalObserver = new MutationObserver(function () {\n        if (node && !node.parentElement) {\n          _this5.resurrectSourceNode();\n\n          _this5.uninstallSourceNodeRemovalObserver();\n        }\n      });\n\n      if (!node || !node.parentElement) {\n        return;\n      }\n\n      this.draggedSourceNodeRemovalObserver.observe(node.parentElement, {\n        childList: true\n      });\n    }\n  }, {\n    key: \"resurrectSourceNode\",\n    value: function resurrectSourceNode() {\n      if (this.document && this.draggedSourceNode) {\n        this.draggedSourceNode.style.display = 'none';\n        this.draggedSourceNode.removeAttribute('data-reactid');\n        this.document.body.appendChild(this.draggedSourceNode);\n      }\n    }\n  }, {\n    key: \"uninstallSourceNodeRemovalObserver\",\n    value: function uninstallSourceNodeRemovalObserver() {\n      if (this.draggedSourceNodeRemovalObserver) {\n        this.draggedSourceNodeRemovalObserver.disconnect();\n      }\n\n      this.draggedSourceNodeRemovalObserver = undefined;\n      this.draggedSourceNode = undefined;\n    }\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    } // public for test\n\n  }, {\n    key: \"document\",\n    get: function get() {\n      if (this.window) {\n        return this.window.document;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return TouchBackend;\n}();\n\nexport { TouchBackend as default };","export function distance(x1, y1, x2, y2) {\n  return Math.sqrt(Math.pow(Math.abs(x2 - x1), 2) + Math.pow(Math.abs(y2 - y1), 2));\n}\nexport function inAngleRanges(x1, y1, x2, y2, angleRanges) {\n  if (!angleRanges) {\n    return false;\n  }\n\n  var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI + 180;\n\n  for (var i = 0; i < angleRanges.length; ++i) {\n    if ((angleRanges[i].start == null || angle >= angleRanges[i].start) && (angleRanges[i].end == null || angle <= angleRanges[i].end)) {\n      return true;\n    }\n  }\n\n  return false;\n}","import TouchBackend from './TouchBackend';\n\nvar createBackend = function createBackend(manager, context) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  return new TouchBackend(manager, context, options);\n};\n\nexport default createBackend;","export const defaultNoteDateFormat = 'MMM D, LT';\nexport const defaultPrintedNoteDateFormat = 'L LTS';","export const getAnnotationClass = (annotation) => {\n  if (annotation instanceof window.Core.Annotations.CaretAnnotation) {\n    return 'caret';\n  }\n  if (annotation instanceof window.Core.Annotations.CustomAnnotation) {\n    return 'custom';\n  }\n  if (annotation instanceof window.Core.Annotations.EllipseAnnotation) {\n    return 'ellipse';\n  }\n  if (annotation instanceof window.Core.Annotations.FileAttachmentAnnotation) {\n    return 'fileattachment';\n  }\n  if (annotation instanceof window.Core.Annotations.FreeHandAnnotation) {\n    return 'freehand';\n  }\n  if (\n    annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n    annotation.getIntent() === window.Core.Annotations.FreeTextAnnotation.Intent.FreeTextCallout\n  ) {\n    return 'callout';\n  }\n  if (annotation instanceof window.Core.Annotations.FreeTextAnnotation) {\n    return 'freetext';\n  }\n  if (annotation instanceof window.Core.Annotations.LineAnnotation) {\n    return 'line';\n  }\n  if (annotation instanceof window.Core.Annotations.Link) {\n    return 'other';\n  }\n  if (annotation instanceof window.Core.Annotations.PolygonAnnotation) {\n    return 'polygon';\n  }\n  if (annotation instanceof window.Core.Annotations.PolylineAnnotation) {\n    return 'polyline';\n  }\n  if (annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n    return 'rectangle';\n  }\n  if (annotation instanceof window.Core.Annotations.RedactionAnnotation) {\n    return 'redact';\n  }\n  if (annotation instanceof window.Core.Annotations.SignatureWidgetAnnotation) {\n    return 'signature';\n  }\n  if (annotation instanceof window.Core.Annotations.StampAnnotation) {\n    return 'stamp';\n  }\n  if (annotation instanceof window.Core.Annotations.StickyAnnotation) {\n    return 'stickyNote';\n  }\n  if (annotation instanceof window.Core.Annotations.TextHighlightAnnotation) {\n    return 'highlight';\n  }\n  if (annotation instanceof window.Core.Annotations.TextStrikeoutAnnotation) {\n    return 'strikeout';\n  }\n  if (annotation instanceof window.Core.Annotations.TextUnderlineAnnotation) {\n    return 'underline';\n  }\n  if (annotation instanceof window.Core.Annotations.TextSquigglyAnnotation) {\n    return 'squiggly';\n  }\n  if (annotation instanceof window.Core.Annotations.Model3DAnnotation) {\n    return '3D';\n  }\n\n  return 'other';\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 { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport Button from 'components/Button';\n\nconst mapStateToProps = (state, { isNotClickableSelector, className }) => ({\n  className: classNames({\n    ActionButton: true,\n    [className]: !!className,\n  }),\n  disabled: isNotClickableSelector && isNotClickableSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: ownProps.shouldPassActiveDocumentViewerKeyToOnClickHandler ? ownProps.onClick : () => {\n    ownProps.onClick(dispatch);\n  },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Button);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;","import actions from 'actions';\nimport classNames from 'classnames';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport { isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Swipeable } from 'react-swipeable';\nimport selectors from 'selectors';\nimport useArrowFocus from '../../hooks/useArrowFocus';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\nimport './FlyoutMenu.scss';\n\nconst MENUS = [\n  DataElements.MENU_OVERLAY,\n  'groupOverlay',\n  DataElements.VIEW_CONTROLS_OVERLAY,\n  'searchOverlay',\n  'signatureOverlay',\n  DataElements.ZOOM_OVERLAY,\n  'zoomOverlay1',\n  'zoomOverlay2',\n  'redactionOverlay',\n  'toolStylePopup',\n  DataElements.PAGE_MANIPULATION_OVERLAY,\n  DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL,\n  'tabMenu',\n];\n\nconst TRIGGERS = [\n  DataElements.MENU_OVERLAY_BUTTON,\n  DataElements.VIEW_CONTROLS_OVERLAY_BUTTON,\n  DataElements.ZOOM_OVERLAY_BUTTON,\n  'zoomOverlayButton1',\n  'zoomOverlayButton2',\n  DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON,\n  DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER,\n  'tabTrigger',\n];\n\nconst propTypes = {\n  /** Menu must be one of the available menus. */\n  menu: PropTypes.oneOf(MENUS).isRequired,\n  /** The button that triggered the menu. */\n  trigger: PropTypes.oneOf(TRIGGERS).isRequired,\n  /** The menu content. */\n  children: PropTypes.node.isRequired,\n  /** Fired when the menu is closed. */\n  onClose: PropTypes.func,\n  /** Accessibility */\n  ariaLabel: PropTypes.string,\n};\n\nconst viewerHeight = window.isApryseWebViewerWebComponent ? getRootNode()?.host.clientHeight : window.innerHeight;\n\nfunction FlyoutMenu({ menu, trigger, onClose, children, ariaLabel }) {\n  const dispatch = useDispatch();\n\n  const allOtherMenus = useMemo(() => MENUS.filter((m) => m !== menu), [menu]);\n\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, menu));\n  const isOpen = useSelector((state) => selectors.isElementOpen(state, menu));\n\n  const isInDesktopOnlyMode = useSelector((state) => selectors.isInDesktopOnlyMode(state));\n  const pageManipulationOverlayAlternativePosition = useSelector((state) => selectors.getPageManipulationOverlayAlternativePosition(state),\n  );\n\n  const closeMenu = useCallback(() => {\n    dispatch(actions.closeElements([menu]));\n    onClose && onClose();\n  }, [dispatch, menu, onClose]);\n\n  const overlayRef = useRef(null);\n  useArrowFocus(!isDisabled && isOpen, closeMenu, overlayRef);\n\n  const onClickOutside = useCallback(\n    (e) => {\n      const menuButton = getRootNode().querySelector(`[data-element=\"${trigger}\"]`);\n      const clickedMenuButton = menuButton?.contains(e.target);\n      if (!clickedMenuButton) {\n        closeMenu();\n      }\n    },\n    [closeMenu, trigger],\n  );\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const [position, setPosition] = useState(() => ({ left: 0, right: 'auto', top: 'auto' }));\n  const isMobile = isMobileSize();\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  const getAlternativePosition = () => {\n    const alternativePosition = pageManipulationOverlayAlternativePosition;\n    const verticalGap = isMobile && isTabletAndMobile ? 14 : 6;\n    const clickTop = alternativePosition.top;\n    let top = clickTop + verticalGap;\n    if (clickTop > 100) {\n      const flyoutMenuHeight = overlayRef.current.clientHeight;\n      /**\n       * if the right-click click was not on the top of the page, we should check if the popup will fit on the\n       * the viewport and, if not, can adjust its position to \"pass\" the click position, otherwise the popup should always be below them\n       */\n      if (clickTop + flyoutMenuHeight > viewerHeight) {\n        const calculatedTop = viewerHeight - flyoutMenuHeight - verticalGap;\n        top = calculatedTop > 0 ? calculatedTop : 0;\n        alternativePosition.top = top;\n      }\n    }\n\n    return alternativePosition;\n  };\n\n  // When open: close others, position, and listen for resizes to position.\n  // Uselayouteffect prevents \"jumpy\" behaviour from opening in old position and immediately repositioning the flyout\n  useLayoutEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(allOtherMenus));\n\n      const onResize = () => {\n        let overlayAlternativePosition;\n\n        if (trigger === DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON && pageManipulationOverlayAlternativePosition) {\n          overlayAlternativePosition = getAlternativePosition();\n        } else {\n          overlayAlternativePosition = getOverlayPositionBasedOn(trigger, overlayRef, isMobile && isTabletAndMobile);\n          overlayAlternativePosition.maxHeight = viewerHeight - overlayAlternativePosition.top;\n        }\n        setPosition(overlayAlternativePosition);\n      };\n      onResize();\n\n      window.addEventListener('resize', onResize);\n      return () => window.removeEventListener('resize', onResize);\n    }\n  }, [allOtherMenus, dispatch, isOpen, isTabletAndMobile, trigger, isMobile]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const overlayClass = classNames('Overlay', 'FlyoutMenu', {\n    mobile: isMobile && !isInDesktopOnlyMode,\n    closed: !isOpen,\n  });\n\n  return (\n    <Swipeable onSwipedUp={closeMenu} onSwipedDown={closeMenu} preventDefaultTouchmoveEvent>\n      <div\n        className={overlayClass}\n        data-element={menu}\n        style={!isMobile || isInDesktopOnlyMode ? position : undefined}\n        ref={overlayRef}\n        role=\"listbox\"\n        aria-label={ariaLabel}\n      >\n        {isMobile && !isInDesktopOnlyMode && <div className=\"swipe-indicator\" />}\n        {children}\n      </div>\n    </Swipeable>\n  );\n}\n\nFlyoutMenu.propTypes = propTypes;\nexport default FlyoutMenu;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return un$StartsWith\n      ? un$StartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","/*!\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","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","module.exports = {};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n  if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","module.exports = {};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\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++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n\n  var parts = path.split(/\\/+/);\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","export default '1, 3, 5-10';","export function isKeyboardNav() {\n  return document.documentElement.getAttribute('data-tabbing') === 'true';\n}\n\nexport function findFocusableIndex(elements, toFind) {\n  let index = -1;\n  if (!toFind) {\n    return index;\n  }\n  for (let i = 0; i < elements.length; i++) {\n    if (elements[i] === toFind) {\n      index = i;\n      break;\n    }\n  }\n  return index;\n}\n\nexport function escapePressListener(event, onEscapeFunction) {\n  if (event.key === 'Escape') {\n    onEscapeFunction(event);\n  }\n}\n","import core from 'core';\n\nexport default (customInput, pageLabels, totalPages = core.getTotalPages(), onError = () => {}) => {\n  // By default we use total pages of loaded doc. But we could also use this for a doc\n  // that is not loaded (like in page replacement) so we want the option to pass it as a param\n\n  const pagesToPrint = [];\n\n  // no input, assume every page\n  if (!customInput) {\n    for (let i = 1; i <= totalPages; i++) {\n      pagesToPrint.push(i);\n    }\n    return pagesToPrint;\n  }\n\n  const pageGroups = customInput.split(',');\n  pageGroups.forEach((pageGroup) => {\n    const range = pageGroup.split('-');\n    const isSinglePage = range.length === 1;\n    const isRangeOfPages = range.length === 2;\n\n    if (isSinglePage) {\n      const page = getPageNumber(range[0], pageLabels, onError);\n      pagesToPrint.push(page);\n    } else if (isRangeOfPages) {\n      addRangeOfPagesTo(pagesToPrint, range, pageLabels, onError);\n    }\n  });\n\n  return pagesToPrint\n    .filter((pageNumber, index, pagesToPrint) => {\n      const isUnique = pagesToPrint.indexOf(pageNumber) === index;\n      const isValidPageNumber = pageNumber > 0 && pageNumber <= totalPages;\n      return isUnique && isValidPageNumber;\n    })\n    .sort((a, b) => a - b);\n};\n\nconst addRangeOfPagesTo = (pagesToPrint, range, pageLabels, onError) => {\n  const start = getPageNumber(range[0], pageLabels, onError);\n  let end;\n\n  if (range[1] === '') {\n    // range like 4- means page 4 to the end of the document\n    end = core.getTotalPages();\n  } else {\n    end = getPageNumber(range[1], pageLabels, onError);\n  }\n\n  for (let i = start; i <= end; i++) {\n    pagesToPrint.push(i);\n  }\n};\n\nconst getPageNumber = (character, pageLabels, onError) => {\n  const pageIndex = pageLabels.indexOf(character);\n  let pageNumber;\n\n  if (pageIndex === -1) {\n    onError && onError(character);\n    console.warn(`${character} is not a valid page label`);\n  } else {\n    pageNumber = pageIndex + 1;\n  }\n\n  return pageNumber;\n};\n","import React from 'react';\nimport './Spinner.scss';\n\nconst Spinner = ({ height = '50px', width = '54px' }) => {\n  const spinnerStyle = {\n    height,\n    width,\n  };\n\n  return (\n    <div className=\"spinner\" style={spinnerStyle}></div>\n  );\n};\n\nexport default Spinner;","import Spinner from './Spinner';\n\nexport default Spinner;\n","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\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 { isAndroid, isChrome } from 'helpers/device';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\nimport { panelMinWidth, RESIZE_BAR_WIDTH } from 'constants/panel';\nimport { PLACEMENT, POSITION, ITEM_TYPE } from 'constants/customizationVariables';\nimport DataElements from 'constants/dataElement';\n\n// viewer\nexport const getActiveFlyout = (state) => state.viewer.activeFlyout;\nexport const getFlyoutPosition = (state) => state.viewer.flyoutPosition;\nexport const getFlyoutMap = (state) => state.viewer.flyoutMap;\nexport const getFlyout = (state, dataElement) => state.viewer.flyoutMap[dataElement];\nexport const getFlyoutToggleElement = (state) => state.viewer.flyoutToggleElement;\nexport const getInitialsOffset = (state) => state.viewer.initalsOffset;\nexport const isSavedSignaturesTabEnabled = (state) => state.viewer.savedSignatureTabEnabled;\nexport const getSyncViewer = (state) => state.viewer.syncViewer;\nexport const isCompareStarted = (state) => state.viewer.isCompareStarted;\nexport const isComparisonDisabled = (state) => state.advanced.disableMultiViewerComparison;\nexport const getIsComparisonOverlayEnabled = (state) => state.viewer.isComparisonOverlayEnabled;\nexport const getActiveDocumentViewerKey = (state) => (state.viewer.isMultiViewerMode && state.viewer.activeDocumentViewerKey ? state.viewer.activeDocumentViewerKey : 1);\nexport const isMultiViewerMode = (state) => state.viewer.isMultiViewerMode;\nexport const isMultiViewerReady = (state) => state.viewer.isMultiViewerReady;\nexport const getCustomFlxPanels = (state, location) => {\n  if (location) {\n    return state.viewer.customFlxPanels.filter((item) => item.location === location);\n  }\n  return state.viewer.customFlxPanels;\n};\nexport const shouldShowApplyCropWarning = (state) => state.viewer.shouldShowApplyCropWarning;\nexport const shouldShowApplySnippingWarning = (state) => state.viewer.shouldShowApplySnippingWarning;\nexport const getPresetCropDimensions = (state) => state.viewer.presetCropDimensions;\nexport const getPresetNewPageDimensions = (state) => state.viewer.presetNewPageDimensions;\nexport const getDateTimeFormats = (state) => state.viewer.dateTimeFormats;\nexport const getThumbnailSelectionMode = (state) => state.viewer.thumbnailSelectionMode;\nexport const getFonts = (state) => state.viewer.fonts;\nexport const getTabs = (state) => state.viewer.tabs;\nexport const getActiveTab = (state) => state.viewer.activeTab;\nexport const getIsMultiTab = (state) => state.viewer.isMultiTab;\nexport const getTabManager = (state) => state.viewer.TabManager;\nexport const getIsHighContrastMode = (state) => state.viewer.highContrastMode;\nexport const getLastPickedToolForGroup = (state, group) => state.viewer.lastPickedToolForGroup[group];\nexport const getStandardStamps = (state) => state.viewer.standardStamps;\nexport const getCustomStamps = (state) => state.viewer.customStamps;\nexport const getSelectedStampIndex = (state) => state.viewer.selectedStampIndex;\nexport const getSelectedStamp = (state) => {\n  const standardStamps = getStandardStamps(state);\n  const customStamps = getCustomStamps(state);\n  const index = getSelectedStampIndex(state);\n  let selectedStamp = standardStamps[index];\n  // selected stamp is not found in standard stamps, search dynamic stamps\n  if (!selectedStamp && !!customStamps.length) {\n    selectedStamp = customStamps[index - standardStamps.length];\n  }\n  return selectedStamp;\n};\nexport const getSavedSignatures = (state) => state.viewer.savedSignatures;\nexport const getDisplayedSignatures = (state) => state.viewer.savedSignatures.filter(state.viewer.displayedSignaturesFilterFunction);\nexport const getSelectedDisplayedSignatureIndex = (state) => state.viewer.selectedDisplayedSignatureIndex;\nexport const getSelectedDisplayedSignature = (state) => getDisplayedSignatures(state)[getSelectedDisplayedSignatureIndex(state)];\nexport const getDisplayedSignaturesFilterFunction = (state) => state.viewer.displayedSignaturesFilterFunction;\nexport const getSignatureMode = (state) => state.viewer.signatureMode;\nexport const getSavedInitials = (state) => state.viewer.savedInitials;\nexport const getSelectedDisplayedInitialsIndex = (state) => state.viewer.selectedDisplayedInitialsIndex;\nexport const getIsInitialsModeEnabled = (state) => state.viewer.isInitialsModeEnabled;\nexport const getDisplayedInitial = (state) => state.viewer.savedInitials[state.viewer.selectedDisplayedInitialsIndex];\n\nexport const getAutoFocusNoteOnAnnotationSelection = (state) => state.viewer.autoFocusNoteOnAnnotationSelection;\nexport const getNotesInLeftPanel = (state) => state.viewer.notesInLeftPanel;\nexport const getLeftPanelWidth = (state) => state.viewer.panelWidths.leftPanel;\nexport const getSearchPanelWidth = (state) => state.viewer.panelWidths.searchPanel;\nexport const getNotesPanelWidth = (state) => state.viewer.panelWidths.notesPanel;\n\nexport const getDeleteScaleInfo = (state) => state.viewer.deleteScale;\n\nexport const getRedactionPanelWidth = (state) => state.viewer.panelWidths.redactionPanel;\n\nexport const getWv3dPropertiesPanelWidth = (state) => state.viewer.panelWidths.wv3dPropertiesPanel;\n\nexport const getComparePanelWidth = (state) => state.viewer.panelWidths.comparePanel;\n\nexport const getTextEditingPanelWidth = (state) => state.viewer.panelWidths.textEditingPanel;\n\nexport const getWatermarkPanelWidth = (state) => state.viewer.panelWidths.watermarkPanel;\n\nexport const getLeftPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.leftPanel + RESIZE_BAR_WIDTH;\nexport const getSearchPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.searchPanel + RESIZE_BAR_WIDTH;\nexport const getNotesPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.notesPanel + RESIZE_BAR_WIDTH;\nexport const getComparePanelWidthWithResizeBar = (state) => state.viewer.panelWidths.comparePanel + RESIZE_BAR_WIDTH;\nexport const getDocumentContentContainerWidthStyle = (state) => {\n  const notesPanelWidth = getNotesPanelWidthWithResizeBar(state);\n  const searchPanelWidth = getSearchPanelWidthWithResizeBar(state);\n  const leftPanelWidth = getLeftPanelWidthWithResizeBar(state);\n  const watermarkPanelWidth = getWatermarkPanelWidth(state);\n  const textEditingPanelWidth = getTextEditingPanelWidth(state);\n  const wv3dPropertiesPanelWidth = getWv3dPropertiesPanelWidth(state);\n  const comparePanelWidth = getComparePanelWidthWithResizeBar(state);\n  const redactionPanelWidth = getRedactionPanelWidth(state);\n  const notesInLeftPanel = getNotesInLeftPanel(state);\n\n  const isLeftPanelOpen = isElementOpen(state, 'leftPanel');\n  const isNotesPanelOpen = isElementOpen(state, 'notesPanel');\n  const isSearchPanelOpen = isElementOpen(state, 'searchPanel');\n  const isRedactionPanelOpen = isElementOpen(state, 'redactionPanel');\n  const isTextEditingPanelOpen = isElementOpen(state, 'textEditingPanel');\n  const isWv3dPropertiesPanelOpen = isElementOpen(state, 'wv3dPropertiesPanel');\n  const isComparePanelOpen = isElementOpen(state, 'comparePanel');\n  const isWatermarkPanelOpen = isElementOpen(state, 'watermarkPanel');\n\n  const isFlxPanelOpenLeft = isCustomFlxPanelOpen(state, 'left');\n  const isFlxPanelOpenRight = isCustomFlxPanelOpen(state, 'right');\n\n  const spaceTakenUpByPanels =\n    0 +\n    (isLeftPanelOpen ? leftPanelWidth : 0) +\n    (isNotesPanelOpen && !notesInLeftPanel ? notesPanelWidth : 0) +\n    (isSearchPanelOpen ? searchPanelWidth : 0) +\n    (isRedactionPanelOpen ? redactionPanelWidth : 0) +\n    (isTextEditingPanelOpen ? textEditingPanelWidth : 0) +\n    (isWv3dPropertiesPanelOpen ? wv3dPropertiesPanelWidth : 0) +\n    (isComparePanelOpen ? comparePanelWidth : 0) +\n    (isWatermarkPanelOpen ? watermarkPanelWidth : 0) +\n    (isFlxPanelOpenLeft ? panelMinWidth : 0) +\n    (isFlxPanelOpenRight ? panelMinWidth : 0);\n\n\n  // Do not count headers without items\n  const activeRightHeaderWidth = getActiveRightHeaderWidth(state);\n  const activeLeftHeaderWidth = getActiveLeftHeaderWidth(state);\n  const spaceTakenUpByHeaders = activeLeftHeaderWidth + activeRightHeaderWidth;\n  return `calc(100% - ${spaceTakenUpByPanels + spaceTakenUpByHeaders}px)`;\n};\n\nexport const isCustomFlxPanelOpen = (state, location) => {\n  let customFlxPanels = state.viewer.customFlxPanels;\n\n  if (location) {\n    customFlxPanels = state.viewer.customFlxPanels.filter((item) => item.location === location);\n  }\n\n  return customFlxPanels\n    .map((item) => item.dataElement)\n    .some((elName) => isElementOpen(state, elName) === true);\n};\n\nexport const getDocumentContainerLeftMargin = (state) => {\n  return 0 +\n    (isElementOpen(state, 'leftPanel') ? getLeftPanelWidthWithResizeBar(state) : 0) +\n    (isCustomFlxPanelOpen(state, 'left') ? panelMinWidth : 0);\n};\n\nexport const getCalibrationInfo = (state) => state.viewer.calibrationInfo;\nexport const getIsAddingNewScale = (state) => state.viewer.isAddingNewScale;\n\nexport const getMeasurementScalePreset = (state) => state.viewer.measurementScalePreset;\nexport const getIsMultipleScalesMode = (state) => state.viewer.isMultipleScalesMode;\nexport const getIsNotesPanelMultiSelectEnabled = (state) => state.viewer.isNotesPanelMultiSelectEnabled;\n\nexport const getDocumentContainerWidth = (state) => state.viewer.documentContainerWidth;\nexport const getDocumentContainerHeight = (state) => state.viewer.documentContainerHeight;\n\nexport const isElementDisabled = (state, dataElement) => state.viewer?.disabledElements[dataElement]?.disabled;\n\nexport const isElementOpen = (state, dataElement) => state.viewer?.openElements[dataElement] && !state.viewer?.disabledElements[dataElement]?.disabled;\n\nexport const isElementHidden = (state, dataElement) => state.viewer?.hiddenElements[dataElement];\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  const dataElements = Object.values(toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every((dataElement) => isElementDisabled(state, dataElement));\n};\n\nexport const getToolbarHeaders = (state) => state.viewer.headers;\n\nexport const getSelectedScale = (state) => state.viewer.selectedScale;\n\nexport const getCustomHeadersAdditionalProperties = (state) => {\n  return state.viewer.customHeadersAdditionalProperties;\n};\n\nconst getToolbarGroupDataElements = (state) => {\n  return Object.keys(state.viewer.headers).filter((key) => key.includes('toolbarGroup-'));\n};\n\nexport const getEnabledToolbarGroups = (state) => {\n  const toolbarGroupDataElements = getToolbarGroupDataElements(state);\n  return toolbarGroupDataElements.filter((dataElement) => {\n    // The items will come from 'children' if it is a ToolbarGroup created by the API createTool\n    const headerItems = state.viewer.headers[dataElement];\n    const flattenHeaderItems = (dataItems) => {\n      return dataItems.reduce((total, item) => {\n        if (item.children) {\n          total.push(...flattenHeaderItems(item.children));\n        } else {\n          total.push(item);\n        }\n        return total;\n      }, []);\n    };\n\n    const itemsToCheck = flattenHeaderItems(headerItems);\n    const toolGroupButtons = itemsToCheck.filter(({ dataElement }) => {\n      return dataElement && dataElement.includes('ToolGroupButton');\n    });\n    const isEveryToolGroupButtonDisabled =\n      !dataElement.includes('toolbarGroup-View') &&\n      toolGroupButtons.every(({ dataElement: toolGroupDataElement }) => {\n        return isElementDisabled(state, toolGroupDataElement);\n      });\n    return !isElementDisabled(state, `${dataElement}`) && !isEveryToolGroupButtonDisabled;\n  });\n};\n\nexport const getCurrentToolbarGroup = (state) => state.viewer.toolbarGroup;\n\nexport const getCurrentGroupedItems = (state) => state.viewer.activeGroupedItems;\n\nexport const getFixedGroupedItems = (state) => state.viewer.fixedGroupedItems;\n\nexport const getActiveHeaders = (state) => {\n  return state.viewer.modularHeaders?.filter((header) => {\n    return header.items?.length && header.items.filter((item) => {\n      const itemProps = item.props || item;\n      const hasActiveGroupedItems = state.viewer.activeGroupedItems?.length;\n      const hasFixedGroupedItems = state.viewer.fixedGroupedItems?.length;\n      if (itemProps.type === ITEM_TYPE.GROUPED_ITEMS && (hasActiveGroupedItems || hasFixedGroupedItems)) {\n        return state.viewer.activeGroupedItems.includes(itemProps.dataElement) ||\n          state.viewer.fixedGroupedItems.includes(itemProps.dataElement);\n      }\n      return true;\n    });\n  });\n};\n\nexport const getActiveTheme = (state) => state.viewer.activeTheme;\n\nexport const getTimezone = (state) => state.viewer.timezone;\n\nexport const getDefaultHeaderItems = (state) => {\n  return state.viewer.headers.default;\n};\n\nexport const getModularHeaderList = (state) => state.viewer.modularHeaders;\n\nexport const getModularHeader = (state, dataElement) => {\n  return state.viewer.modularHeaders.find((header) => header.dataElement === dataElement);\n};\n\nexport const getBottomHeaders = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.BOTTOM);\n};\n\nexport const getBottomHeadersHeight = (state) => {\n  // Floating headers are excluded from the bottom headers height calculation\n  // this is because they have no bearing on the height of the panels, as the float besides them\n  const bottomHeaders = getBottomHeaders(state)\n    .filter((header) => !header.float);\n\n  const sum = bottomHeaders.reduce((accumulator, current) => {\n    if (current.getDimensionTotal) {\n      return accumulator + current.getDimensionTotal();\n    }\n    return 0;\n  }, 0);\n\n  return sum + (bottomHeaders.length * state.viewer.modularHeadersHeight.bottomHeaders);\n};\n\nexport const getTopHeaders = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.TOP);\n};\n\nexport const getRightHeader = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.RIGHT);\n};\n\nexport const getLeftHeader = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.LEFT);\n};\n\nexport const getTopHeadersHeight = (state) => {\n  const topHeaders = getTopHeaders(state);\n  // Dont inclued hidden ones. Refactor this.\n  const topHeadersQuantity = topHeaders.reduce((accumulator, currentHeader) => {\n    const { autoHide } = currentHeader;\n    if (autoHide && !autoHide) {\n      return accumulator + 1;\n    }\n    if (currentHeader.items && !currentHeader.items.length) {\n      return accumulator;\n    }\n\n    const { float } = currentHeader;\n    if (float) {\n      // Floating headers are excluded from the headers height calculation\n      // this is because they have no bearing on the height of the panels, as the float besides them\n      return accumulator;\n    }\n\n    return accumulator + 1;\n  }, 0);\n  return topHeadersQuantity * state.viewer.modularHeadersHeight.topHeaders;\n};\n\n\nexport const getRightHeaderWidth = (state) => state.viewer.modularHeadersWidth.rightHeader;\n\nexport const getLeftHeaderWidth = (state) => state.viewer.modularHeadersWidth.leftHeader;\n\nexport const getActiveLeftHeaderWidth = (state) => {\n  const activeHeaders = getActiveHeaders(state);\n  const isLeftHeaderActive = activeHeaders?.some((header) => header.placement === PLACEMENT.LEFT);\n  return isLeftHeaderActive ? getLeftHeaderWidth(state) : 0;\n};\n\nexport const getActiveRightHeaderWidth = (state) => {\n  const activeHeaders = getActiveHeaders(state);\n  const isRightHeaderActive = activeHeaders?.some((header) => header.placement === PLACEMENT.RIGHT);\n  return isRightHeaderActive ? getRightHeaderWidth(state) : 0;\n};\n\nexport const getTopFloatingContainerHeight = (state) => state.viewer.floatingContainersDimensions.topFloatingContainerHeight;\n\nexport const getBottomFloatingContainerHeight = (state) => state.viewer.floatingContainersDimensions.bottomFloatingContainerHeight;\n\nexport const getTopStartFloatingHeaders = (state) => {\n  return getTopHeaders(state).filter((header) => header.position === POSITION.START && header.float);\n};\n\nexport const getBottomStartFloatingHeaders = (state) => {\n  return getBottomHeaders(state).filter((header) => header.position === POSITION.START && header.float);\n};\n\nexport const getTopEndFloatingHeaders = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.TOP && header.position === POSITION.END && header.float);\n};\n\nexport const getBottomEndFloatingHeaders = (state) => {\n  return state.viewer.modularHeaders.filter((header) => header.placement === PLACEMENT.BOTTOM && header.position === POSITION.END && header.float);\n};\n\nexport const getActiveHeaderItems = (state) => {\n  return state.viewer.headers[state.viewer.activeHeaderGroup];\n};\n\nexport const getDisabledElementPriority = (state, dataElement) => state.viewer.disabledElements[dataElement]?.priority;\n\nexport const getToolsHeaderItems = (state) => {\n  const toolbarGroup = getCurrentToolbarGroup(state);\n  return state.viewer.headers[toolbarGroup] || [];\n};\n\nexport const getToolbarGroupItems = (toolbarGroup) => (state) => {\n  return state.viewer.headers[toolbarGroup];\n};\n\nexport const getToolButtonObjects = (state) => {\n  return state.viewer.toolButtonObjects;\n};\n\nexport const isToolGroupReorderingEnabled = (state) => {\n  return state.viewer.enableToolGroupReordering;\n};\n\nexport const isNoteSubmissionWithEnterEnabled = (state) => {\n  return state.viewer.enableNoteSubmissionWithEnter;\n};\n\nexport const isNotesPanelTextCollapsingEnabled = (state) => {\n  return state.viewer.isNotesPanelTextCollapsingEnabled;\n};\n\nexport const isNotesPanelRepliesCollapsingEnabled = (state) => {\n  return state.viewer.isNotesPanelRepliesCollapsingEnabled;\n};\n\nexport const isCommentThreadExpansionEnabled = (state) => {\n  return state.viewer.isCommentThreadExpansionEnabled;\n};\n\nexport const getActiveToolNamesForActiveToolGroup = (state) => {\n  const { activeToolGroup } = state.viewer;\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter((toolName) => {\n    const toolButtonObject = toolButtonObjects[toolName];\n    const { group, dataElement } = toolButtonObject;\n    return group === activeToolGroup && !isElementDisabled(state, dataElement);\n  });\n};\n\nexport const getToolButtonDataElements = (state, toolNames) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return toolNames.map((toolName) => toolButtonObjects[toolName]?.dataElement).filter(Boolean);\n};\n\nexport const getToolButtonObject = (state, toolName) => getToolButtonObjects(state)[toolName];\n\nexport const getToolButtonDataElement = (state, toolName) => getToolButtonObject(state, toolName)?.dataElement;\n\nexport const getToolNamesByGroup = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter((name) => toolButtonObjects[name].group === toolGroup);\n};\n\nexport const getToolNameByDataElement = (state, dataElement) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).find((name) => toolButtonObjects[name].dataElement === dataElement);\n};\n\nexport const getActiveToolName = (state) => state.viewer.activeToolName;\n\nexport const getActiveToolStyles = (state) => state.viewer.activeToolStyles;\n\nexport const getCustomColor = (state) => state.viewer.customColor;\n\nexport const getCustomColors = (state) => state.viewer.customColors;\n\nexport const getActiveLeftPanel = (state) => state.viewer.activeLeftPanel;\n\nexport const getActiveToolGroup = (state) => state.viewer.activeToolGroup;\n\nexport const getNotePopupId = (state) => state.viewer.notePopupId;\n\nexport const getFitMode = (state) => state.viewer.fitMode;\n\nexport const getZoom = (state, documentViewerKey = 1) => state.viewer.zoomLevels[documentViewerKey];\n\nexport const getDisplayMode = (state) => state.viewer.displayMode;\n\nexport const getCurrentPage = (state) => state.viewer.currentPage;\n\nexport const getSortStrategy = (state) => state.viewer.sortStrategy;\n\nexport const getRotation = (state) => state.viewer.rotation;\n\nexport const getNoteDateFormat = (state) => state.viewer.noteDateFormat || defaultNoteDateFormat;\n\nexport const getPrintedNoteDateFormat = (state) => state.viewer.printedNoteDateFormat || defaultPrintedNoteDateFormat;\n\nexport const isFullScreen = (state) => state.viewer.isFullScreen;\n\nexport const doesDocumentAutoLoad = (state) => state.viewer.doesAutoLoad;\n\nexport const isDocumentReadOnly = (state) => state.viewer.isReadOnly;\n\nexport const getCustomPanels = (state) => state.viewer.customPanels;\n\nexport const getCustomModals = (state) => state.viewer.customModals;\n\nexport const getPageLabels = (state) => state.viewer.pageLabels;\n\nexport const getSelectedThumbnailPageIndexes = (state) => state.viewer.selectedThumbnailPageIndexes;\n\nexport const getShiftKeyThumbnailPivotIndex = (state) => state.viewer.shiftKeyThumbnailPivotIndex;\n\nexport const getDisabledCustomPanelTabs = (state) => state.viewer.customPanels.reduce((disabledTabs, { tab }) => {\n  if (state.viewer.disabledElements[tab.dataElement]?.disabled) {\n    disabledTabs.push(tab.dataElement);\n  }\n  return disabledTabs;\n}, []);\n\nexport const isEmbedPrintSupported = (state) => isChrome && !isAndroid && state.viewer.useEmbeddedPrint;\n\nexport const isOutlineControlVisible = (state) => state.viewer.outlineControlVisibility;\n\nexport const shouldAutoExpandOutlines = (state) => state.viewer.autoExpandOutlines;\n\nexport const isAnnotationNumberingEnabled = (state) => {\n  return state.viewer.isAnnotationNumberingEnabled;\n};\n\nexport const isBookmarkIconShortcutVisible = (state) => state.viewer.bookmarkIconShortcutVisibility;\n\nexport const getColorMap = (state) => state.viewer.colorMap;\n\nexport const getCursorOverlayData = (state) => state.viewer.cursorOverlay;\n\nexport const getOpenElements = (state) => state.viewer.openElements;\n\nexport const getDisabledElements = (state) => state.viewer.disabledElements;\n\nexport const getcurrentStyleTab = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.currentStyleTab;\n\nexport const getIconColor = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.iconColor;\n\nexport const getCustomNoteFilter = (state) => state.viewer.customNoteFilter;\n\nexport const getInlineCommentFilter = (state) => state.viewer.inlineCommentFilter;\n\nexport const getIsReplyDisabled = (state) => state.viewer.isReplyDisabledFunc;\n\nexport const getZoomList = (state) => state.viewer.zoomList;\n\nexport const getMeasurementUnits = (state) => state.viewer.measurementUnits;\n\nexport const getIsNoteEditing = (state) => state.viewer.isNoteEditing;\n\nexport const getMaxSignaturesCount = (state) => state.viewer.maxSignaturesCount;\n\nexport const getUserData = (state) => state.viewer.userData;\n\nexport const getIsMentionEnabled = (state) => !!state.viewer.userData;\n\nexport const getSignatureFonts = (state) => state.viewer.signatureFonts;\n\nexport const getSelectedTab = (state, id) => state.viewer.tab[id];\n\nexport const getCustomElementOverrides = (state, dataElement = '') => state.viewer.customElementOverrides[dataElement];\n\nexport const getPopupItems = (state, popupDataElement) => state.viewer[popupDataElement] || [];\n\nexport const getMenuOverlayItems = (state) => state.viewer.menuOverlay;\n\nexport const getIsThumbnailMergingEnabled = (state) => state.viewer.isThumbnailMerging;\n\nexport const getIsThumbnailReorderingEnabled = (state) => state.viewer.isThumbnailReordering;\n\nexport const isThumbnailMultiselectEnabled = (state) => state.viewer.isThumbnailMultiselect;\n\nexport const getIsMultipleViewerMerging = (state) => state.viewer.isMultipleViewerMerging;\n\nexport const getEnableNotesPanelVirtualizedList = (state) => state.viewer.enableNotesPanelVirtualizedList;\n\nexport const notesShowLastUpdatedDate = (state) => state.viewer.notesShowLastUpdatedDate;\n\nexport const getAllowPageNavigation = (state) => state.viewer.allowPageNavigation;\n\nexport const getCustomMeasurementOverlay = (state) => state.viewer.customMeasurementOverlay;\n\nexport const getAnnotationContentOverlayHandler = (state) => state.viewer.annotationContentOverlayHandler;\n\nexport const getEnableMouseWheelZoom = (state) => state.viewer.enableMouseWheelZoom;\n\nexport const isReaderMode = (state) => state.viewer.isReaderMode;\n\nexport const getCertificates = (state) => state.digitalSignatureValidation.certificates;\n\nexport const getTrustLists = (state) => state.digitalSignatureValidation.trustLists;\n\nexport const getValidationModalWidgetName = (state) => state.digitalSignatureValidation.validationModalWidgetName;\n\nexport const getVerificationResult = (state, fieldName) => state.digitalSignatureValidation.verificationResult[fieldName] || {};\n\nexport const getIsRevocationCheckingEnabled = (state) => state.digitalSignatureValidation.isRevocationCheckingEnabled;\n\nexport const getRevocationProxyPrefix = (state) => state.digitalSignatureValidation.revocationProxyPrefix;\n\nexport const isThumbnailSelectingPages = (state) => state.viewer.thumbnailSelectingPages;\n\nexport const getWatermarkModalOptions = (state) => state.viewer.watermarkModalOptions;\n\nexport const getZoomStepFactors = (state) => state.viewer.zoomStepFactors;\n\n// warning message\nexport const getWarningMessage = (state) => state.viewer.warning?.message || '';\n\nexport const getWarningTitle = (state) => state.viewer.warning?.title || '';\n\nexport const getWarningConfirmEvent = (state) => state.viewer.warning?.onConfirm;\n\nexport const getWarningConfirmBtnText = (state) => state.viewer.warning?.confirmBtnText;\n\nexport const getWarningSecondaryEvent = (state) => state.viewer.warning?.onSecondary;\n\nexport const getWarningSecondaryBtnText = (state) => state.viewer.warning?.secondaryBtnText;\n\nexport const getWarningSecondaryBtnClass = (state) => state.viewer.warning?.secondaryBtnClass;\n\nexport const getWarningCancelEvent = (state) => state.viewer.warning?.onCancel;\n\nexport const getShowAskAgainCheckbox = (state) => state.viewer.warning?.showAskAgainCheckbox || false;\n\nexport const getShowDeleteTabWarning = (state) => state.viewer.warning?.showDeleteTabWarning ?? true;\n\nexport const isAccessibleMode = (state) => state.viewer.isAccessibleMode;\n\nexport const getWarningTemplateStrings = (state) => state.viewer.warning?.templateStrings || {};\n\nexport const getWarningModalClass = (state) => state.viewer.warning?.modalClass || '';\n\nexport const getWarningCloseEvent = (state) => state.viewer.warning?.onClose;\n\n// error message\nexport const getErrorMessage = (state) => state.viewer.errorMessage || '';\n\n// document\nexport const getPasswordAttempts = (state) => state.document.passwordAttempts;\n\nexport const getPrintQuality = (state) => state.document.printQuality;\n\nexport const getDefaultPrintOptions = (state) => state.document.defaultPrintOptions;\n\nexport const getTotalPages = (state, documentViewerKey = 1) => state.document.totalPages[documentViewerKey];\n\nexport const getOutlines = (state) => state.document.outlines;\n\nexport const getOutlineEditingEnabled = (state) => state.viewer.isOutlineEditingEnabled;\n\nexport const getBookmarks = (state) => state.document.bookmarks;\n\nexport const getPortfolio = (state) => state.document.portfolio;\n\nexport const getLayers = (state) => state.document.layers;\n\nexport const getLoadingProgress = (state) => state.document.loadingProgress;\n\n// user\nexport const getUserName = (state) => state.user.name;\n\n// advanced\nexport const getServerUrl = (state) => state.advanced.serverUrl;\n\n// search\nexport const getSearchValue = (state) => state.search.value;\n\nexport const shouldClearSearchPanelOnClose = (state) => state.search.clearSearchPanelOnClose;\n\nexport const isCaseSensitive = (state) => state.search.isCaseSensitive;\n\nexport const getReplaceValue = (state) => state.search.replaceValue;\n\nexport const getNextResultValue = (state) => state.search.nextResult;\n\nexport const isWholeWord = (state) => state.search.isWholeWord;\n\nexport const isWildcard = (state) => state.search.isWildcard;\n\nexport const isSearchUp = (state) => state.search.isSearchUp;\n\nexport const isAmbientString = (state) => state.search.isAmbientString;\n\nexport const isRegex = (state) => state.search.isRegex;\n\nexport const isProcessingSearchResults = (state) => state.search.isProcessingSearchResults;\n\nexport const getRedactionSearchPatterns = (state) => state.search.redactionSearchPatterns;\n\nexport const getNoteTransformFunction = (state) => state.viewer.noteTransformFunction;\n\nexport const getCustomNoteSelectionFunction = (state) => state.viewer.customNoteFunction;\n\nexport const getCustomApplyRedactionsHandler = (state) => state.viewer.customApplyRedactionsHandler;\n\nexport const getCustomMultiViewerSyncHandler = (state) => state.viewer.customMultiViewerSyncHandler;\n\nexport const getCustomMultiViewerAcceptedFileFormats = (state) => state.viewer.customMultiViewerAcceptedFileFormats;\n\nexport const isSnapModeEnabled = (state) => state.viewer.isSnapModeEnabled;\n\nexport const getUnreadAnnotationIdSet = (state) => state.viewer.unreadAnnotationIdSet;\n\nexport const getCurrentLanguage = (state) => state.viewer.currentLanguage;\n\nexport const shouldFadePageNavigationComponent = (state) => state.viewer.fadePageNavigationComponent;\n\nexport const isContentEditWarningHidden = (state) => state.viewer.hideContentEditWarning;\n\nexport const getCurrentContentBeingEdited = (state) => state.viewer.currentContentBeingEdited;\n\nexport const getFeatureFlags = (state) => state.featureFlags;\n\nexport const isRightClickAnnotationPopupEnabled = (state) => state.viewer.enableRightClickAnnotationPopup;\n\nexport const isInDesktopOnlyMode = (state) => state.viewer.isInDesktopOnlyMode;\n\nexport const getPanelWidth = (state, dataElement) => state.viewer.panelWidths[dataElement];\n\nexport const pageDeletionConfirmationModalEnabled = (state) => state.viewer.pageDeletionConfirmationModalEnabled;\n\nexport const getPageReplacementFileList = (state) => state.viewer.pageReplacementFileList;\n\nexport const getPageManipulationOverlayItems = (state) => state.viewer.pageManipulationOverlay;\n\nexport const getMultiPageManipulationControlsItems = (state) => state.viewer.multiPageManipulationControls;\n\nexport const getMultiPageManipulationControlsItemsSmall = (state) => state.viewer.multiPageManipulationControlsSmall;\n\nexport const getMultiPageManipulationControlsItemsLarge = (state) => state.viewer.multiPageManipulationControlsLarge;\n\nexport const getPageManipulationOverlayAlternativePosition = (state) => state.viewer.pageManipulationOverlayAlternativePosition;\n\nexport const openingPageManipulationOverlayByRightClickEnabled = (state) => state.viewer.pageManipulationOverlayOpenByRightClick;\n\nexport const getThumbnailControlMenuItems = (state) => state.viewer.thumbnailControlMenu;\n\nexport const shouldShowPresets = (state) => {\n  const response = state.viewer.toolButtonObjects[state.viewer.activeToolName];\n  return response?.showPresets ?? true;\n};\n\nexport const shouldResetAudioPlaybackPosition = (state) => state.viewer.shouldResetAudioPlaybackPosition;\n\nexport const getActiveSoundAnnotation = (state) => state.viewer.activeSoundAnnotation;\n\nexport const getWv3dPropertiesPanelModelData = (state) => state.wv3dPropertiesPanel.modelData;\n\nexport const getWv3dPropertiesPanelSchema = (state) => state.wv3dPropertiesPanel.schema;\n\nexport const getOfficeEditorCursorProperties = (state) => state.officeEditor.cursorProperties;\n\nexport const getOfficeEditorSelectionProperties = (state) => state.officeEditor.selectionProperties;\n\nexport const getAvailableFontFaces = (state) => state.officeEditor.availableFontFaces;\n\nexport const getCSSFontValues = (state) => state.officeEditor.cssFontValues;\n\nexport const getContentBoxEditor = (state) => state.viewer.contentBoxEditor;\n\nexport const getAnnotationFilters = (state) => state.viewer.annotationFilters;\n\nexport const getNotesPanelCustomHeaderOptions = (state) => state.viewer.notesPanelCustomHeaderOptions;\n\nexport const getNotesPanelCustomEmptyPanel = (state) => state.viewer.notesPanelCustomEmptyPanel;\n\nexport const isReplyAttachmentPreviewEnabled = (state) => state.viewer.replyAttachmentPreviewEnabled;\n\nexport const getReplyAttachmentHandler = (state) => state.viewer.replyAttachmentHandler;\n\nexport const getCustomSettings = (state) => state.viewer.customSettings;\n\nexport const isToolDefaultStyleUpdateFromAnnotationPopupEnabled = (state) => state.viewer.toolDefaultStyleUpdateFromAnnotationPopupEnabled;\n\nexport const getShortcutKeyMap = (state) => state.viewer.shortcutKeyMap;\n\nexport const getMultiViewerSyncScrollMode = (state) => state.viewer.multiViewerSyncScrollMode;\n\nexport const getTextSignatureQuality = (state) => state.viewer.textSignatureCanvasMultiplier;\n\nexport const getIsMeasurementAnnotationFilterEnabled = (state) => state.viewer.isMeasurementAnnotationFilterEnabled;\n\n// We will need to refactor this once we have generic panels\nexport const isRightPanelOpen = (state) => {\n  const rightPanelElements = [\n    DataElements.NOTES_PANEL,\n    DataElements.SEARCH_PANEL,\n    DataElements.REDACTION_PANEL,\n    DataElements.TEXT_EDITING_PANEL,\n    DataElements.WV3D_PROPERTIES_PANEL,\n    DataElements.COMPARE_PANEL,\n    DataElements.WATERMARK_PANEL\n  ];\n\n  return rightPanelElements.some((element) => isElementOpen(state, element));\n};\n\nexport const getOpenRightPanelWidth = (state) => {\n  const panelMap = [\n    { name: DataElements.NOTES_PANEL, isOpen: isElementOpen, getWidth: getNotesPanelWidthWithResizeBar },\n    { name: DataElements.SEARCH_PANEL, isOpen: isElementOpen, getWidth: getSearchPanelWidthWithResizeBar },\n    { name: DataElements.WATERMARK_PANEL, isOpen: isElementOpen, getWidth: getWatermarkPanelWidth },\n    { name: DataElements.TEXT_EDITING_PANEL, isOpen: isElementOpen, getWidth: getTextEditingPanelWidth },\n    { name: DataElements.WV3D_PROPERTIES_PANEL, isOpen: isElementOpen, getWidth: getWv3dPropertiesPanelWidth },\n    { name: DataElements.COMPARE_PANEL, isOpen: isElementOpen, getWidth: getComparePanelWidthWithResizeBar },\n    { name: DataElements.REDACTION_PANEL, isOpen: isElementOpen, getWidth: getRedactionPanelWidth },\n  ];\n\n  for (const panel of panelMap) {\n    if (panel.isOpen(state, panel.name)) {\n      return panel.getWidth(state);\n    }\n  }\n\n  return 0; // return 0 if no panel is open\n};\n\nexport const getIsShowComparisonButtonEnabled = (state) => {\n  return state.viewer.isShowComparisonButtonEnabled;\n};\n\nexport const getIsMultiViewerModeAvailable = (state) => {\n  return state.viewer.isMultiViewerModeAvailable;\n};","import core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport { mapAnnotationToToolName } from 'constants/map';\nimport actions from 'actions';\n\nexport default (dispatch, annotationConstructor) => {\n  const annotations = createTextAnnotation(annotationConstructor);\n\n  core.clearSelection();\n  core.addAnnotations(annotations);\n  core.selectAnnotations(annotations);\n  dispatch(actions.closeElement('textPopup'));\n};\n\n\nconst createTextAnnotation = (annotationConstructor, activeDocumentViewerKey = 1) => {\n  const annotations = [];\n  const quads = core.getSelectedTextQuads();\n\n  Object.keys(quads).forEach((pageNumber) => {\n    pageNumber = parseInt(pageNumber, 10);\n    const annotation = createAnnotation(annotationConstructor, pageNumber, quads);\n\n    if (window.Core.Tools.TextAnnotationCreateTool.AUTO_SET_TEXT && !(annotation instanceof window.Core.Annotations.RedactionAnnotation)) {\n      annotation.setContents(core.getSelectedText(activeDocumentViewerKey));\n    }\n\n    annotation.setCustomData('trn-annot-preview', core.getSelectedText(activeDocumentViewerKey));\n\n    if (annotation instanceof window.Core.Annotations.RedactionAnnotation) {\n      setRedactionStyle(annotation);\n      annotation.IsText = true;\n    }\n\n    setAnnotationStyle(annotation);\n\n    annotations.push(annotation);\n  });\n\n  return annotations;\n};\n\nconst createAnnotation = (annotationConstructor, pageNumber, quads) => {\n  const annotation = new annotationConstructor();\n\n  annotation.PageNumber = pageNumber;\n  annotation.Quads = quads[pageNumber];\n  annotation.Author = core.getCurrentUser();\n  return annotation;\n};\n\nconst setAnnotationStyle = (annotation) => {\n  const toolName = mapAnnotationToToolName(annotation);\n\n  if (toolName) {\n    const newStyles = getToolStyles(toolName);\n    Object.keys(newStyles).forEach((property) => {\n      annotation[property] = newStyles[property];\n    });\n  }\n};\n\nconst setRedactionStyle = (annotation) => {\n  const { AnnotationCreateRedaction: { defaults: style = {} } } = core.getToolModeMap();\n\n  if (style) {\n    if (style.StrokeColor) {\n      const color = style.StrokeColor;\n      annotation.StrokeColor = new window.Core.Annotations.Color(color['R'], color['G'], color['B'], color['A']);\n    }\n    if (style.StrokeThickness) {\n      annotation.StrokeThickness = style['StrokeThickness'];\n    }\n    if (style.FillColor) {\n      const fillColor = style.FillColor;\n      annotation.FillColor = new window.Core.Annotations.Color(fillColor['R'], fillColor['G'], fillColor['B'], fillColor['A']);\n    }\n  }\n};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","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\nexport function isRef(obj) {\n  return (// eslint-disable-next-line no-prototype-builtins\n    obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n  );\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","/**\n * An instance of Hotkeys that can be used to enable, disable or register custom hotkeys in the viewer\n * @name UI.hotkeys\n * @see UI.Hotkeys\n * @type {Class<UI.Hotkeys>}\n */\n\nimport hotkeysManager, { Keys } from 'helpers/hotkeysManager';\n\nexport default {\n  on: (...args) => {\n    hotkeysManager.on(...args);\n  },\n  off: (...args) => {\n    hotkeysManager.off(...args);\n  },\n  Keys,\n};\n","import { useEffect, useRef } from 'react';\n\nexport default (callback = () => {}, deps) => {\n  const didMount = useRef(false);\n\n  useEffect(() => {\n    if (!didMount.current) {\n      didMount.current = true;\n      return;\n    }\n\n    return callback();\n  // eslint-disable-next-line\n  }, deps);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n","import core from 'core';\nimport getRootNode from 'helpers/getRootNode';\n\n// gap between the annotation selection box and the popup element\nconst gap = 17;\n\nexport const getAnnotationPopupPositionBasedOn = (annotation, popup, documentViewerKey = 1) => {\n  const { left, top } = calcAnnotationPopupPosition(\n    getAnnotationPosition(annotation, documentViewerKey),\n    getPopupDimensions(popup),\n    documentViewerKey,\n  );\n\n  return { left: Math.max(left, 4), top };\n};\n\nexport const getTextPopupPositionBasedOn = (allQuads, popup, documentViewerKey = 1, isMultiViewerMode = false) => {\n  const { left, top } = calcTextPopupPosition(\n    getSelectedTextPosition(allQuads, documentViewerKey),\n    getPopupDimensions(popup),\n    documentViewerKey,\n  );\n\n  // Fixes the issue where viewer has space on\n  // left side in WebComponent mode\n  if (window.isApryseWebViewerWebComponent) {\n    const documentContainer =\n      isMultiViewerMode\n        ? getRootNode().querySelector(`#DocumentContainer${documentViewerKey}`)\n        : getRootNode().querySelector('.DocumentContainer');\n    const containerBox = documentContainer.getBoundingClientRect();\n    const updatedLeft = left - containerBox.left;\n    return { left: updatedLeft, top };\n  }\n\n  return { left, top };\n};\n\nexport const getAnnotationPosition = (annotation, documentViewerKey = 1) => {\n  const { left, top, right, bottom } = getAnnotationPageCoordinates(annotation, documentViewerKey);\n\n  const pageNumber = annotation.getPageNumber();\n  const topLeft = convertPageCoordinatesToWindowCoordinates(left, top, pageNumber, documentViewerKey);\n  const bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, pageNumber, documentViewerKey);\n\n  if (annotation['NoZoom']) {\n    const isNote = annotation instanceof window.Core.Annotations.StickyAnnotation;\n    const rect = annotation.getRect();\n    const width = isNote ? window.Core.Annotations.StickyAnnotation['SIZE'] : rect.getWidth();\n    const height = isNote ? window.Core.Annotations.StickyAnnotation['SIZE'] : rect.getHeight();\n    const rotation = core.getCompleteRotation(annotation.PageNumber, documentViewerKey);\n    if (rotation === 0) {\n      bottomRight.x = topLeft.x + width;\n      bottomRight.y = topLeft.y + height;\n      if (isNote) {\n        bottomRight.x += width * 0.2;\n      }\n    } else {\n      if (isNote) {\n        bottomRight.x = topLeft.x + width * 1.2;\n        bottomRight.y = topLeft.y + height;\n      } else {\n        if (rotation === 1) {\n          topLeft.x = bottomRight.x - height;\n          bottomRight.y = topLeft.y + width;\n        } else if (rotation === 2) {\n          topLeft.x = bottomRight.x - width;\n          topLeft.y = bottomRight.y - height;\n        } else if (rotation === 3) {\n          topLeft.y = bottomRight.y - width;\n          bottomRight.x = topLeft.x + height;\n        }\n      }\n    }\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getAnnotationPageCoordinates = (annotation, documentViewerKey = 1) => {\n  const rect = annotation.getRect();\n  let { x1: left, y1: top, x2: right, y2: bottom } = rect;\n\n  const isNote = annotation instanceof window.Core.Annotations.StickyAnnotation;\n  const noteAdjustment = window.Core.Annotations.StickyAnnotation['SIZE'];\n\n  const rotation = core.getCompleteRotation(annotation.PageNumber, documentViewerKey);\n  if (rotation === 1) {\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n    }\n  } else if (rotation === 2) {\n    [left, right] = [right, left];\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  } else if (rotation === 3) {\n    [left, right] = [right, left];\n    if (isNote) {\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  }\n\n  return { left, top, right, bottom };\n};\n\nconst getSelectedTextPosition = (allQuads, documentViewerKey) => {\n  const { startPageNumber, endPageNumber } = getSelectedTextPageNumber(allQuads);\n  const { left, right, top, bottom } = getSelectedTextPageCoordinates(\n    allQuads,\n    startPageNumber,\n    endPageNumber\n  );\n\n  let topLeft = convertPageCoordinatesToWindowCoordinates(left, top, startPageNumber, documentViewerKey);\n  let bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, endPageNumber, documentViewerKey);\n\n  if (core.getRotation() > 1) {\n    const tmp = topLeft;\n    topLeft = bottomRight;\n    bottomRight = tmp;\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getSelectedTextPageNumber = (allQuads) => {\n  const pageNumbers = Object.keys(allQuads).map((pageNumber) => Number(pageNumber));\n  // Object.keys returns keys in arbitrary order so use Math.min/max instead of index to access array\n  const startPageNumber = Math.min(...pageNumbers);\n  const endPageNumber = Math.max(...pageNumbers);\n\n  return { startPageNumber, endPageNumber };\n};\n\nconst getSelectedTextPageCoordinates = (allQuads, startPageNumber, endPageNumber) => {\n  const getTopAndBottom = () => {\n    const firstQuad = allQuads[startPageNumber][0];\n    const top = firstQuad.y3;\n\n    const endPageQuads = allQuads[endPageNumber];\n    const lastQuad = endPageQuads[endPageQuads.length - 1];\n    const bottom = lastQuad.y1;\n\n    return { top, bottom };\n  };\n\n  const getLeftAndRight = () => {\n    let left;\n    let right;\n\n    Object.keys(allQuads).forEach((pageNumber) => {\n      allQuads[pageNumber].forEach((quad) => {\n        const { x1: quadLeft, x2: quadRight } = quad;\n\n        if (!left || quadLeft < left) {\n          left = quadLeft;\n        }\n        if (!right || quadRight > right) {\n          right = quadRight;\n        }\n      });\n    });\n\n    return { left, right };\n  };\n\n  const { top, bottom } = getTopAndBottom();\n  const { left, right } = getLeftAndRight();\n\n  return { left, top, bottom, right };\n};\n\nconst convertPageCoordinatesToWindowCoordinates = (x, y, pageNumber, documentViewerKey = 1) => {\n  const displayMode = core.getDisplayModeObject(documentViewerKey);\n\n  return displayMode.pageToWindow({ x, y }, pageNumber);\n};\n\nconst getPopupDimensions = (popup) => {\n  const { width, height } = popup.current.getBoundingClientRect();\n\n  return { width, height };\n};\n\nconst calcAnnotationPopupPosition = (annotationPosition, popupDimension, documentViewerKey) => {\n  const top = calcPopupTop(annotationPosition, popupDimension, documentViewerKey);\n  const left = calcPopupLeft(annotationPosition, popupDimension, documentViewerKey);\n\n  return { left, top };\n};\n\nconst calcTextPopupPosition = (selectedTextPosition, popupDimension, documentViewerKey) => {\n  const top = calcPopupTop(selectedTextPosition, popupDimension, documentViewerKey);\n  const left = calcPopupLeft(selectedTextPosition, popupDimension, documentViewerKey);\n\n  return { left, top };\n};\n\nexport const calcPopupLeft = ({ topLeft, bottomRight }, { width }, documentViewerKey) => {\n  const { scrollLeft } = core.getScrollViewElement(documentViewerKey);\n  const center = (topLeft.x + bottomRight.x) / 2 - scrollLeft;\n  let left = center - width / 2;\n\n  if (window.isApryseWebViewerWebComponent) {\n    const hostContainer = getRootNode().host;\n    const containerBox = hostContainer.getBoundingClientRect();\n    left -= containerBox.left;\n  }\n\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > window.innerWidth) {\n    left = window.innerWidth - width;\n  }\n  return Math.round(left);\n};\n\n/**\n * @ignore\n * @param {number} annotationPosition The position of the annotation (topLeft, bottomRight)\n * @param {number} popupDimension The deminition of the popup (width, height)\n * this is specifically used for the annotation popup to keep the popup on the same side of the annotation.\n */\nexport const calcPopupTop = ({ topLeft, bottomRight }, { height }, documentViewerKey) => {\n  const padding = 5;\n  const scrollContainer = core.getScrollViewElement(documentViewerKey);\n  const boundingBox = scrollContainer.getBoundingClientRect();\n  const visibleRegion = {\n    left: boundingBox.left + scrollContainer.scrollLeft,\n    right: boundingBox.left + scrollContainer.scrollLeft + boundingBox.width,\n    top: boundingBox.top + scrollContainer.scrollTop,\n    bottom: boundingBox.top + scrollContainer.scrollTop + boundingBox.height,\n  };\n\n  const annotTop = topLeft.y - gap;\n  const annotBottom = bottomRight.y + gap;\n\n  let top;\n  if (annotBottom + height < visibleRegion.bottom) {\n    top = annotBottom;\n  } else if (annotTop - height > visibleRegion.top) {\n    top = annotTop - height;\n  } else {\n    // if there is no enough room to fit the style popup in either way (top or bottom)\n    // We want to place it on the side that has more space\n    if (annotTop > visibleRegion.bottom - annotBottom) { // if top has more space, place it to top\n      top = visibleRegion.top + padding;\n    } else { // otherwise, place it to bottom\n      top = visibleRegion.bottom - padding - height;\n    }\n  }\n  if (window.isApryseWebViewerWebComponent) {\n    const hostContainer = getRootNode().host;\n    const containerBox = hostContainer.getBoundingClientRect();\n    top -= containerBox.top;\n  }\n\n  return Math.round(top - scrollContainer.scrollTop);\n};\n\nexport const getReaderModePopupPositionBasedOn = (annotPosition, popup, viewer) => {\n  const { width, height } = popup.current.getBoundingClientRect();\n  const viewerRect = viewer.current.getBoundingClientRect();\n\n  let top = 5;\n  const annotTop = annotPosition.top - gap;\n  const annotBottom = annotPosition.bottom + gap;\n  if (annotBottom + height < viewerRect.height) {\n    top = annotBottom;\n  } else if (annotTop > height) {\n    top = annotTop - height;\n  }\n  top = Math.round(top + viewerRect.top);\n\n  const paddingLeft = parseFloat(viewer.current.firstChild.style.paddingLeft);\n  const center = (annotPosition.left + annotPosition.right) / 2 + paddingLeft;\n  let left = center - width / 2;\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > viewerRect.width) {\n    left = viewerRect.width - width;\n  }\n  left = Math.round(left + viewerRect.left);\n\n  return { top, left };\n};\n","import { Choice as ChoiceComponent } from '@pdftron/webviewer-react-toolkit';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nimport './Choice.scss';\n\nconst propTypes = {\n  dataElement: PropTypes.string,\n};\n\nconst Choice = React.forwardRef(({ dataElement, ...props }, ref) => {\n  const isDisabled = useSelector((state) => (dataElement ? selectors.isElementDisabled(state, dataElement) : false));\n\n  return isDisabled ? null : <ChoiceComponent {...props} ref={ref} center />;\n});\n\nChoice.displayName = 'Choice';\nChoice.propTypes = propTypes;\n\nexport default Choice;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\n\nimport './ColorPalette.scss';\n\nconst dataElement = 'colorPalette';\n\nclass ColorPalette extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    color: PropTypes.object,\n    onStyleChange: PropTypes.func.isRequired,\n    overridePalette: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n    colorMapKey: PropTypes.string\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.palette = [\n      '#F1A099',\n      '#FFC67B',\n      '#FFE6A2',\n      '#80E5B1',\n      '#92E8E8',\n      '#A6A1E6',\n      '#E2A1E6',\n      '#E44234',\n      '#FF8D00',\n      '#FFCD45',\n      '#00CC63',\n      '#25D2D1',\n      '#4E7DE9',\n      '#C544CE',\n      '#88271F',\n      '#B54800',\n      '#F69A00',\n      '#007A3B',\n      '#167E7D',\n      '#2E4B8B',\n      '#76287B',\n      '#FFFFFF',\n      '#CDCDCD',\n      '#9C9C9C',\n      '#696969',\n      '#272727',\n      '#000000',\n      'transparency',\n    ];\n  }\n\n  setColor = (bg) => {\n    const { property, onStyleChange } = this.props;\n    if (!bg) {\n      onStyleChange(property, new window.Core.Annotations.Color(0, 0, 0, 0));\n    } else {\n      const color = new window.Core.Annotations.Color(bg);\n      onStyleChange(property, color);\n    }\n  }\n\n  render() {\n    const {\n      hasPadding,\n      style = {},\n      property,\n      color,\n      overridePalette,\n      overridePalette2,\n      colorMapKey,\n      t,\n      isDisabled,\n    } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    const allowTransparent = !(property === 'TextColor' || property === 'StrokeColor');\n\n    let palette = overridePalette2 || overridePalette?.[colorMapKey] || overridePalette?.global || this.palette;\n    if (!allowTransparent) {\n      palette = palette.filter((p) => p?.toLowerCase() !== 'transparency');\n    }\n\n    const transparentIcon = (\n      <svg\n        width=\"100%\"\n        height=\"100%\"\n        className={classNames({\n          transparent: true,\n        })}\n      >\n        <line stroke=\"#d82e28\" x1=\"0\" y1=\"100%\" x2=\"100%\" y2=\"0\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n      </svg>\n    );\n\n    return (\n      <div\n        data-element=\"colorPalette\"\n        className={classNames({\n          'ColorPalette': true,\n          padding: hasPadding,\n        })}\n        style={style}\n      >\n        {palette.map((bg) => bg?.toLowerCase()).map((bg, i) => (\n          !bg\n            ? <div key={i} className=\"dummy-cell\" />\n            : <button\n              key={i}\n              className=\"cell-container\"\n              onClick={() => {\n                this.setColor(bg === 'transparency' ? null : bg);\n              }}\n              aria-label={`${t('option.colorPalette.colorLabel')} ${i + 1}`}\n            >\n              <div\n                className={classNames({\n                  'cell-outer': true,\n                  active: color?.toHexString?.()?.toLowerCase() === bg || (!color?.toHexString?.() && bg === 'transparency'),\n                })}\n              >\n                <div\n                  className={classNames({\n                    cell: true,\n                    border: bg === '#ffffff' || bg === 'transparency',\n                  })}\n                  style={{ backgroundColor: bg }}\n                >\n                  {bg === 'transparency' && transparentIcon}\n                </div>\n              </div>\n            </button>\n        ))}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  overridePalette: selectors.getCustomElementOverrides(state, dataElement),\n  isDisabled: selectors.isElementDisabled(state, 'colorPalette'),\n});\n\nexport default connect(mapStateToProps)(withTranslation()(ColorPalette));\n","import ColorPalette from './ColorPalette';\n\nexport default ColorPalette;","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\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);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n  return passed;\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\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)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\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)) return result;\n  } return new Result(false);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Date = global.Date;\nvar getTime = uncurryThis(Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return getTime(new Date());\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar un$ArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (un$ArrayBufferSlice && end === undefined) {\n      return un$ArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  return call(\n    $fill,\n    aTypedArray(this),\n    value,\n    length > 1 ? arguments[1] : undefined,\n    length > 2 ? arguments[2] : undefined\n  );\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n  un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n  un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  un$Sort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return un$Sort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Button.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array<any> | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n  for (var i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n  return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","'use strict';\n\nif (typeof process === 'undefined' ||\n    !process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n","var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\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 */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../node_modules/sass-loader/dist/cjs.js!./bookmarksOutlinesShared.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport { getDataWithKey } from 'constants/map';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport Tooltip from 'components/Tooltip';\n\nimport './ColorPaletteHeader.scss';\n\nclass ColorPaletteHeader extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    colorPalette: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    colorMapKey: PropTypes.string.isRequired,\n    setActivePalette: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    isTextColorPaletteDisabled: PropTypes.bool,\n    isFillColorPaletteDisabled: PropTypes.bool,\n    isBorderColorPaletteDisabled: PropTypes.bool,\n  }\n\n  setActivePalette = (newPalette) => {\n    const { setActivePalette, colorMapKey } = this.props;\n\n    setActivePalette(colorMapKey, newPalette);\n  }\n\n  render() {\n    const {\n      t,\n      colorPalette,\n      colorMapKey,\n      toolName,\n      disableSeparator\n    } = this.props;\n    const { styleTabs } = getDataWithKey(colorMapKey);\n\n    if (toolName && (toolName.includes('Line') || toolName.includes('Arrow') || toolName.includes('Polyline'))) {\n      return (\n        <div className=\"palette-options\">\n          {['StrokeColor', 'FillColor'].map((palette, i) => <React.Fragment key={i}>\n            <Tooltip content={`option.annotationColor.${palette}`}>\n              <div\n                className={classNames({\n                  'palette-options-button': true,\n                  active: colorPalette === palette,\n                  disabled: palette === 'FillColor',\n                })}\n              >\n                {t(`option.annotationColor.${palette}`)}\n              </div>\n            </Tooltip>\n            {i < 1 && <div className=\"palette-options-divider\" />}\n          </React.Fragment>,\n          )}\n        </div>\n      );\n    }\n\n\n    if (styleTabs.length < 2) {\n      if (disableSeparator) {\n        return null;\n      }\n      return <HorizontalDivider/>;\n    }\n\n\n    return (\n      <div className=\"palette-options\">\n        {styleTabs.map((pallette, i) => <React.Fragment key={i}>\n          <Tooltip content={`option.annotationColor.${pallette}`}>\n            <button\n              className={classNames({\n                'palette-options-button': true,\n                active: colorPalette === pallette,\n              })}\n              onClick={() => this.setActivePalette(pallette)}\n            >\n              {t(`option.annotationColor.${pallette}`)}\n            </button>\n          </Tooltip>\n          {i < styleTabs.length - 1 && <div className=\"palette-options-divider\" />}\n        </React.Fragment>,\n        )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  // TODO: Actually disable these elements\n  // isTextColorPaletteDisabled, isBorderColorPaletteDisabled, isFillColorPaletteDisabled\n  // TextColor, StrokeColor, FillColor\n  isTextColorPaletteDisabled: selectors.isElementDisabled(state, 'textColorPalette'),\n  isFillColorPaletteDisabled: selectors.isElementDisabled(state, 'fillColorPalette'),\n  isBorderColorPaletteDisabled: selectors.isElementDisabled(state, 'borderColorPalette'),\n});\n\nconst mapDispatchToProps = {\n  setActivePalette: actions.setActivePalette,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation(null, { wait: false })(ColorPaletteHeader));\n","import ColorPaletteHeader from './ColorPaletteHeader';\n\nexport default ColorPaletteHeader;","export const defaultStrokeStyles = [\n  { className: 'linestyle-image', key: 'solid', src: 'icon-linestyle-solid-line' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,2,2', src: 'icon-linestyle-dash-2-2' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,4,4', src: 'icon-linestyle-dash-4-4' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,6,6', src: 'icon-linestyle-dash-6-6' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,1,4,8,4', src: 'icon-linestyle-dash-1-4-8-4' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,3,6,10,6', src: 'icon-linestyle-dash-3-6-10-6' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,4,6,10,6', src: 'icon-linestyle-dash-4-6-10-6' },\n];\n\nexport const cloudyStrokeStyle = { className: 'linestyle-image shift-alignment', key: 'cloudy', src: 'icon-linestyle-cloudy-line' };","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\nimport './StyleOption.scss';\nimport { defaultStrokeStyles, cloudyStrokeStyle } from 'constants/strokeStyleIcons';\n\n\nconst withCloudyStyle = defaultStrokeStyles.concat(cloudyStrokeStyle);\n\nfunction StyleOption(props) {\n  const lineEndingDropdownWidth = 60;\n  const { onLineStyleChange, properties, isEllipse } = props;\n  if (!properties || !properties.hasOwnProperty('StrokeStyle')) {\n    // if there is no StrokeStyle property, there is no point rendering <Dropdown>\n    return null;\n  }\n  const [selectedMiddleLineStyle, setSelectedMiddleLineStyle] = useState(properties.StrokeStyle);\n  const [t] = useTranslation();\n\n  function onClickMiddleLineStyle(key) {\n    setSelectedMiddleLineStyle(key);\n    onLineStyleChange('middle', key);\n  }\n\n  return (\n    <div className=\"StyleOption\">\n      <div className=\"styles-container\">\n        <label className=\"styles-title\" htmlFor=\"styleOptions\">{t('option.styleOption.style')}</label>\n        <Dropdown\n          dataElement=\"borderStylePicker\"\n          images={ (isEllipse) ? defaultStrokeStyles : withCloudyStyle }\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickMiddleLineStyle}\n          currentSelectionKey={selectedMiddleLineStyle}\n        />\n      </div>\n    </div>\n  );\n}\n\nStyleOption.propTypes = {\n  borderStyle: PropTypes.string,\n  isEllipse: PropTypes.bool,\n  properties: PropTypes.object,\n  onLineStyleChange: PropTypes.func.isRequired,\n};\n\nexport default StyleOption;\n","import StyleOption from './StyleOption';\n\nexport default StyleOption;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './LabelTextEditor.scss';\n\nconst LabelTextEditor = ({ onPropertyChange, properties }) => {\n  const overlayText = properties.OverlayText || '';\n  const [curOverlayText, setCurOverlayText] = useState(overlayText);\n  const setOverlayText = (e) => {\n    setCurOverlayText(e.target.value);\n    onPropertyChange('OverlayText', e.target.value);\n  };\n\n  const onKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.target?.blur();\n    }\n  };\n\n  const [t] = useTranslation();\n\n  return (\n    <>\n      <input\n        className=\"overlay-text-input\"\n        value={curOverlayText}\n        onChange={setOverlayText}\n        onKeyDown={onKeyDown}\n        placeholder={t('option.stylePopup.labelTextPlaceholder')}\n      />\n    </>\n  );\n};\n\nexport default LabelTextEditor;\n","import LabelTextEditor from './LabelTextEditor';\n\nexport default LabelTextEditor;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\nimport { defaultStrokeStyles } from 'constants/strokeStyleIcons';\n\nimport './LineStyleOptions.scss';\n\nconst startLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-start-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-start-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-start-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow', src: 'icon-linestyle-start-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-start-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-start-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-start-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-start-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-start-slash' },\n];\n\nconst endLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-end-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-end-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-end-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow', src: 'icon-linestyle-end-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-end-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-end-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-end-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-end-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-end-slash' },\n];\n\nconst middleLineStyles = defaultStrokeStyles;\n\nfunction LineStyleOptions({ properties, onLineStyleChange }) {\n  const [t] = useTranslation();\n  const [selectedStartLineStyle, setSelectedStartLineStyle] = useState(properties.StartLineStyle);\n  const [selectedEndLineStyle, setSelectedEndLineStyle] = useState(properties.EndLineStyle);\n  const [selectedMiddleLineStyle, setSelectedMiddleLineStyle] = useState(properties.StrokeStyle);\n\n  function onClickStartLineStyle(key) {\n    setSelectedStartLineStyle(key);\n    onLineStyleChange('start', key);\n  }\n\n  function onClickMiddleLineStyle(key) {\n    setSelectedMiddleLineStyle(key);\n    onLineStyleChange('middle', key);\n  }\n\n  function onClickEndLineStyle(key) {\n    setSelectedEndLineStyle(key);\n    onLineStyleChange('end', key);\n  }\n\n  const lineEndingDropdownWidth = 62;\n\n  return (\n    <div className=\"LineStyleOptions\">\n      <div className=\"LayoutTitle\">{t('option.lineStyleOptions.title')}</div>\n      <div className=\"StyleContainer\">\n        <Dropdown\n          dataElement=\"startLineStyleDropdown\"\n          images={startLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickStartLineStyle}\n          currentSelectionKey={selectedStartLineStyle}\n        />\n\n        <Dropdown\n          dataElement=\"middleLineStyleDropdown\"\n          images={middleLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickMiddleLineStyle}\n          currentSelectionKey={selectedMiddleLineStyle}\n        />\n\n        <Dropdown\n          dataElement=\"endLineStyleDropdown\"\n          images={endLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickEndLineStyle}\n          currentSelectionKey={selectedEndLineStyle}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default LineStyleOptions;","import LineStyleOptions from './LineStyleOptions';\n\nexport default LineStyleOptions;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport i18next from 'i18next';\n\nimport ColorPaletteHeader from 'components/ColorPaletteHeader';\nimport ColorPalette from 'components/ColorPalette';\nimport ColorPalettePicker from 'components/ColorPalettePicker';\nimport Slider from 'components/Slider';\nimport StyleOption from 'components/StyleOption';\nimport Icon from 'components/Icon';\nimport TextStylePicker from 'components/TextStylePicker';\nimport LabelTextEditor from 'components/LabelTextEditor';\nimport LineStyleOptions from 'components/LineStyleOptions';\nimport Choice from 'components/Choice/Choice';\n\nimport { circleRadius } from 'constants/slider';\nimport DataElements from 'constants/dataElement';\nimport { workerTypes } from 'constants/types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport pickBy from 'lodash/pickBy';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport classNames from 'classnames';\nimport { isMobile } from 'helpers/device';\nimport getMeasurementTools from 'helpers/getMeasurementTools';\nimport core from 'core';\n\nimport './StylePopup.scss';\n\nclass StylePopup extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    onPropertyChange: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    onRichTextStyleChange: PropTypes.func,\n    onLineStyleChange: PropTypes.func,\n    isFreeText: PropTypes.bool,\n    isEllipse: PropTypes.bool,\n    isMeasure: PropTypes.bool,\n    colorMapKey: PropTypes.string.isRequired,\n    currentStyleTab: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    isColorPaletteDisabled: PropTypes.bool,\n    isOpacitySliderDisabled: PropTypes.bool,\n    isStrokeThicknessSliderDisabled: PropTypes.bool,\n    isFontSizeSliderDisabled: PropTypes.bool,\n    isStyleOptionDisabled: PropTypes.bool,\n    isStylePopupDisabled: PropTypes.bool,\n    hideSnapModeCheckbox: PropTypes.bool,\n    closeElement: PropTypes.func,\n    openElement: PropTypes.func,\n    onSnapModeChange: PropTypes.func,\n    properties: PropTypes.object,\n    isRedaction: PropTypes.bool,\n    fonts: PropTypes.array,\n    isSnapModeEnabled: PropTypes.bool,\n    isInFormBuilderAndNotFreeText: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      document: core.getDocument(),\n      documentType: core.getDocument()?.getType(),\n    };\n  }\n\n  componentDidMount() {\n    core.addEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  onDocumentLoaded = () => {\n    this.setState({\n      document: core.getDocument(),\n      documentType: core.getDocument()?.getType(),\n    });\n  };\n\n  onSnappingChange = (event) => {\n    if (!core.isFullPDFEnabled()) {\n      return;\n    }\n\n    const enableSnapping = event.target.checked;\n    const mode = enableSnapping\n      ? core.getDocumentViewer().SnapMode.e_DefaultSnapMode | core.getDocumentViewer().SnapMode.POINT_ON_LINE\n      : null;\n    const measurementTools = getMeasurementTools();\n\n    measurementTools.forEach((tool) => {\n      tool.setSnapMode?.(mode);\n    });\n    if (this.props.onSnapModeChange) {\n      this.props.onSnapModeChange(enableSnapping);\n    }\n  };\n\n  renderSliders = () => {\n    const {\n      style: { Opacity, StrokeThickness, FontSize },\n      onStyleChange,\n      onSliderChange,\n      isFreeText,\n      isMeasure = false,\n      // TODO: Actually disable these elements\n      isOpacitySliderDisabled,\n      isStrokeThicknessSliderDisabled,\n      isFontSizeSliderDisabled,\n      currentStyleTab,\n    } = this.props;\n    const lineStart = circleRadius;\n    const sliderProps = {};\n    if (!isOpacitySliderDisabled) {\n      sliderProps.Opacity = {\n        property: 'Opacity',\n        displayProperty: 'opacity',\n        value: Opacity,\n        getDisplayValue: (Opacity) => `${Math.round(Opacity * 100)}%`,\n        dataElement: DataElements.OPACITY_SLIDER,\n        getCirclePosition: (lineLength, Opacity) => Opacity * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => circlePosition,\n        withInputField: true,\n        inputFieldType: 'number',\n        min: 0,\n        max: 100,\n        step: 1,\n        getLocalValue: (opacity) => parseInt(opacity) / 100,\n      };\n    }\n    if (!isStrokeThicknessSliderDisabled) {\n      sliderProps.StrokeThickness = {\n        property: 'StrokeThickness',\n        displayProperty: 'thickness',\n        value: StrokeThickness,\n        getDisplayValue: (strokeThickness) => {\n          const placeOfDecimal =\n            Math.floor(strokeThickness) !== strokeThickness ? strokeThickness.toString().split('.')[1].length || 0 : 0;\n          if (StrokeThickness === 0 || (StrokeThickness >= 1 && (placeOfDecimal > 2 || placeOfDecimal === 0))) {\n            return `${Math.round(strokeThickness)}pt`;\n          }\n          return `${parseFloat(strokeThickness).toFixed(2)}pt`;\n        },\n        dataElement: DataElements.STROKE_THICKNESS_SLIDER,\n        getCirclePosition: (lineLength, strokeThickness) => (strokeThickness / 20) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => {\n          if (circlePosition >= 1 / 20) {\n            return Math.round(circlePosition * 20);\n          }\n          if (circlePosition >= 0.75 / 20 && circlePosition < 1 / 20) {\n            return 0.75;\n          }\n          if (circlePosition >= 0.5 / 20 && circlePosition < 0.75 / 20) {\n            return 0.5;\n          }\n          if (circlePosition >= 0.25 / 20 && circlePosition < 0.5 / 20) {\n            return 0.25;\n          }\n          if (circlePosition >= 0.08 / 20 && circlePosition < 0.25 / 20) {\n            return 0.1;\n          }\n          return isFreeText ? 0 : 0.1;\n        },\n        withInputField: true,\n        inputFieldType: 'number',\n        min: isFreeText ? 0 : 0.1,\n        max: 20,\n        step: 1,\n        getLocalValue: (strokeThickness) => parseFloat(strokeThickness).toFixed(2),\n      };\n    }\n    if (!isFontSizeSliderDisabled) {\n      sliderProps.FontSize = {\n        property: 'FontSize',\n        displayProperty: 'text',\n        value: FontSize,\n        getDisplayValue: (FontSize) => `${Math.round(parseInt(FontSize, 10))}pt`,\n        dataElement: DataElements.FONT_SIZE_SLIDER,\n        getCirclePosition: (lineLength, FontSize) => ((parseInt(FontSize, 10) - 5) / 40) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => `${circlePosition * 40 + 5}pt`,\n        min: 5,\n        max: 45,\n        step: 1,\n        withInputField: true,\n        inputFieldType: 'number',\n        getLocalValue: (FontSize) => `${parseFloat(FontSize).toFixed(2)}pt`,\n      };\n    }\n\n    // default sliders\n    let sliders = { Opacity, StrokeThickness, FontSize };\n    if (currentStyleTab === 'TextColor') {\n      sliders = { Opacity, FontSize };\n    } else if (currentStyleTab === 'StrokeColor') {\n      sliders = { Opacity, StrokeThickness };\n    } else if (currentStyleTab === 'FillColor') {\n      sliders = { Opacity };\n    }\n\n    if (isMeasure) {\n      sliders.FontSize = FontSize;\n    }\n\n    if (isOpacitySliderDisabled) {\n      delete sliders.Opacity;\n    }\n\n    if (\n      isStrokeThicknessSliderDisabled ||\n      this.props.colorMapKey === 'markInsertText' ||\n      this.props.colorMapKey === 'markReplaceText'\n    ) {\n      delete sliders.StrokeThickness;\n    }\n\n    if (isFontSizeSliderDisabled) {\n      delete sliders.FontSize;\n    }\n\n    // we still want to render a slider if the value is 0\n    sliders = pickBy(sliders, (slider) => slider !== null && slider !== undefined);\n\n    const sliderComponents = Object.keys(sliders).map((key) => {\n      const props = sliderProps[key];\n\n      return <Slider {...props} key={key} onStyleChange={onStyleChange} onSliderChange={onSliderChange} />;\n    });\n\n    return (\n      <React.Fragment>\n        {sliderComponents.length > 0 && <div className=\"sliders-container\">{sliderComponents}</div>}\n      </React.Fragment>\n    );\n  };\n\n  render() {\n    const {\n      toolName,\n      isColorPaletteDisabled,\n      currentStyleTab,\n      style,\n      colorMapKey,\n      onStyleChange,\n      isStyleOptionDisabled,\n      disableSeparator,\n      hideSnapModeCheckbox,\n      isFreeText,\n      isEllipse,\n      isTextStyleContainerActive,\n      isColorsContainerActive,\n      isLabelTextContainerActive,\n      isLabelTextContainerDisabled,\n      openElement,\n      closeElement,\n      properties,\n      onPropertyChange,\n      onRichTextStyleChange,\n      isRedaction,\n      fonts,\n      showLineStyleOptions,\n      onLineStyleChange,\n      isSnapModeEnabled,\n      isInFormBuilderAndNotFreeText\n    } = this.props;\n\n    // We do not have sliders to show up for redaction annots\n    if (isRedaction) {\n      style.Opacity = null;\n      style.StrokeThickness = null;\n    }\n\n    const { Scale, Precision, Style } = style;\n\n    const textMenuItems = {\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: isTextStyleContainerActive,\n      [DataElements.STYLE_POPUP_COLORS_CONTAINER]: isColorsContainerActive,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: isLabelTextContainerActive,\n    };\n\n    const openTextMenuItem = (dataElement) => {\n      if (!textMenuItems[dataElement]) {\n        openElement(dataElement);\n        if (isMobile()) {\n          for (const element in textMenuItems) {\n            if (element !== dataElement) {\n              closeElement(element);\n            }\n          }\n        }\n      } else {\n        closeElement(dataElement);\n      }\n    };\n    const openLabelText = () => openTextMenuItem(DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER);\n    const openTextStyle = () => openTextMenuItem(DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER);\n    const openColors = () => openTextMenuItem(DataElements.STYLE_POPUP_COLORS_CONTAINER);\n\n    const className = classNames({\n      Popup: true,\n      StylePopup: true,\n    });\n\n    const showTextStyle = currentStyleTab === 'TextColor' && (isFreeText || isRedaction);\n    const showColorsMenu = currentStyleTab === 'TextColor' && (isFreeText || isRedaction);\n    const showColorPicker = !(showColorsMenu && !isColorsContainerActive);\n    const showLabelText = currentStyleTab === 'TextColor' && isRedaction;\n    const showSliders = isColorPaletteDisabled || showColorPicker;\n    const hideStylePicker = currentStyleTab !== 'StrokeColor' && (isFreeText || isRedaction);\n    const wasDocumentSwappedToClientSide =\n      this.state.documentType === workerTypes.WEBVIEWER_SERVER && !this.state.document.isWebViewerServerDocument();\n    const isEligibleDocumentForSnapping = this.state.documentType?.toLowerCase() === workerTypes.PDF || wasDocumentSwappedToClientSide;\n\n    const showMeasurementSnappingOption = Scale && Precision && isEligibleDocumentForSnapping && !hideSnapModeCheckbox;\n\n    return (\n      <div className={className} data-element=\"stylePopup\">\n        {currentStyleTab && !isColorPaletteDisabled && (\n          <>\n            <ColorPaletteHeader\n              colorPalette={currentStyleTab}\n              colorMapKey={colorMapKey}\n              style={style}\n              toolName={toolName}\n              disableSeparator={disableSeparator}\n            />\n            {showLabelText && !isLabelTextContainerDisabled && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openLabelText} onTouchStart={openLabelText} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.labelText')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isLabelTextContainerActive ? 'up' : 'down'}`} />\n                </div>\n                {isLabelTextContainerActive && (\n                  <div className=\"menu-items\">\n                    <LabelTextEditor properties={properties} onPropertyChange={onPropertyChange} />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showTextStyle && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openTextStyle} onTouchStart={openTextStyle} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.textStyle')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isTextStyleContainerActive ? 'up' : 'down'}`} />\n                </div>\n                {isTextStyleContainerActive && (\n                  <div className=\"menu-items\">\n                    <TextStylePicker\n                      fonts={fonts}\n                      onPropertyChange={onPropertyChange}\n                      onRichTextStyleChange={onRichTextStyleChange}\n                      properties={properties}\n                      isRedaction={isRedaction}\n                    />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showColorsMenu && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openColors} onTouchStart={openColors} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.colors')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isColorsContainerActive ? 'up' : 'down'}`} />\n                </div>\n              </>\n            )}\n            {showColorPicker && (\n              <>\n                <ColorPalette\n                  color={style[currentStyleTab]}\n                  property={currentStyleTab}\n                  onStyleChange={onStyleChange}\n                  colorMapKey={colorMapKey}\n                  useMobileMinMaxWidth\n                />\n                <ColorPalettePicker\n                  color={style[currentStyleTab]}\n                  property={currentStyleTab}\n                  onStyleChange={onStyleChange}\n                  enableEdit\n                />\n              </>\n            )}\n          </>\n        )}\n        {showSliders && this.renderSliders()}\n        {showMeasurementSnappingOption && (\n          <div className=\"snapping-option\">\n            <Choice\n              dataElement=\"measurementSnappingOption\"\n              id=\"measurement-snapping\"\n              type=\"checkbox\"\n              label={i18next.t('option.shared.enableSnapping')}\n              checked={isSnapModeEnabled}\n              onChange={this.onSnappingChange}\n            />\n          </div>\n        )}\n        {showLineStyleOptions && <LineStyleOptions properties={properties} onLineStyleChange={onLineStyleChange} />}\n        {\n          !isStyleOptionDisabled &&\n          !showLineStyleOptions &&\n          !hideStylePicker &&\n          currentStyleTab === 'StrokeColor' &&\n          !isInFormBuilderAndNotFreeText && (\n            <StyleOption\n              borderStyle={Style}\n              properties={properties}\n              isEllipse={isEllipse}\n              onLineStyleChange={onLineStyleChange}\n            />\n          )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state, { colorMapKey, isFreeText, isRedaction }) => ({\n  currentStyleTab: selectors.getcurrentStyleTab(state, colorMapKey),\n  isStylePopupDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP),\n  isColorPaletteDisabled: selectors.isElementDisabled(state, DataElements.COLOR_PALETTE),\n  isOpacitySliderDisabled: selectors.isElementDisabled(state, DataElements.OPACITY_SLIDER),\n  isStrokeThicknessSliderDisabled: selectors.isElementDisabled(state, DataElements.STROKE_THICKNESS_SLIDER),\n  isFontSizeSliderDisabled:\n    selectors.isElementDisabled(state, DataElements.FONT_SIZE_SLIDER) || isFreeText || isRedaction,\n  isStyleOptionDisabled: selectors.isElementDisabled(state, DataElements.STYLE_OPTION),\n  isTextStyleContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER),\n  isColorsContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_COLORS_CONTAINER),\n  isLabelTextContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  isLabelTextContainerDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  fonts: selectors.getFonts(state),\n  isSnapModeEnabled: selectors.isSnapModeEnabled(state),\n  isInFormBuilderAndNotFreeText: core.getFormFieldCreationManager().isInFormFieldCreationMode() && !isFreeText,\n});\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n  onSnapModeChange: actions.setEnableSnapMode,\n};\nconst ConnectedStylePopup = connect(mapStateToProps, mapDispatchToProps)(StylePopup);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedStylePopup {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import StylePopup from './StylePopup';\n\nexport default StylePopup;","import React, { useState, useEffect } from 'react';\r\nimport selectors from 'selectors';\r\nimport actions from 'actions';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ColorPalettePicker from './ColorPalettePicker';\r\n\r\nfunction ColorPickerModalRedux(props) {\r\n  const { property, onStyleChange, color, enableEdit, ...rest } = props;\r\n\r\n  const dispatch = useDispatch();\r\n  const [t] = useTranslation();\r\n  const [modifyColorMode, setModifyColorMode] = useState('');\r\n  const [colorToBeDeleted, setColorToBeDeleted] = useState('');\r\n\r\n  const activeCustomColor = useSelector(selectors.getCustomColor);\r\n  const customColors = useSelector(selectors.getCustomColors);\r\n\r\n  useEffect(() => {\r\n    if (activeCustomColor && color && (modifyColorMode || getHexColor(activeCustomColor) === getHexColor(color))) {\r\n      handleColorChange(activeCustomColor);\r\n    }\r\n  }, [activeCustomColor, modifyColorMode]);\r\n\r\n  const handleDeleteColor = () => {\r\n    const updatedCustomColors = customColors.filter((color) => color !== colorToBeDeleted);\r\n    dispatch(actions.setCustomColors(updatedCustomColors));\r\n    setColorToBeDeleted('');\r\n    dispatch(actions.setCustomColor(null));\r\n  };\r\n\r\n  const getHexColor = (givenColor) => {\r\n    if (givenColor && givenColor.A) {\r\n      return givenColor.toHexString().toLowerCase();\r\n    }\r\n    return '#000000';\r\n  };\r\n\r\n  const openColorPicker = (addNew) => {\r\n    addNew ? setModifyColorMode('add') : setModifyColorMode('update');\r\n    dispatch(actions.openElement('ColorPickerModal'));\r\n  };\r\n\r\n  const openDeleteModal = async () => {\r\n    const message = t('warning.colorPicker.deleteMessage');\r\n    const title = t('warning.colorPicker.deleteTitle');\r\n    const confirmBtnText = t('action.ok');\r\n\r\n    const warning = {\r\n      message,\r\n      title,\r\n      confirmBtnText,\r\n      onConfirm: async () => {\r\n        handleDeleteColor();\r\n      },\r\n    };\r\n    dispatch(actions.showWarningMessage(warning));\r\n  };\r\n\r\n  const handleColorChange = (newColor) => {\r\n    if (newColor) {\r\n      const newColorHex = getHexColor(newColor);\r\n      const newColorExist = customColors.includes(newColorHex);\r\n      const selectedColorindex = customColors.indexOf(color?.toHexString?.()?.toLowerCase() || '');\r\n      // if add an new color or selected some pre-defined color\r\n      if (modifyColorMode === 'add') {\r\n        // add to the list if the new color doesn't exist\r\n        if (!newColorExist) {\r\n          dispatch(actions.setCustomColors([...customColors, newColorHex]));\r\n        }\r\n        // if the new color exist, then auto-selected it using (onStyleChange)\r\n      } else if (modifyColorMode === 'update') {\r\n        // if edit an existing color\r\n        // if the new color doesn't exist, then we replace it on the selected color spot\r\n        if (!newColorExist) {\r\n          const updatedCustomColors = [...customColors];\r\n          updatedCustomColors[selectedColorindex] = newColorHex;\r\n          dispatch(actions.setCustomColors(updatedCustomColors));\r\n        }\r\n        // if the new color does exist then selected the existing one using (onStyleChange)\r\n      }\r\n      onStyleChange(property, newColor);\r\n    }\r\n  };\r\n\r\n  const handleColorOnClick = (newColor) => {\r\n    onStyleChange(property, new window.Core.Annotations.Color(newColor));\r\n    if (color && color.A !== 0 && color.toHexString().toLowerCase() && newColor === color.toHexString().toLowerCase()) {\r\n      dispatch(actions.setCustomColor(color));\r\n      if (enableEdit) {\r\n        openColorPicker(false);\r\n      }\r\n    }\r\n  };\r\n\r\n  const newProps = {\r\n    ...rest,\r\n    color,\r\n    property,\r\n    getHexColor,\r\n    handleColorOnClick,\r\n    customColors,\r\n    openColorPicker,\r\n    colorToBeDeleted,\r\n    setColorToBeDeleted,\r\n    openDeleteModal,\r\n    enableEdit,\r\n  };\r\n  return <ColorPalettePicker {...newProps} />;\r\n}\r\n\r\nexport default ColorPickerModalRedux;\r\n","import ColorPalettePickerRedux from './ColorPalettePickerRedux';\r\n\r\nexport default ColorPalettePickerRedux;","import core from 'core';\nimport i18next from 'i18next';\n\nimport actions from 'actions';\nimport { fireError } from 'helpers/fireEvent';\nimport downloadPdf from 'helpers/downloadPdf';\n\nfunction noop() { }\n\nexport default (annotations, onRedactionCompleted = noop) => (dispatch) => {\n  if (core.isWebViewerServerDocument()) {\n    // when are using Webviewer Server, it'll download the redacted document\n    return webViewerServerApply(annotations, dispatch);\n  }\n  return webViewerApply(annotations, onRedactionCompleted, dispatch);\n};\n\nconst webViewerServerApply = (annotations, dispatch) => core.applyRedactions(annotations).then((results) => {\n  if (results && results.url) {\n    return downloadPdf(dispatch, {\n      filename: 'redacted.pdf',\n      includeAnnotations: true,\n      externalURL: results.url,\n    });\n  }\n  console.warn('WebViewer Server did not return a valid result');\n});\n\nconst webViewerApply = (annotations, onRedactionCompleted, dispatch) => {\n  const message = i18next.t('warning.redaction.applyMessage');\n  const title = i18next.t('warning.redaction.applyTile');\n  const confirmBtnText = i18next.t('action.apply');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: () => {\n      core.applyRedactions(annotations)\n        .then(() => {\n          onRedactionCompleted();\n        })\n        .catch((err) => fireError(err));\n      return Promise.resolve();\n    },\n  };\n\n  return dispatch(actions.showWarningMessage(warning));\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: 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 = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","/**\n * Searches the full document for the texts matching searchValue.\n * @method UI.searchTextFull\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchTextFull('test', {\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport actions from 'actions';\nimport core from 'core';\nimport { getSearchListeners } from 'helpers/search';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport selectors from 'selectors';\n\nconst onResultThrottleTimeout = 100;\n\nlet isStillProcessingResults = false;\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  const searchMode = [SearchMode.PAGE_STOP, SearchMode.HIGHLIGHT];\n\n  if (options.caseSensitive) {\n    searchMode.push(SearchMode.CASE_SENSITIVE);\n  }\n  if (options.wholeWord) {\n    searchMode.push(SearchMode.WHOLE_WORD);\n  }\n  if (options.wildcard) {\n    searchMode.push(SearchMode.WILD_CARD);\n  }\n  if (options.regex) {\n    searchMode.push(SearchMode.REGEX);\n  }\n\n  searchMode.push(SearchMode.AMBIENT_STRING);\n\n  return searchMode;\n}\n\nexport default (store) => (searchValue, options) => {\n  const dispatch = store?.dispatch;\n  // Store is optional. Default activeDocumentViewerKey is 1\n  const activeDocumentViewerKey = store ? selectors.getActiveDocumentViewerKey(store.getState()) : 1;\n  if (dispatch) {\n    // dispatch is only set when doing search through API (instance.searchText())\n    // When triggering search through UI, then redux updates are already handled inside component\n    dispatch(actions.openElement('searchPanel'));\n    dispatch(actions.searchTextFull(searchValue, options));\n  }\n\n  const searchMode = buildSearchModeFlag(options);\n  let doneCallback = () => { };\n\n  let hasActiveResultBeenSet = false;\n  let throttleResults = [];\n  let resultTimeout;\n\n  function onResult(result) {\n    throttleResults.push(result);\n    if (!resultTimeout) {\n      if (!isStillProcessingResults) {\n        isStillProcessingResults = true;\n      }\n      const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n\n      resultTimeout = setTimeout(() => {\n        activeDocumentViewer.displayAdditionalSearchResults(throttleResults);\n        throttleResults = [];\n        resultTimeout = null;\n        doneCallback();\n      }, onResultThrottleTimeout);\n    }\n\n    if (!hasActiveResultBeenSet && !isOfficeEditorMode()) {\n      // when full search is done, we make first found result to be the active result\n      activeDocumentViewer.setActiveSearchResult(result);\n      hasActiveResultBeenSet = true;\n    }\n  }\n\n  function searchInProgressCallback(isSearching) {\n    // execute search listeners when search is complete, thus hooking functionality search in progress event.\n    if (isSearching === false) {\n      doneCallback = () => {\n        const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n        const results = activeDocumentViewer.getPageSearchResults();\n        const searchOptions = {\n          // default values\n          caseSensitive: false,\n          wholeWord: false,\n          wildcard: false,\n          regex: false,\n          searchUp: false,\n          ambientString: true,\n          // override values with those user gave\n          ...options,\n        };\n        const nextResultIndex = store?.getState().search?.nextResultIndex;\n\n        const result = results[nextResultIndex];\n        if (result) {\n          // when full search is done, we make first found result to be the active result\n          activeDocumentViewer.setActiveSearchResult(result);\n        }\n        const searchListeners = getSearchListeners() || [];\n        searchListeners.forEach((listener) => {\n          try {\n            listener(searchValue, searchOptions, results);\n          } catch (e) {\n            console.error(e);\n          }\n        });\n      };\n      isStillProcessingResults = false;\n\n      if (!resultTimeout) {\n        doneCallback();\n      }\n      activeDocumentViewer.removeEventListener('searchInProgress', searchInProgressCallback);\n    }\n  }\n\n  function onDocumentEnd() { }\n\n  function handleSearchError(error) {\n    dispatch(actions.setProcessingSearchResults(false));\n    console.error(error);\n  }\n  const textSearchInitOptions = {\n    'fullSearch': true,\n    onResult,\n    onDocumentEnd,\n    'onError': handleSearchError,\n  };\n\n  const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n\n  activeDocumentViewer.clearSearchResults();\n  activeDocumentViewer.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n  activeDocumentViewer.addEventListener('searchInProgress', searchInProgressCallback);\n};\n","// The values in this array should match the language codes of the json files inside the i18n folder\nconst Languages = [\n  ['en', 'English'],\n  ['el', 'Ελληνικά'],\n  ['de', 'Deutsch'],\n  ['es', 'Español'],\n  ['fr', 'Français'],\n  ['hu', 'Magyar'],\n  ['it', 'Italiano'],\n  ['ja', '日本語'],\n  ['ko', '한국어'],\n  ['nl', 'Nederlands'],\n  ['pt_br', 'Português'],\n  ['pl', 'Polski'],\n  ['uk', 'українська'],\n  ['ru', 'Pусский'],\n  ['ro', 'Romanian'],\n  ['sv', 'Svenska'],\n  ['tr', 'Türk'],\n  ['th', 'ไทย'],\n  ['vi', 'Tiếng Việt'],\n  ['ms', 'Melayu'],\n  ['hi', 'हिन्दी'],\n  ['bn', 'বাংলা'],\n  ['zh_cn', '简体中文'],\n  ['zh_tw', '繁體中文'],\n  ['cs', 'česky, čeština'],\n  ['id', 'Bahasa Indonesia']\n];\n\n/**\n * Contains string enums for the default languages found in WebViewer.\n * @name UI.Languages\n * @property {string} EN English (en)\n * @property {string} CS česky, čeština (cs)\n * @property {string} EL Ελληνικά (el)\n * @property {string} DE Deutsch (de)\n * @property {string} ES Español (es)\n * @property {string} FR Français (fr)\n * @property {string} HU Magyar (hu)\n * @property {string} IT Italiano (it)\n * @property {string} JA 日本語 (ja)\n * @property {string} KO 한국어 (ko)\n * @property {string} NL Nederlands (nl)\n * @property {string} PT_BR Português (pt_br)\n * @property {string} PL Polski (pl)\n * @property {string} UK українська (uk)\n * @property {string} RU Pусский (ru)\n * @property {string} RO Romanian (ro)\n * @property {string} SV Svenska (sv)\n * @property {string} TR Türk (tr)\n * @property {string} TH ไทย (th)\n * @property {string} VI Tiếng Việt (vi)\n * @property {string} ID Bahasa Indonesia (id)\n * @property {string} MS Melayu (ms)\n * @property {string} HI हिन्दी (hi)\n * @property {string} BN বাংলা (bn)\n * @property {string} ZH_CN 简体中文 (zh_cn)\n * @property {string} ZH_TW 繁體中文 (zh_tw)\n * @example\n  WebViewer(...).then(function(instance) {\n    instance.UI.setLanguage(instance.UI.Languages.FR);\n  });\n */\n\nexport const languageEnum = Languages.reduce((acc, pair) => {\n  const code = pair[0];\n  acc[code.toUpperCase()] = code;\n  return acc;\n}, {});\n\nexport default Languages;\n","import actions from 'actions';\n\nconst DEFAULT_REVOCATION_PROXY_PREFIX = 'https://proxy.pdftron.com';\n\n/**\n * Side-effect function that sets the verification status of the document.\n * One of three possible results can happen:\n *\n * 1. Valid: All signatures have been successfully verified\n * 2. Unknown: One or more signatures has issues, but the verification API\n * cannot definitively state the signatures are valid or invalid (i.e. a\n * required Public Key Certificate is missing)\n * 3. Invalid: The document has been digitally signed, but has one or more\n * invalid signatures (i.e. because the document was modified after it was\n * signed, and one or more signature field did not allow for this to occur)\n *\n * The above results are dictated by the return values of:\n *\n * PDFNet.VerificationResult.getDocumentStatus:\n * https://docs.apryse.com/api/web/Core.PDFNet.VerificationResult.html#getDocumentStatus__anchor\n *\n * PDFNet.VerificationResult.getTrustStatus:\n * https://docs.apryse.com/api/web/Core.PDFNet.VerificationResult.html#getTrustStatus__anchor\n *\n * PDFNet.VerificationResult.getDigestStatus:\n * https://docs.apryse.com/api/web/Core.PDFNet.VerificationResult.html#getDigestStatus__anchor\n *\n * PDFNet.VerificationResult.getPermissionsStatus:\n * https://docs.apryse.com/api/web/Core.PDFNet.VerificationResult.html#getPermissionsStatus__anchor\n *\n * Valid:\n * DocumentStatus.e_no_error && TrustStatus.e_trust_verified\n *\n * Unknown:\n * DocumentStatus.e_no_error\n * && (\n *  DigestStatus.e_digest_verified\n *  || DigestStatus.e_digest_verification_disabled\n * ) && trustStatus !== TrustStatus.e_no_trust_status\n * && (\n *   ModificationPermissionsStatus.e_unmodified\n *   || ModificationPermissionsStatus.e_has_allowed_changes\n *   || ModificationPermissionsStatus.e_permissions_verification_disabled\n * )\n *\n * Any other combinations will cause the signature field to be considered\n * Invalid.\n * @ignore\n */\nexport default async (doc, certificates, trustLists, currentLanguage, revocationChecking, revocationProxyPrefix, dispatch) => {\n  const verificationResult = await getVerificationResult(doc, certificates, trustLists, currentLanguage, revocationChecking, revocationProxyPrefix);\n  dispatch(actions.setVerificationResult(verificationResult));\n  return verificationResult;\n};\n\n/**\n * Iterates through each signature widget in the document, retrieves and returns\n * all pertinent information pertaining to Digital Signature Verification\n *\n * @param {Core.Document} doc The document with signatures to verify\n * with the given certificate\n * @param {Array<File | string>} certificates The certificate files to be used\n * for verification. Can be passed as a File object, or a URL in the form\n * of a string, in which a GET call will be made to retrieve the certificate\n * @param {\n *   Array<Blob | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray>\n * } trustLists The Trust Lists to load for verification.\n * @param {string} currentLanguage Current UI language\n * @param {boolean} revocationChecking Determines if the PDFNet API\n * VerificationOptions.enableOnlineCRLRevocationChecking is invoked to enable\n * Online Certification Revocation List (CRL) Revocation Checking is done\n * within the PDFNet logic\n * @param {string} revocationProxyPrefix The URL of a proxy server that should\n * be used to avoid CORS related issues when contacting Certificate Revocation\n * List (CRL) servers\n * @returns {object} An object mapping the field name of each signature widget\n * to their verification results\n * @ignore\n */\nconst getVerificationResult = async (doc, certificates, trustLists, currentLanguage, revocationChecking, revocationProxyPrefix) => {\n  const { PDFNet } = window.Core;\n  const { VerificationResult } = PDFNet;\n  const {\n    TrustStatus,\n    DigestStatus,\n    ModificationPermissionsStatus,\n    DocumentStatus,\n  } = VerificationResult;\n  const verificationResults = {};\n\n\n  await PDFNet.runWithCleanup(async () => {\n    /**\n     * @todo Remove re-assignment of argument from original code?\n     */\n    doc = await doc.getPDFDoc();\n    const opts = await PDFNet.VerificationOptions.create(\n      PDFNet.VerificationOptions.SecurityLevel.e_compatibility_and_archiving\n    );\n\n    if (revocationChecking) {\n      await opts.enableOnlineCRLRevocationChecking(true);\n    }\n\n    if (revocationProxyPrefix === null) {\n      await opts.setRevocationProxyPrefix(DEFAULT_REVOCATION_PROXY_PREFIX);\n    } else if (revocationProxyPrefix !== undefined) {\n      await opts.setRevocationProxyPrefix(revocationProxyPrefix);\n    }\n\n    for (const certificate of certificates) {\n      if (typeof certificate === 'string') {\n        try {\n          await opts.addTrustedCertificateFromURL(certificate);\n        } catch {\n          console.error(\n            `Error encountered when trying to load certificate from URL: ${certificate}\\n`\n            + 'Certificate will not be used as part of verification process.'\n          );\n          continue;\n        }\n      } else if (\n        certificate instanceof File ||\n        Object.prototype.toString.call(certificate) === '[object File]'\n      ) {\n        const fileReader = new FileReader();\n        const arrayBufferPromise = new Promise((resolve, reject) => {\n          fileReader.addEventListener('load', async (e) => {\n            resolve(new Uint8Array(e.target.result));\n          });\n          fileReader.addEventListener('error', () => {\n            reject('Error reading the local certificate');\n          });\n\n          fileReader.readAsArrayBuffer(certificate);\n        });\n        try {\n          await opts.addTrustedCertificate(await arrayBufferPromise);\n        } catch (error) {\n          console.error(\n            `Error encountered when trying to load certificate: ${error}`\n            + 'Certificate will not be used as part of the verification process.'\n          );\n          continue;\n        }\n      } else if (\n        certificate instanceof ArrayBuffer\n        || certificate instanceof Int8Array\n        || certificate instanceof Uint8Array\n        || certificate instanceof Uint8ClampedArray\n      ) {\n        try {\n          await opts.addTrustedCertificate(certificate);\n        } catch (error) {\n          console.error(\n            `Error encountered when trying to load certificate: ${error}`\n            + 'Certificate will not be used as part of the verification process.'\n          );\n          continue;\n        }\n      }\n    }\n\n    for (const trustList of trustLists) {\n      const trustListDataStructure = trustList.constructor.name;\n      const supportedDataStructures = [\n        'ArrayBuffer',\n        'Int8Array',\n        'Uint8Array',\n        'Uint8ClampedArray',\n      ];\n      let fdfDocBuffer;\n      if (trustListDataStructure === 'Blob') {\n        fdfDocBuffer = await trustList.arrayBuffer();\n      } else if (supportedDataStructures.includes(trustListDataStructure)) {\n        fdfDocBuffer = trustList;\n      } else {\n        console.error(\n          'The provided TrustList is an unsupported data-structure. '\n          + 'Please ensure the TrustList is formatted as one of the following '\n          + `data-structures: ${[...supportedDataStructures, 'Blob'].join('|')}`\n        );\n        continue;\n      }\n      try {\n        const fdf = await PDFNet.FDFDoc.createFromMemoryBuffer(fdfDocBuffer);\n        await opts.loadTrustList(fdf);\n      } catch (error) {\n        console.error(\n          `Error encountered when trying to load certificate: ${error}. `\n          + 'Certificate will not be used as part of the verification process.'\n        );\n        continue;\n      }\n    }\n\n    const fieldIterator = await doc.getFieldIteratorBegin();\n    for (; (await fieldIterator.hasNext()); fieldIterator.next()) {\n      const field = await fieldIterator.current();\n      if (\n        !(await field.isValid())\n        || await field.getType() !== PDFNet.Field.Type.e_signature\n      ) {\n        continue;\n      }\n      const digitalSigField = await PDFNet.DigitalSignatureField.createFromField(field);\n      try {\n        const result = await digitalSigField.verify(opts);\n        const id = await (await digitalSigField.getSDFObj()).getObjNum();\n\n        let signer;\n        let signTime;\n        let documentPermission;\n        let isCertification;\n        let contactInfo;\n        let location;\n        let reason;\n        let validAtTimeOfSigning;\n        let signerName;\n        const issuerField = {};\n        const subjectField = {};\n\n        const signed = await digitalSigField.hasCryptographicSignature();\n        if (signed) {\n          const subFilter = await digitalSigField.getSubFilter();\n          if (subFilter === PDFNet.DigitalSignatureField.SubFilterType.e_adbe_pkcs7_detached) {\n            const signerCert = await digitalSigField.getSignerCertFromCMS();\n            /**\n             * @note \"Issuer\" refers to the Certificate Authority that issued the\n             * certificate\n             * \"Subject\" refers to the organization/person that the Certificate\n             * Auhority issued this certificate to\n             *\n             * It is likely that future UI iterations will leverage Issuer\n             * information, so the code has been commented out for now, but will\n             * be uncommented in future feature implementations\n             */\n            // const retrievedIssuerField = await signerCert.getIssuerField();\n            // const processedIssuerField = await processX501DistinguishedName(retrievedIssuerField) || {};\n            const retrievedSubjectField = await signerCert.getSubjectField();\n            const processedSubjectField = await processX501DistinguishedName(retrievedSubjectField) || {};\n            signer = processedSubjectField['e_commonName'];\n          }\n          // Getter functions cannot be called on Digital Signature fields using\n          // e_ETSI_RFC3161\n          if (subFilter !== PDFNet.DigitalSignatureField.SubFilterType.e_ETSI_RFC3161) {\n            if (!signer) {\n              signer = (\n                await digitalSigField.getSignatureName()\n                || await digitalSigField.getContactInfo()\n              );\n            }\n            signTime = await digitalSigField.getSigningTime();\n\n            if (await signTime.isValid()) {\n              signTime = formatPDFNetDate(signTime, currentLanguage);\n            } else {\n              signTime = null;\n            }\n\n            contactInfo = await digitalSigField.getContactInfo();\n            location = await digitalSigField.getLocation();\n            reason = await digitalSigField.getReason();\n          }\n\n          documentPermission = await digitalSigField.getDocumentPermissions();\n          isCertification = await digitalSigField.isCertification();\n        }\n\n        const verificationStatus = await result.getVerificationStatus();\n        const documentStatus = await result.getDocumentStatus();\n        const digestStatus = await result.getDigestStatus();\n        const trustStatus = await result.getTrustStatus();\n        const permissionStatus = await result.getPermissionsStatus();\n        const digestAlgorithm = await result.getDigestAlgorithm();\n        const disallowedChanges = await Promise.all(\n          (await result.getDisallowedChanges()).map(async (change) => ({\n            objnum: await change.getObjNum(),\n            type: await change.getTypeAsString(),\n          }))\n        );\n        const validSignerIdentity = trustStatus === TrustStatus.e_trust_verified;\n\n        let trustVerificationResultString;\n        let trustVerificationResultBoolean;\n        let timeOfTrustVerificationEnum;\n        let trustVerificationTime;\n        const hasTrustVerificationResult = await result.hasTrustVerificationResult();\n        if (hasTrustVerificationResult) {\n          const trustVerificationResult = await result.getTrustVerificationResult();\n\n          trustVerificationResultBoolean = await trustVerificationResult.wasSuccessful();\n          trustVerificationResultString = await trustVerificationResult.getResultString();\n          timeOfTrustVerificationEnum = await trustVerificationResult.getTimeOfTrustVerificationEnum();\n\n          const epochTrustVerificationTime = await trustVerificationResult.getTimeOfTrustVerification();\n          if (epochTrustVerificationTime) {\n            trustVerificationTime = formatDate(epochTrustVerificationTime, currentLanguage);\n          }\n          const certPath = await trustVerificationResult.getCertPath();\n          if (certPath.length) {\n            const firstX509Cert = certPath[0];\n            const retrievedIssuerField = await firstX509Cert.getIssuerField();\n            const processedIssuerField = await processX501DistinguishedName(retrievedIssuerField);\n            Object.assign(issuerField, processedIssuerField);\n            const retrievedSubjectField = await firstX509Cert.getSubjectField();\n            const processedSubjectField = await processX501DistinguishedName(retrievedSubjectField);\n            Object.assign(subjectField, processedSubjectField);\n            const lastX509Cert = certPath[certPath.length - 1];\n            /**\n             * @todo @colim @rdjericpdftron 2022-05-30\n             * Using the pdftron::PDF::VerificationOptions::LoadTrustList API\n             * in combination with\n             * pdftron::Crypto::X509Certificate::GetNotBeforeEpochTime\n             * or\n             * pdftron::Crypto::X509Certificate::GetNotAfterEpochTime\n             * Results in the following fatal error being thrown:\n             *\n             * calendar_point::to_std_timepoint() does not support years after\n             * 2037 on this system\n             *\n             * @rdjericpdftron Mentions that this should be addressed in a\n             * future release of PDFNet when the Botan library has been patched\n             */\n            try {\n              const notBeforeEpochTime = await lastX509Cert.getNotBeforeEpochTime();\n              const notAfterEpochTime = await lastX509Cert.getNotAfterEpochTime();\n              validAtTimeOfSigning = (\n                notAfterEpochTime >= epochTrustVerificationTime\n                && epochTrustVerificationTime >= notBeforeEpochTime\n              );\n            } catch (dateBugError) {\n              if (dateBugError.includes('calendar_point::to_std_timepoint() does not support years after')) {\n                console.warn(\n                  'The following error is a known issue with Botan, and aims to be addressed in a future release of '\n                  + 'PDFNet. This currently does not impact PDFTron\\'s Digital Signature Verification capabilities.'\n                );\n                console.warn(dateBugError);\n              }\n            }\n          }\n        }\n\n        let badgeIcon;\n        if (verificationStatus) {\n          badgeIcon = 'digital_signature_valid';\n        } else if (\n          documentStatus === DocumentStatus.e_no_error &&\n          (digestStatus === DigestStatus.e_digest_verified ||\n            digestStatus === DigestStatus.e_digest_verification_disabled) &&\n          trustStatus !== TrustStatus.e_no_trust_status &&\n          (permissionStatus === ModificationPermissionsStatus.e_unmodified ||\n            permissionStatus === ModificationPermissionsStatus.e_has_allowed_changes ||\n            permissionStatus === ModificationPermissionsStatus.e_permissions_verification_disabled)\n        ) {\n          badgeIcon = 'digital_signature_warning';\n        } else {\n          badgeIcon = 'digital_signature_error';\n        }\n\n        if (signer) {\n          signerName = signer;\n        } else if (!signer && subjectField.e_commonName) {\n          signerName = subjectField.e_commonName;\n        }\n        const fieldName = await field.getName();\n        verificationResults[fieldName] = {\n          signed,\n          signer,\n          signerName,\n          signTime,\n          verificationStatus,\n          documentStatus,\n          digestStatus,\n          trustStatus,\n          permissionStatus,\n          disallowedChanges,\n          trustVerificationResultBoolean,\n          trustVerificationResultString,\n          timeOfTrustVerificationEnum,\n          trustVerificationTime,\n          id,\n          badgeIcon,\n          validSignerIdentity,\n          digestAlgorithm,\n          documentPermission,\n          isCertification,\n          contactInfo,\n          location,\n          reason,\n          issuerField,\n          subjectField,\n          validAtTimeOfSigning,\n        };\n      } catch (e) {\n        console.error(e);\n      }\n    }\n  });\n\n  return verificationResults;\n};\n\n/**\n * Retrieves the relevant information from the given object, containing date\n * information that originates from epoch time, and returns a string containing\n * the date and time information in a human readable string\n *\n * @param {object} date The date object that is returned from PDFNet\n * @returns {string} Human readable formatted date and time\n * @ignore\n */\nconst formatPDFNetDate = (date, currentLanguage) => {\n  const { year, month, day, hour, minute, second } = date;\n  const d = new Date(Date.UTC(year, month - 1, day, hour, minute, second));\n\n  return d.toLocaleDateString(currentLanguage.replace('_', '-'), {\n    year: 'numeric',\n    month: 'long',\n    weekday: 'long',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n    timeZoneName: 'short',\n  });\n};\n\n/**\n * Converts an epoch time input to date in string\n *\n * @param {number} epochTime The epoch time to be converted\n * @returns {string} The converted epoch time\n * @ignore\n */\nconst formatDate = (epochTime, currentLanguage) => {\n  const date = new Date(0);\n  // Values greater than 59 are converted into their parent values\n  // (i.e. seconds -> minutes -> hours -> day etc.)\n  date.setUTCSeconds(epochTime);\n\n  return date.toLocaleDateString(currentLanguage.replace('_', '-'), {\n    year: 'numeric',\n    month: 'long',\n    weekday: 'long',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n    timeZoneName: 'short',\n  });\n};\n\n/**\n * Processes an instance of the PDFNet.X501DistinguishedName class into a\n * Javascript object that is human readable\n *\n * Intended to process the objects returned from invoking\n * PDFNet.X509Certificate.GetIssuerField and\n * PDFNet.X509Certificate.GetSubjectField\n *\n * @param {PDFNet.X501DistinguishedName} x501DistinguishedNameObject An instance\n * of the PDFNet.X501DistinguishedName class, to be processed into a Javascript\n * object\n * @returns {object} Maps human readable keys (as opposed to the Botan Crpyto\n * OIDs, represented as Array<int> in PDFTron Core) to the corresponding values\n * they map to\n * @ignore\n */\nconst processX501DistinguishedName = async (x501DistinguishedNameObject) => {\n  const processedObject = {};\n  const allAttributeAndValues = await x501DistinguishedNameObject.getAllAttributesAndValues();\n  for (const x501AttributeTypeAndValue of allAttributeAndValues) {\n    const objectIdentifier = await x501AttributeTypeAndValue.getAttributeTypeOID();\n    const key = await objectIdentifier.getRawValue();\n    const value = await x501AttributeTypeAndValue.getStringValue();\n    processedObject[translateObjectIdentifierBotanOID(key)] = value;\n  }\n  return processedObject;\n};\n\n/**\n * Takes an Array<Number> argument (or its string representation from\n * JSON.stringify) and returns the enum it is supposed to represent based on\n * its OID representation in the Botan crypto C++ library\n *\n * PDFTron Core represents the key from the original Map<string, string>\n * data-structre in the form of an array\n *\n * @example The key of the object\n * { \"2.5.4.3\", \"X520.CommonName\" }\n * Is represented as [2,5,4,3] in PDFTron Core\n *\n * Source: https://botan.randombit.net/doxygen/oid__maps_8cpp_source.html\n *\n * @param {string | Array<Number>} objectIdentifierOIDenum The array returned\n * from the invocation of PDFNet.ObjectIdentifier.getRawValue, which can be\n * accepted as the Array input (which the body of the function will convert to a\n * string), or a string representation of the array\n * @returns {string} The human readable enum that the array represents\n * @ignore\n */\nconst translateObjectIdentifierBotanOID = (objectIdentifierOIDenum) => {\n  const botanArrayToEnum = {\n    '[2,5,4,3]': 'e_commonName',\n    '[2,5,4,4]': 'e_surname',\n    '[2,5,4,6]': 'e_countryName',\n    '[2,5,4,7]': 'e_localityName',\n    '[2,5,4,8]': 'e_stateOrProvinceName',\n    '[2,5,4,9]': 'e_streetAddress',\n    '[2,5,4,10]': 'e_organizationName',\n    '[2,5,4,11]': 'e_organizationalUnitName',\n    /**\n     * @note Added by @CorreyL, enum is not in PDFTronCore codebase as of\n     * PDFNetJS8.1\n     *\n     * Listed as { \"1.2.840.113549.1.9.1\", \"PKCS9.EmailAddress\" }\n     * in load_oid2str_map()\n     */\n    '[1,2,840,113549,1,9,1]': 'e_emailAddress',\n  };\n  const arrayAsString = (typeof objectIdentifierOIDenum === 'string')\n    ? objectIdentifierOIDenum\n    : JSON.stringify(objectIdentifierOIDenum);\n  return botanArrayToEnum[arrayAsString];\n};\n","import React from 'react';\nimport './Spinner.scss';\n\nconst Spinner = () => <div className=\"spinner\" />;\n\nexport default Spinner;\n","import React, {\n  useEffect,\n  useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\n\nimport core from 'core';\nimport getRootNode from 'helpers/getRootNode';\n\nconst WidgetLocator = ({ rect }) => {\n  const [show, setShow] = useState(false);\n\n  useEffect(() => {\n    const scrollViewContainer = core.getScrollViewElement();\n    const handleScroll = () => {\n      setShow(false);\n    };\n\n    scrollViewContainer.addEventListener('scroll', handleScroll);\n    return () => scrollViewContainer.removeEventListener('scroll', handleScroll);\n  });\n\n  useEffect(() => {\n    if (rect) {\n      setTimeout(() => {\n        // so that the locator won't disappear because of the scroll\n        setShow(true);\n      }, 50);\n\n      setTimeout(() => {\n        setShow(false);\n      }, 700);\n    }\n  }, [rect]);\n\n  return (\n    show &&\n    ReactDOM.createPortal(\n      <div\n        style={{\n          position: 'absolute',\n          top: rect.y1,\n          left: rect.x1,\n          width: rect.x2 - rect.x1,\n          height: rect.y2 - rect.y1,\n          border: '1px solid #00a5e4',\n          zIndex: 100,\n        }}\n      />,\n      getRootNode().querySelector('#app')\n    )\n  );\n};\n\nexport default WidgetLocator;\n","import WidgetLocator from './WidgetLocator';\n\nexport default WidgetLocator;\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport core from 'core';\nimport selectors from 'selectors';\n\nimport SignatureIcon from 'components/SignaturePanel/SignatureIcon';\nimport Icon from 'components/Icon';\nimport WidgetLocator from '../WidgetLocator';\n\nimport './WidgetInfo.scss';\n\nexport const renderPermissionStatus = ({\n  isCertification,\n  ModificationPermissionsStatus,\n  permissionStatus,\n  translate,\n}) => {\n  let content;\n\n  switch (permissionStatus) {\n    case ModificationPermissionsStatus.e_invalidated_by_disallowed_changes:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.invalidatedByDisallowedChanges'\n      );\n      break;\n    case ModificationPermissionsStatus.e_has_allowed_changes:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.hasAllowedChanges'\n      );\n      break;\n    case ModificationPermissionsStatus.e_unmodified:\n      content = `${\n        translate('digitalSignatureVerification.permissionStatus.unmodified')\n      } ${\n        isCertification\n          ? translate('digitalSignatureVerification.certified')\n          : translate('digitalSignatureVerification.signed')\n      }.`;\n      break;\n    case ModificationPermissionsStatus.e_permissions_verification_disabled:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.permissionsVerificationDisabled'\n      );\n      break;\n    case ModificationPermissionsStatus.e_no_permissions_status:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.noPermissionsStatus'\n      );\n      break;\n  }\n\n  return <p>{content}</p>;\n};\n\nconst propTypes = {\n  name: PropTypes.string.isRequired,\n  collapsible: PropTypes.bool.isRequired,\n  onClick: PropTypes.func,\n  field: PropTypes.instanceOf(window.Core.Annotations.Forms.Field),\n};\n\nconst WidgetInfo = ({ name, collapsible, field }) => {\n  const verificationResult = useSelector((state) => selectors.getVerificationResult(state, name));\n  const [isExpanded, setIsExpanded] = useState(true);\n  const [locatorRect, setLocatorRect] = useState(null);\n  const [signatureDetailsExpanded, setSignatureDetailsExpanded] = useState(false);\n  const { VerificationResult, VerificationOptions } = window.Core.PDFNet;\n  const { TimeMode } = VerificationOptions;\n  const { ModificationPermissionsStatus } = VerificationResult;\n  const [translate] = useTranslation();\n\n  const {\n    signed,\n    signTime,\n    verificationStatus,\n    permissionStatus,\n    disallowedChanges,\n    trustVerificationResultBoolean,\n    timeOfTrustVerificationEnum,\n    trustVerificationTime,\n    badgeIcon,\n    isCertification,\n    contactInfo,\n    location,\n    reason,\n    signerName,\n  } = verificationResult;\n\n  const dispatch = useDispatch();\n\n  const handleArrowClick = (e) => {\n    e.stopPropagation();\n    setIsExpanded(!isExpanded);\n  };\n\n  /**\n   * Side-effect function that highlights the SignatureWidgetAnnotation\n   * pertaining to the text element that was clicked by using core code to find\n   * the coordinates of the widget on the page it is placed on\n   *\n   * @param {Annotations.Forms.Field} field The field pertaining\n   * to the text element clicked in the Signature Panel\n   */\n  const jumpToWidget = (field) => {\n    if (!field.widgets.length) {\n      return;\n    }\n    const widget = field.widgets[0];\n    core.jumpToAnnotation(widget);\n\n    const { scrollLeft, scrollTop } = core.getScrollViewElement();\n    const rect = widget.getRect();\n    const windowTopLeft = core\n      .getDisplayModeObject()\n      .pageToWindow({ x: rect.x1, y: rect.y1 }, widget.PageNumber);\n    const windowBottomRight = core\n      .getDisplayModeObject()\n      .pageToWindow({ x: rect.x2, y: rect.y2 }, widget.PageNumber);\n\n    setLocatorRect({\n      x1: windowTopLeft.x - scrollLeft,\n      y1: windowTopLeft.y - scrollTop,\n      x2: windowBottomRight.x - scrollLeft,\n      y2: windowBottomRight.y - scrollTop,\n    });\n  };\n\n  /**\n   * Function that invokes the necessary methods when a user interacts with\n   * the title of the widget\n   *\n   * @param {Event} event The event that is passed from an onClick or onKeyPress\n   * interaction\n   */\n  const titleInteraction = (event) => {\n    handleArrowClick(event);\n    jumpToWidget(field);\n  };\n\n  const renderTitle = () => {\n    let content = isCertification\n      ? translate('digitalSignatureVerification.Certified')\n      : translate('digitalSignatureVerification.Signed');\n    content += ` ${translate('digitalSignatureVerification.by')} ${signerName || translate('digitalSignatureModal.unknown')}`;\n    if (signTime) {\n      content += ` ${translate('digitalSignatureVerification.on')} ${signTime}`;\n    }\n    return (\n      <div\n        className=\"title dropdown\"\n        onClick={titleInteraction}\n        onKeyPress={titleInteraction}\n        role=\"button\"\n        tabIndex={0}\n      >\n        {collapsible && (\n          <div\n            className={classNames({\n              arrow: true,\n              expanded: isExpanded,\n            })}\n          >\n            <Icon glyph=\"ic_chevron_right_black_24px\" />\n          </div>\n        )}\n        <SignatureIcon badge={badgeIcon} size=\"small\"/>\n        <p>{content}</p>\n      </div>\n    );\n  };\n\n  const renderVerificationStatus = () => {\n    const verificationType = isCertification\n      ? translate('digitalSignatureVerification.Certification')\n      : translate('digitalSignatureVerification.Signature');\n    return (\n      <div className=\"title\">\n        <p>\n          {\n            verificationStatus\n              ? translate('digitalSignatureVerification.verificationStatus.valid', { verificationType })\n              : translate('digitalSignatureVerification.verificationStatus.failed', { verificationType })\n          }\n        </p>\n      </div>\n    );\n  };\n\n  const renderPermissionStatus = () => {\n    let content;\n\n    switch (permissionStatus) {\n      case ModificationPermissionsStatus.e_invalidated_by_disallowed_changes:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.invalidatedByDisallowedChanges'\n        );\n        break;\n      case ModificationPermissionsStatus.e_has_allowed_changes:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.hasAllowedChanges'\n        );\n        break;\n      case ModificationPermissionsStatus.e_unmodified:\n        content = `${\n          translate('digitalSignatureVerification.permissionStatus.unmodified')\n        } ${\n          isCertification\n            ? translate('digitalSignatureVerification.certified')\n            : translate('digitalSignatureVerification.signed')\n        }.`;\n        break;\n      case ModificationPermissionsStatus.e_permissions_verification_disabled:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.permissionsVerificationDisabled'\n        );\n        break;\n      case ModificationPermissionsStatus.e_no_permissions_status:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.noPermissionsStatus'\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  const renderDisallowedChanges = () => {\n    return disallowedChanges.map(({ objnum, type }) => (\n      <p key={objnum}>\n        {\n          translate(\n            'digitalSignatureVerification.disallowedChange',\n            { type, objnum }\n          )\n        }\n      </p>\n    ));\n  };\n\n  const renderTrustVerification = () => {\n    let verificationTimeMessage;\n    switch (timeOfTrustVerificationEnum) {\n      case (TimeMode.e_current):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.current')\n        );\n        break;\n      case (TimeMode.e_signing):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.signing')\n        );\n        break;\n      case (TimeMode.e_timestamp):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.timestamp')\n        );\n        break;\n      default:\n        console.warn(\n          `Unexpected pdftron::PDF::VerificationOptions::TimeMode: ${timeOfTrustVerificationEnum}`\n        );\n    }\n    return (\n      <div className=\"trust-verification-result\">\n        <p>\n          {\n            translate(\n              trustVerificationResultBoolean\n                ? 'digitalSignatureVerification.trustVerification.verifiedTrust'\n                : 'digitalSignatureVerification.trustVerification.noTrustVerification'\n            )\n          }\n        </p>\n        {\n          /**\n           * @todo Chat with @rastko when he is available to determine what\n           * content from `trustVerificationResultString` could potentially\n           * be important to show to users\n           *\n           * <div>\n           *   <p className='bold'>Trust verification result:</p>\n           *   {\n           *     trustVerificationResultString.split('\\n').map((line, idx) => {\n           *       return (\n           *         <p\n           *           key={`trustVerificationResultString-${idx}`}\n           *           className={line[0] === '\\t' ? '' : 'bold'}\n           *         >\n           *           {line}\n           *         </p>\n           *       );\n           *     })\n           *   }\n           * </div>\n           */\n        }\n        <p>{trustVerificationTime}</p>\n        <p>{verificationTimeMessage}</p>\n      </div>\n    );\n  };\n\n  const renderSignatureDetails = () => {\n    // No additional signature details to render\n    if (!contactInfo && !location && !reason) {\n      return null;\n    }\n    return (\n      <div>\n        <div\n          className=\"title dropdown\"\n          onClick={\n            () => setSignatureDetailsExpanded(!signatureDetailsExpanded)\n          }\n          onKeyPress={\n            () => setSignatureDetailsExpanded(!signatureDetailsExpanded)\n          }\n          role=\"button\"\n          tabIndex={0}\n        >\n          <div\n            className={classNames({\n              arrow: true,\n              expanded: signatureDetailsExpanded,\n            })}\n          >\n            <Icon glyph=\"ic_chevron_right_black_24px\" />\n          </div>\n          <p>\n            {\n              translate(\n                'digitalSignatureVerification.signatureDetails.signatureDetails'\n              )\n            }\n          </p>\n        </div>\n        {\n          signatureDetailsExpanded\n          && (\n            <div className=\"body\">\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.contactInformation')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    contactInfo\n                    || translate('digitalSignatureVerification.signatureDetails.noContactInformation')\n                  }\n                </p>\n              </div>\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.location')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    location\n                    || translate('digitalSignatureVerification.signatureDetails.noLocation')\n                  }\n                </p>\n              </div>\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.reason')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    reason\n                    || translate('digitalSignatureVerification.signatureDetails.noReason')\n                  }\n                </p>\n              </div>\n              {\n                signTime && (\n                  <div>\n                    <p className=\"bold\">\n                      {\n                        `${translate('digitalSignatureVerification.signatureDetails.signingTime')}:`\n                      }\n                    </p>\n                    <p className=\"result-for-header\">\n                      {\n                        signTime\n                        || translate('digitalSignatureVerification.signatureDetails.noSigningTime')\n                      }\n                    </p>\n                  </div>\n                )\n              }\n            </div>\n          )\n        }\n      </div>\n    );\n  };\n\n  const openSignatureModal = () => {\n    dispatch(actions.setSignatureValidationModalWidgetName(name));\n    dispatch(actions.openElement('signatureValidationModal'));\n  };\n\n  /**\n   * Renders a link to open the signature modal\n   */\n  const renderSignaturePropertiesLink = () => {\n    return (\n      <div\n        onClick={openSignatureModal}\n        onKeyPress={openSignatureModal}\n        role=\"button\"\n        tabIndex={0}\n        className=\"link\"\n      >\n        <p className=\"bold underline\">{translate('digitalSignatureVerification.signatureProperties')}</p>\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className=\"signature-widget-info\"\n    >\n      {signed ? (\n        <React.Fragment>\n          {renderTitle()}\n          {isExpanded && (\n            <div>\n              <div className=\"header\">\n                {\n                  renderVerificationStatus({\n                    isCertification,\n                    verificationStatus,\n                  })\n                }\n                <div className=\"body\">\n                  {\n                    renderPermissionStatus({\n                      isCertification,\n                      ModificationPermissionsStatus,\n                      permissionStatus,\n                      translate,\n                    })\n                  }\n                  {renderDisallowedChanges()}\n                  {renderTrustVerification()}\n                  {renderSignaturePropertiesLink()}\n                </div>\n              </div>\n              <div className=\"header header-with-arrow\">\n                {renderSignatureDetails()}\n              </div>\n            </div>\n          )}\n        </React.Fragment>\n      ) : (\n        <React.Fragment>\n          <div\n            className=\"title link\"\n            tabIndex={0}\n            onClick={() => jumpToWidget(field)}\n            onKeyPress={() => jumpToWidget(field)}\n          >\n            <SignatureIcon />\n            <p>{translate('digitalSignatureVerification.unsignedSignatureField', { fieldName: field.name })}</p>\n          </div>\n        </React.Fragment>\n      )}\n      <WidgetLocator rect={locatorRect} />\n    </div>\n  );\n};\n\nWidgetInfo.propTypes = propTypes;\n\nexport default WidgetInfo;\n","import WidgetInfo, { renderPermissionStatus } from './WidgetInfo';\n\nexport default WidgetInfo;\nexport {\n  renderPermissionStatus\n};\n","import React, { useCallback, useEffect, useState, } from 'react';\nimport { useDispatch, useSelector, } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport actions from 'actions';\nimport core from 'core';\nimport selectors from 'selectors';\nimport setVerificationResult from 'helpers/setVerificationResult';\n\nimport Spinner from './Spinner';\nimport WidgetInfo from './WidgetInfo';\n\nimport './SignaturePanel.scss';\n\nconst SignaturePanel = () => {\n  const dispatch = useDispatch();\n  const [fields, setFields] = useState([]);\n  const [showSpinner, setShowSpinner] = useState(false);\n  const [certificateErrorMessage, setCertificateErrorMessage] = useState('');\n  const [document, setDocument] = useState(core.getDocument());\n  const [\n    isDisabled,\n    certificate,\n    trustLists,\n    currentLanguage,\n    revocationChecking,\n    revocationProxyPrefix,\n  ] = useSelector((state) => [\n    selectors.isElementDisabled(state, 'signaturePanel'),\n    selectors.getCertificates(state),\n    selectors.getTrustLists(state),\n    selectors.getCurrentLanguage(state),\n    selectors.getIsRevocationCheckingEnabled(state),\n    selectors.getRevocationProxyPrefix(state),\n  ]);\n  const [translate] = useTranslation();\n\n  const onDocumentLoaded = async () => {\n    setDocument(core.getDocument());\n  };\n\n  const onDocumentUnloaded = useCallback(() => {\n    setShowSpinner(true);\n    dispatch(actions.setVerificationResult({}));\n  }, [setShowSpinner, dispatch]);\n\n  useEffect(() => {\n    // This ensures that when the document loads, the state of this component is\n    // updated accordingly\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n    };\n  }, [onDocumentUnloaded]);\n\n  useEffect(() => {\n    // Need certificates for PDFNet to verify against, and for the document\n    // to be loaded in order to iterate through the signature fields in the\n    // document\n    if (document) {\n      // We need to wait for the annotationsLoaded event, otherwise the\n      // Field will not exist in the document\n      core.getAnnotationsLoadedPromise().then(() => {\n        setShowSpinner(true);\n        setVerificationResult(document, certificate, trustLists, currentLanguage, revocationChecking, revocationProxyPrefix, dispatch)\n          .then(async (verificationResult) => {\n            const fieldManager = core.getAnnotationManager().getFieldManager();\n            setFields(Object.keys(verificationResult).map((fieldName) => fieldManager.getField(fieldName)));\n            setCertificateErrorMessage('');\n            setShowSpinner(false);\n          })\n          .catch((e) => {\n            if (e && e.message) {\n              setCertificateErrorMessage(e.message);\n            } else {\n              console.error(e);\n            }\n          });\n      });\n    } else {\n      setShowSpinner(true);\n    }\n  }, [certificate, document, dispatch, currentLanguage]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  /**\n   * Returns a JSX element if document loading is not complete, or an error\n   * occurs, otherwise nothing is returned, indicating that information about\n   * one or more signature will be returned from this component\n   */\n  const renderLoadingOrErrors = () => {\n    let result;\n    if (showSpinner) {\n      result = <Spinner />;\n    } else if (certificateErrorMessage === 'Error reading the local certificate') {\n      result = translate('digitalSignatureVerification.panelMessages.localCertificateError');\n    } else if (certificateErrorMessage === 'Download Failed') {\n      result = translate('digitalSignatureVerification.panelMessages.certificateDownloadError');\n    } else if (!fields.length) {\n      result = translate('digitalSignatureVerification.panelMessages.noSignatureFields');\n    } else {\n      /**\n       * If document has completed loading, there are no errors, and there are\n       * signature fields, this function does not need to return anything\n       */\n      return null;\n    }\n\n    return (\n      <div className=\"center\">\n        {result}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className=\"Panel SignaturePanel\"\n      data-element=\"signaturePanel\"\n    >\n      {renderLoadingOrErrors()}\n      {\n        !showSpinner && fields.length > 0 && (\n          fields.map((field, index) => {\n            return (\n              <WidgetInfo\n                key={index}\n                name={field.name}\n                collapsible\n                field={field}\n              />\n            );\n          })\n        )\n      }\n    </div>\n  );\n};\n\nexport default SignaturePanel;\n","import SignaturePanel from './SignaturePanel';\nimport Spinner from './Spinner';\nimport { renderPermissionStatus } from './WidgetInfo';\n\nexport default SignaturePanel;\n\nexport {\n  renderPermissionStatus,\n  SignaturePanel,\n  Spinner\n};\n","import React, { useState } from 'react';\nimport './TextStylePicker.scss';\nimport Dropdown from 'components/Dropdown';\nimport FontSizeDropdown from 'components/FontSizeDropdown';\nimport Button from 'components/Button';\nimport PropTypes from 'prop-types';\n\nconst TextStylePicker = ({\n  onPropertyChange,\n  properties,\n  onRichTextStyleChange,\n  isRedaction,\n  isContentEditing,\n  fonts,\n  stateless = false,\n}) => {\n  // List is not complete\n  const supportedFonts = fonts?.length ? fonts : ['Helvetica', 'Times New Roman'];\n\n  const font = properties?.Font || supportedFonts[0];\n  const changeFont = (font) => {\n    onPropertyChange('Font', font);\n  };\n\n  const fontSize = properties?.FontSize || '12pt';\n  const changeFontSize = (fontSize) => {\n    onPropertyChange('FontSize', fontSize);\n  };\n\n  const defaultBold = properties?.bold || false;\n  const [bold, setBold] = useState(defaultBold);\n  const toggleBold = () => {\n    onRichTextStyleChange('font-weight', !bold ? 'bold' : '');\n    setBold(!bold);\n  };\n\n  const defaultItalic = properties?.italic || false;\n  const [italic, setItalic] = useState(defaultItalic);\n  const toggleItalic = () => {\n    onRichTextStyleChange('font-style', !italic ? 'italic' : '');\n    setItalic(!italic);\n  };\n\n  const defaultUnderline = properties?.underline || false;\n  const defaultStrikeout = properties?.strikeout || false;\n  const [underline, setUnderline] = useState(defaultUnderline);\n  const [strikeout, setStrikeout] = useState(properties?.strikeout || false);\n  const toggleUnderline = () => {\n    const newUnderline = !underline;\n    if (newUnderline) {\n      onRichTextStyleChange('underline', true);\n    } else {\n      onRichTextStyleChange('underline', false);\n    }\n    setUnderline(newUnderline);\n  };\n  const toggleStrikeout = () => {\n    const newStrikeout = !strikeout;\n    if (newStrikeout) {\n      onRichTextStyleChange('line-through', true);\n    } else {\n      onRichTextStyleChange('line-through', false);\n    }\n    setStrikeout(newStrikeout);\n  };\n\n  const textAlign = properties?.TextAlign || 'left';\n  const changeXAlign = (xAlign) => {\n    onPropertyChange('TextAlign', xAlign);\n  };\n\n  const textVerticalAlign = properties?.TextVerticalAlign || 'top';\n  const changeYAlign = (yAlign) => {\n    onPropertyChange('TextVerticalAlign', yAlign);\n  };\n\n  const fontSizeProps = fontSize?.match(/([0-9.]+)|([a-z]+)/gi);\n\n  const [error, setError] = useState('');\n  const fontSizePropsToUpdate = (fontSizeProps && parseFloat(fontSizeProps[0])) || 12;\n\n  return (\n    <>\n      <div className={`container-fluid ${error && 'error'}`}>\n        <div className=\"container-dropdown\">\n          <Dropdown\n            items={supportedFonts}\n            onClickItem={changeFont}\n            currentSelectionKey={font}\n            getCustomItemStyle={(item) => ({ fontFamily: item })}\n            maxHeight={200}\n            placeholder={isContentEditing ? 'Font' : undefined}\n          />\n          <FontSizeDropdown\n            fontSize={fontSizePropsToUpdate}\n            key={fontSizePropsToUpdate}\n            fontUnit={(fontSizeProps && fontSizeProps[1]) || 'pt'}\n            onFontSizeChange={changeFontSize}\n            onError={setError}\n            applyOnlyOnBlur={isContentEditing}\n          />\n        </div>\n        {error && <div className=\"error-text\">{error}</div>}\n      </div>\n      <div className=\"icon-grid\">\n        {!isRedaction && !isContentEditing && (\n          <div className=\"row rich-text-format\">\n            <Button\n              dataElement=\"freeTextBoldButton\"\n              onClick={toggleBold}\n              img=\"icon-menu-bold\"\n              title=\"option.richText.bold\"\n              isActive={stateless ? defaultBold : bold}\n            />\n            <Button\n              dataElement=\"freeTextItalicButton\"\n              onClick={toggleItalic}\n              img=\"icon-menu-italic\"\n              title=\"option.richText.italic\"\n              isActive={stateless ? defaultItalic : italic}\n            />\n            <Button\n              dataElement=\"freeTextUnderlineButton\"\n              onClick={toggleUnderline}\n              img=\"icon-menu-text-underline\"\n              title=\"option.richText.underline\"\n              isActive={stateless ? defaultUnderline : underline}\n            />\n            <Button\n              dataElement=\"freeTextStrikeoutButton\"\n              onClick={toggleStrikeout}\n              img=\"icon-tool-text-manipulation-strikethrough\"\n              title=\"option.richText.strikeout\"\n              isActive={stateless ? defaultStrikeout : strikeout}\n            />\n          </div>\n        )}\n        <div className={`row text-horizontal-alignment ${isRedaction ? 'isRedaction' : ''}`}>\n          <Button\n            dataElement=\"freeTextAlignLeftButton\"\n            onClick={() => changeXAlign('left')}\n            img=\"icon-menu-align-left\"\n            title=\"option.richText.alignLeft\"\n            isActive={!isContentEditing && textAlign === 'left'}\n          />\n          <Button\n            dataElement=\"freeTextAlignCenterButton\"\n            onClick={() => changeXAlign('center')}\n            img=\"icon-menu-align-centre\"\n            title=\"option.richText.alignCenter\"\n            isActive={!isContentEditing && textAlign === 'center'}\n          />\n          <Button\n            dataElement=\"freeTextAlignRightButton\"\n            onClick={() => changeXAlign('right')}\n            img=\"icon-menu-align-right\"\n            title=\"option.richText.alignRight\"\n            isActive={!isContentEditing && textAlign === 'right'}\n          />\n          {/* TODO: Implement justify button below */}\n          {!isRedaction && !isContentEditing && (\n            <Button\n              dataElement=\"freeTextJustifyCenterButton\"\n              onClick={() => changeXAlign('justify')}\n              img=\"icon-text-justify-center\"\n              title=\"option.richText.justifyCenter\"\n              isActive={textAlign === 'justify'}\n            />\n          )}\n        </div>\n        {!isRedaction && !isContentEditing && (\n          <div className=\"row text-vertical-alignment\">\n            <Button\n              onClick={() => changeYAlign('top')}\n              img=\"icon-arrow-to-top\"\n              title=\"option.richText.alignTop\"\n              isActive={textVerticalAlign === 'top'}\n            />\n            <Button\n              onClick={() => changeYAlign('center')}\n              img=\"icon-arrow-to-middle\"\n              title=\"option.richText.alignMiddle\"\n              isActive={textVerticalAlign === 'center'}\n            />\n            <Button\n              onClick={() => changeYAlign('bottom')}\n              img=\"icon-arrow-to-bottom\"\n              title=\"option.richText.alignBottom\"\n              isActive={textVerticalAlign === 'bottom'}\n            />\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nTextStylePicker.propTypes = {\n  onPropertyChange: PropTypes.func.isRequired,\n};\n\nexport default TextStylePicker;\n","import TextStylePicker from './TextStylePicker';\n\nexport default TextStylePicker;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\nimport defaultTool from 'constants/defaultTool';\n\nimport core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport './ToolGroupButton.scss';\n\nclass ToolGroupButton extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string.isRequired,\n    toolGroup: PropTypes.string.isRequired,\n    mediaQueryClassName: PropTypes.string.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    img: PropTypes.string,\n    title: PropTypes.string,\n    toolNames: PropTypes.arrayOf(PropTypes.string),\n    toolButtonObjects: PropTypes.object,\n    lastPickedToolForGroup: PropTypes.string,\n    allButtonsInGroupDisabled: PropTypes.bool,\n    openElement: PropTypes.func.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isActive: PropTypes.bool.isRequired,\n    showColor: PropTypes.string,\n    iconColorKey: PropTypes.string,\n  };\n\n  onClick = () => {\n    const {\n      setActiveToolGroup,\n      isActive,\n      closeElement,\n      openElement,\n      toolGroup,\n      toolNames,\n      lastPickedToolForGroup,\n    } = this.props;\n\n    if (isActive) {\n      closeElement('toolStylePopup');\n      core.setToolMode(defaultTool);\n      setActiveToolGroup('');\n    } else {\n      closeElement('toolStylePopup');\n      if (toolGroup === 'signatureTools' || toolGroup === 'rubberStampTools') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolForGroup || toolNames[0]);\n      }\n      setActiveToolGroup(toolGroup);\n      openElement('toolsOverlay');\n    }\n  };\n\n  render() {\n    const {\n      toolNames,\n      lastPickedToolForGroup,\n      isActive,\n      mediaQueryClassName,\n      dataElement,\n      toolButtonObjects,\n      allButtonsInGroupDisabled,\n      iconColorKey,\n      showColor,\n      title,\n    } = this.props;\n    const toolName = lastPickedToolForGroup || toolNames[0];\n    const img = this.props.img\n      ? this.props.img\n      : toolButtonObjects[toolName]?.img;\n    let color = '';\n    let fillColor = '';\n    let strokeColor = '';\n    if (showColor !== 'never' && isActive) {\n      const toolStyles = getToolStyles(toolName);\n      if (iconColorKey) {\n        color = toolStyles[iconColorKey]?.toHexString?.();\n      }\n      fillColor = getColor(toolStyles.FillColor);\n      strokeColor = getColor(toolStyles.StrokeColor);\n      if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n        // transparent\n        strokeColor = 'ff000000';\n      }\n    }\n\n    if (toolName.indexOf('AnnotationCreateRedaction') > -1 && !isActive) {\n      // The redaction icon needs a default fill for it's inactive state\n      fillColor = '868E96';\n    }\n\n    return allButtonsInGroupDisabled ? null : (\n      <DataElementWrapper\n        className={classNames({\n          'tool-group-button': true,\n          active: isActive,\n        })}\n        dataElement={dataElement}\n      >\n        <Button\n          title={title}\n          mediaQueryClassName={mediaQueryClassName}\n          isActive={isActive}\n          img={img}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          dataElement={dataElement}\n          onClick={this.onClick}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  lastPickedToolForGroup: selectors.getLastPickedToolForGroup(state, ownProps.toolGroup),\n  savedSignatures: selectors.getSavedSignatures(state),\n  isActive: selectors.getActiveToolGroup(state) === ownProps.toolGroup,\n  activeToolName: selectors.getActiveToolName(state),\n  toolNames: selectors.getToolNamesByGroup(state, ownProps.toolGroup),\n  toolButtonObjects: selectors.getToolButtonObjects(state),\n  allButtonsInGroupDisabled: selectors.allButtonsInGroupDisabled(state, ownProps.toolGroup),\n  iconColorKey: selectors.getIconColor(\n    state,\n    mapToolNameToKey(selectors.getActiveToolName(state)),\n  ),\n});\n\nconst mapDispatchToProps = {\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  closeElement: actions.closeElement,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolGroupButton = connect(mapStateToProps, mapDispatchToProps)(ToolGroupButton);\n\nconst connectedComponent = (props) => {\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  return (\n    <ConnectedToolGroupButton {...props} isTabletAndMobile={isTabletAndMobile} />\n  );\n};\n\nexport default connectedComponent;\n","import ToolGroupButton from './ToolGroupButton';\n\nexport default ToolGroupButton;","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import { useEffect, useCallback } from 'react';\nimport { focusableElementDomString } from '@pdftron/webviewer-react-toolkit';\nimport { findFocusableIndex } from '../helpers/accessibility';\n\n/**\n * Use arrows to focus within a menu.\n * @param {boolean} isOpen Is the menu currently open.\n * @param {Function} onClose Function to close menu. Must be memoized!\n * @param {HTMLElement} overlayRef The wrapper element for the menu.\n */\nexport default function useArrowFocus(isOpen, onClose, overlayRef) {\n  const getFocusableElements = useCallback(() => {\n    return overlayRef.current.querySelectorAll(focusableElementDomString);\n  }, [overlayRef]);\n\n  useEffect(() => {\n    if (isOpen) {\n      const lastFocusedElement = document.activeElement;\n\n      const keydownListener = (e) => {\n        // Tab and escape close the menu.\n        if (e.key === 'Tab' || e.key === 'Escape') {\n          onClose();\n          if (lastFocusedElement) {\n            lastFocusedElement.focus();\n          }\n          return;\n        }\n\n        // Up and Down keys used to navigate overlay menu.\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n          const focusable = getFocusableElements();\n\n          if (focusable.length === 0) {\n            return;\n          }\n\n          let focusIndex = findFocusableIndex(focusable, document.activeElement);\n          if (e.key === 'ArrowUp' && focusIndex === -1) {\n            focusIndex = 0;\n          }\n\n          const vector = e.key === 'ArrowUp' ? -1 : 1;\n          focusable[(focusIndex + vector + focusable.length) % focusable.length].focus();\n          // User is \"tabbing\", so show button outlines.\n          document.documentElement.setAttribute('data-tabbing', 'true');\n        }\n      };\n\n      window.addEventListener('keydown', keydownListener);\n      return () => window.removeEventListener('keydown', keydownListener);\n    }\n  }, [getFocusableElements, isOpen, onClose]);\n}\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}","import { invariant } from '@react-dnd/invariant';\nimport { cloneElement, isValidElement } from 'react';\n\nfunction throwIfCompositeComponentElement(element) {\n  // Custom components can no longer be wrapped directly in React DnD 2.0\n  // so that we don't need to depend on findDOMNode() from react-dom.\n  if (typeof element.type === 'string') {\n    return;\n  }\n\n  var displayName = element.type.displayName || element.type.name || 'the component';\n  throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a <div>, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n  return function () {\n    var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    // When passed a node, call the hook straight away.\n    if (!isValidElement(elementOrNode)) {\n      var node = elementOrNode;\n      hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n      // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\n      return node;\n    } // If passed a ReactElement, clone it and attach this function as a ref.\n    // This helps us achieve a neat API where user doesn't even know that refs\n    // are being used under the hood.\n\n\n    var element = elementOrNode;\n    throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n    var ref = options ? function (node) {\n      return hook(node, options);\n    } : hook;\n    return cloneWithRef(element, ref);\n  };\n}\n\nexport function wrapConnectorHooks(hooks) {\n  var wrappedHooks = {};\n  Object.keys(hooks).forEach(function (key) {\n    var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n    if (key.endsWith('Ref')) {\n      wrappedHooks[key] = hooks[key];\n    } else {\n      var wrappedHook = wrapHookToRecognizeElement(hook);\n\n      wrappedHooks[key] = function () {\n        return wrappedHook;\n      };\n    }\n  });\n  return wrappedHooks;\n}\n\nfunction setRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else {\n    ref.current = node;\n  }\n}\n\nfunction cloneWithRef(element, newRef) {\n  var previousRef = element.ref;\n  invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs');\n\n  if (!previousRef) {\n    // When there is no ref on the element, use the new ref directly\n    return cloneElement(element, {\n      ref: newRef\n    });\n  } else {\n    return cloneElement(element, {\n      ref: function ref(node) {\n        setRef(previousRef, node);\n        setRef(newRef, node);\n      }\n    });\n  }\n}","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n  // Check `document` and `window` in case of server-side rendering\n  var _window;\n\n  if (typeof hostWindow !== 'undefined') {\n    _window = hostWindow;\n  } else if (typeof window !== 'undefined') {\n    _window = window;\n  } else if (typeof self !== 'undefined') {\n    _window = self;\n  } else {\n    _window = global;\n  }\n\n  var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n  if (!attachEvent) {\n    var requestFrame = function () {\n      var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n        return _window.setTimeout(fn, 20);\n      };\n\n      return function (fn) {\n        return raf(fn);\n      };\n    }();\n\n    var cancelFrame = function () {\n      var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n      return function (id) {\n        return cancel(id);\n      };\n    }();\n\n    var resetTriggers = function resetTriggers(element) {\n      var triggers = element.__resizeTriggers__,\n          expand = triggers.firstElementChild,\n          contract = triggers.lastElementChild,\n          expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + 'px';\n      expandChild.style.height = expand.offsetHeight + 1 + 'px';\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n\n    var checkTriggers = function checkTriggers(element) {\n      return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n    };\n\n    var scrollListener = function scrollListener(e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n        return;\n      }\n\n      var element = this;\n      resetTriggers(this);\n\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n\n      this.__resizeRAF__ = requestFrame(function () {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n\n          element.__resizeListeners__.forEach(function (fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n    /* Detect CSS Animations support to detect element display/re-attach */\n\n\n    var animation = false,\n        keyframeprefix = '',\n        animationstartevent = 'animationstart',\n        domPrefixes = 'Webkit Moz O ms'.split(' '),\n        startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n        pfx = '';\n    {\n      var elm = _window.document.createElement('fakeelement');\n\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n\n      if (animation === false) {\n        for (var i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = '-' + pfx.toLowerCase() + '-';\n            animationstartevent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n    var animationName = 'resizeanim';\n    var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n    var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n  }\n\n  var createStyles = function createStyles(doc) {\n    if (!doc.getElementById('detectElementResize')) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n          head = doc.head || doc.getElementsByTagName('head')[0],\n          style = doc.createElement('style');\n      style.id = 'detectElementResize';\n      style.type = 'text/css';\n\n      if (nonce != null) {\n        style.setAttribute('nonce', nonce);\n      }\n\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n\n      head.appendChild(style);\n    }\n  };\n\n  var addResizeListener = function addResizeListener(element, fn) {\n    if (attachEvent) {\n      element.attachEvent('onresize', fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        var doc = element.ownerDocument;\n\n        var elementStyle = _window.getComputedStyle(element);\n\n        if (elementStyle && elementStyle.position == 'static') {\n          element.style.position = 'relative';\n        }\n\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n        var resizeTriggersHtml = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n\n        if (window.trustedTypes) {\n          var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n            createHTML: function createHTML() {\n              return resizeTriggersHtml;\n            }\n          });\n          element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n        } else {\n          element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n        }\n\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener('scroll', scrollListener, true);\n        /* Listen for a css animation to detect element display/re-attach */\n\n        if (animationstartevent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName == animationName) {\n              resetTriggers(element);\n            }\n          };\n\n          element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n\n      element.__resizeListeners__.push(fn);\n    }\n  };\n\n  var removeResizeListener = function removeResizeListener(element, fn) {\n    if (attachEvent) {\n      element.detachEvent('onresize', fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener('scroll', scrollListener, true);\n\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n\n  return {\n    addResizeListener: addResizeListener,\n    removeResizeListener: removeResizeListener\n  };\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}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\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 React, { Component } from 'react';\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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar defaultProps = {\n  defaultInputValue: '',\n  defaultMenuIsOpen: false,\n  defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(StateManager, _Component);\n\n    var _super = _createSuper(StateManager);\n\n    function StateManager() {\n      var _this;\n\n      _classCallCheck(this, StateManager);\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      _this.select = void 0;\n      _this.state = {\n        inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n        menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n        value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n      };\n\n      _this.onChange = function (value, actionMeta) {\n        _this.callProp('onChange', value, actionMeta);\n\n        _this.setState({\n          value: value\n        });\n      };\n\n      _this.onInputChange = function (value, actionMeta) {\n        // TODO: for backwards compatibility, we allow the prop to return a new\n        // value, but now inputValue is a controllable prop we probably shouldn't\n        var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n        _this.setState({\n          inputValue: newValue !== undefined ? newValue : value\n        });\n      };\n\n      _this.onMenuOpen = function () {\n        _this.callProp('onMenuOpen');\n\n        _this.setState({\n          menuIsOpen: true\n        });\n      };\n\n      _this.onMenuClose = function () {\n        _this.callProp('onMenuClose');\n\n        _this.setState({\n          menuIsOpen: false\n        });\n      };\n\n      return _this;\n    }\n\n    _createClass(StateManager, [{\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"getProp\",\n      value: function getProp(key) {\n        return this.props[key] !== undefined ? this.props[key] : this.state[key];\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"callProp\",\n      value: function callProp(name) {\n        if (typeof this.props[name] === 'function') {\n          var _this$props;\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 (_this$props = this.props)[name].apply(_this$props, args);\n        }\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var _this$props2 = this.props,\n            defaultInputValue = _this$props2.defaultInputValue,\n            defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n            defaultValue = _this$props2.defaultValue,\n            props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n        return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          inputValue: this.getProp('inputValue'),\n          menuIsOpen: this.getProp('menuIsOpen'),\n          onChange: this.onChange,\n          onInputChange: this.onInputChange,\n          onMenuClose: this.onMenuClose,\n          onMenuOpen: this.onMenuOpen,\n          value: this.getProp('value')\n        }));\n      }\n    }]);\n\n    return StateManager;\n  }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };\n","import core from 'core';\nimport localStorageManager from 'helpers/localStorageManager';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport hotkeysManager, { Shortcuts } from 'helpers/hotkeysManager';\nimport { enableMultiTab } from 'helpers/TabManager';\nimport Feature from 'constants/feature';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport actions from 'actions';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport setToolMode from 'src/apis/setToolMode';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport { isOfficeEditorMode } from './officeEditor';\n\n// a higher order function that creates the enableFeatures and disableFeatures APIs\nexport default (enable, store) => (features, priority = PRIORITY_TWO) => {\n  // map a feature to the dataElements that should be enabled/disabled and the function to run\n  const map = {\n    [Feature.Ribbons]: {\n      dataElements: [\n        'ribbons',\n      ],\n    },\n    [Feature.Annotating]: {\n      dataElements: [\n        'toolsHeader',\n        'toggleToolsButton',\n        'linkButton',\n        'noteState',\n        DataElements.NOTE_MULTI_SELECT_MODE_BUTTON,\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.enableRibbons());\n        } else {\n          store.dispatch(actions.setReadOnlyRibbons());\n        }\n      },\n    },\n    [Feature.Measurement]: {\n      dataElements: [\n        'toolbarGroup-Measure',\n        'measurementOverlay',\n        'distanceToolGroupButton',\n        'arcMeasurementToolGroupButton',\n        'perimeterToolGroupButton',\n        'areaToolGroupButton',\n        'rectangleAreaToolGroupButton',\n        'ellipseAreaToolGroupButton',\n        'countToolGroupButton',\n        'cloudyRectangleAreaToolGroupButton',\n      ],\n    },\n    [Feature.Annotations]: {\n      dataElements: [\n        'ribbons',\n        'notesPanel',\n        'toggleNotesButton',\n        'toggleToolsButton',\n        'toolsButton',\n        'linkButton',\n        'toolsHeader',\n        'toolsOverlay',\n      ],\n      fn: () => {\n        if (isOfficeEditorMode()) {\n          console.warn('Office Editor doesn\\'t support annotations');\n          return;\n        }\n        if (enable) {\n          core.showAnnotations(core.getAnnotationsList());\n          enableTools(store)();\n        } else {\n          core.hideAnnotations(core.getAnnotationsList());\n          disableTools(store)();\n        }\n      },\n    },\n    [Feature.Download]: {\n      dataElements: ['downloadButton'],\n    },\n    [Feature.FilePicker]: {\n      dataElements: ['filePickerHandler', 'filePickerButton'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.OPEN_FILE);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.OPEN_FILE);\n        }\n      }\n    },\n    [Feature.LocalStorage]: {\n      fn: () => {\n        if (enable) {\n          localStorageManager.enableLocalStorage();\n        } else {\n          localStorageManager.disableLocalStorage();\n        }\n      },\n    },\n    [Feature.NotesPanel]: {\n      dataElements: [\n        'notesPanelButton',\n        'notesPanel',\n        'toggleNotesButton',\n      ],\n    },\n    [Feature.InlineComment]: {\n      dataElements: [\n        DataElements.INLINE_COMMENT_POPUP,\n        DataElements.INLINE_COMMENT_POPUP_EXPAND_BUTTON,\n        DataElements.INLINE_COMMENT_POPUP_CLOSE_BUTTON,\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(true));\n        }\n      },\n    },\n    [Feature.RightClickAnnotationPopup]: {\n      dataElements: [\n        // no elements: enabling this will open the popup on right click\n        // disabling this will open the popup on left click\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(true));\n        } else {\n          store.dispatch(actions.disableElements([\n            DataElements.INLINE_COMMENT_POPUP,\n            DataElements.INLINE_COMMENT_POPUP_EXPAND_BUTTON,\n            DataElements.INLINE_COMMENT_POPUP_CLOSE_BUTTON,\n          ], PRIORITY_TWO));\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(false));\n        }\n      },\n    },\n    [Feature.Print]: {\n      dataElements: ['printButton', 'printModal'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.PRINT);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.PRINT);\n        }\n      }\n    },\n    [Feature.Redaction]: {\n      dataElements: [\n        'redactionToolGroupButton',\n        'redactionPanel',\n        'redactionPanelToggle',\n        'pageRedactionToolGroupButton',\n      ],\n      fn: () => {\n        if (enable && !core.isFullPDFEnabled()) {\n          console.warn('Full api is not enabled, applying redactions is disabled');\n        } else {\n          core.enableRedaction(enable);\n          const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n          if (!enable && currentToolbarGroup === 'toolbarGroup-Redact') {\n            setToolMode('AnnotationEdit');\n          }\n        }\n      }\n    },\n    [Feature.TextSelection]: {\n      dataElements: ['textPopup', 'textSelectButton'],\n      fn: () => {\n        if (!enable) {\n          core.clearSelection();\n          core.setToolMode('AnnotationEdit');\n        }\n        window.Core.Tools.Tool.ENABLE_TEXT_SELECTION = enable;\n      },\n    },\n    [Feature.TouchScrollLock]: {\n      fn: () => {\n        touchEventManager.enableTouchScrollLock = enable;\n      },\n    },\n    [Feature.Copy]: {\n      dataElements: ['copyTextButton'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.COPY);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.COPY);\n        }\n      }\n    },\n    [Feature.MultipleViewerMerging]: {\n      fn: () => {\n        store.dispatch(actions.setIsMultipleViewerMerging(enable));\n      },\n    },\n    [Feature.ThumbnailMerging]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMerging(enable));\n      },\n    },\n    [Feature.ThumbnailReordering]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailReordering(enable));\n      },\n    },\n    [Feature.ThumbnailMultiselect]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMultiselect(enable));\n      },\n    },\n    [Feature.NotesPanelVirtualizedList]: {\n      fn: () => {\n        store.dispatch(actions.setEnableNotesPanelVirtualizedList(enable));\n      },\n    },\n    [Feature.PageNavigation]: {\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.UP);\n          hotkeysManager.enableShortcut(Shortcuts.DOWN);\n          hotkeysManager.enableShortcut(Shortcuts.PREVIOUS_PAGE);\n          hotkeysManager.enableShortcut(Shortcuts.NEXT_PAGE);\n        } else {\n          // TODO: doing this will also remove handlers that users registered to 'up' and 'down' and we need to address this issue.\n          // it doesn't seem like we can fix the issue now by doing hotkeysManager.off('down', arrowDownHandler) because hotkeysManager.on will create a new function reference\n          // , register that new function to the hotkey and we don't have a reference to that function.\n          // to fix this issue we may need to breaking the instance.hotkeys.on API.\n          hotkeysManager.disableShortcut(Shortcuts.UP);\n          hotkeysManager.disableShortcut(Shortcuts.DOWN);\n          hotkeysManager.disableShortcut(Shortcuts.PREVIOUS_PAGE);\n          hotkeysManager.disableShortcut(Shortcuts.NEXT_PAGE);\n          core.setDisplayMode('Single');\n        }\n\n        touchEventManager.allowSwipe = enable;\n        store.dispatch(actions.setAllowPageNavigation(enable));\n      }\n    },\n    [Feature.MouseWheelZoom]: {\n      fn: () => {\n        store.dispatch(actions.setMouseWheelZoom(enable));\n      }\n    },\n    [Feature.Search]: {\n      dataElements: ['searchButton'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.SEARCH);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.SEARCH);\n        }\n      }\n    },\n    [Feature.MathSymbols]: {\n      dataElements: ['mathSymbolsButton', 'richTextPopup'],\n    },\n    [Feature.OutlineEditing]: {\n      dataElements: [\n        'outlineControls',\n        'addNewOutlineButtonContainer',\n        'addNewOutlineButton',\n        'outlineEditPopup',\n        'outlineRenameButton',\n        'outlineSetDestinationButton',\n        'outlineDeleteButton',\n      ],\n      fn: () => {\n        store.dispatch(actions.setIsOutlineEditing(enable));\n      }\n    },\n    [Feature.NotesShowLastUpdatedDate]: {\n      fn: () => {\n        store.dispatch(actions.setNotesShowLastUpdatedDate(enable));\n      }\n    },\n    [Feature.MultiTab]: {\n      fn: () => {\n        if (isOfficeEditorMode()) {\n          console.warn('Multi-tab is not supported in Office Editor mode');\n          return;\n        }\n\n        if (enable) {\n          if (selectors.isMultiViewerMode(store.getState())) {\n            console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiViewerMode');\n            store.dispatch(actions.setIsMultiViewerMode(false));\n          }\n          store.dispatch(enableMultiTab());\n        } else {\n          store.dispatch(actions.setMultiTab(false));\n          store.dispatch(actions.setTabManager(null));\n          store.dispatch(actions.setTabs([]));\n          store.dispatch(actions.setActiveTab(0));\n        }\n      },\n    },\n    [Feature.ChangeView]: {\n      dataElements: [\n        'changeViewToolGroupButton',\n      ]\n    },\n    [Feature.ContentEdit]: {\n      dataElements: [\n        'toolbarGroup-EditText',\n        'addParagraphToolGroupButton',\n        'addImageContentToolGroupButton',\n        'contentEditButton',\n        'searchAndReplace',\n      ],\n    },\n    [Feature.MultiViewerMode]: {\n      fn: () => {\n        if (enable && selectors.getIsMultiTab(store.getState())) {\n          console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiTab');\n          store.dispatch(actions.setMultiTab(false));\n          store.dispatch(actions.setTabManager(null));\n          store.dispatch(actions.setTabs([]));\n          store.dispatch(actions.setActiveTab(0));\n        }\n        console.warn('Feature.MultiViewerMode is deprecated and will be removed in the next major release. Please use UI.enterMultiViewerMode and UI.exitMultiViewerMode instead.');\n        store.dispatch(actions.setIsMultiViewerMode(enable));\n      }\n    },\n    [Feature.SideBySideView]: {\n      fn: () => {\n        store.dispatch(actions.setIsMultiViewerModeAvailable(enable));\n      }\n    },\n    [Feature.ComparePages]: {\n      fn: () => {\n        store.dispatch(actions.setComparePagesButtonEnabled(enable));\n      }\n    },\n    [Feature.Initials]: {\n      dataElements: [\n        'signatureOptionsDropdown',\n        'savedSignatureAndInitialsTabs',\n      ],\n      fn: () => {\n        const state = store.getState();\n        const signatures = selectors.getDisplayedSignatures(state);\n        if (signatures?.length > 0) {\n          store.dispatch(actions.setInitialsOffset(signatures.length));\n        }\n        store.dispatch(actions.setInitialsMode(enable));\n      }\n    },\n    [Feature.SavedSignaturesTab]: {\n      dataElements: [DataElements.SAVED_SIGNATURES_TAB],\n      fn: () => {\n        store.dispatch(actions.setSavedSignaturesTabEnabled(enable));\n        if (!enable) {\n          store.dispatch(actions.setSelectedTab('signatureModal', 'inkSignaturePanelButton'));\n        }\n      }\n    },\n    [Feature.Panel]: {\n      fn: () => {\n        const state = store.getState();\n        const keys = state.viewer.customFlxPanels.map((item) => item.dataElement);\n        if (enable) {\n          store.dispatch(actions.enableElements(keys, priority));\n        } else {\n          store.dispatch(actions.disableElements(keys, priority));\n        }\n      }\n    },\n    [Feature.WatermarkPanel]: {\n      dataElements: [\n        DataElements.WATERMARK_PANEL,\n        DataElements.WATERMARK_PANEL_TOGGLE,\n      ],\n    },\n    [Feature.WatermarkPanelImageTab]: {\n      dataElements: [\n        DataElements.WATERMARK_PANEL_IMAGE_TAB,\n      ],\n    },\n    [Feature.LegacyRichTextPopup]: {\n      dataElements: [DataElements.LEGACY_RICH_TEXT_POPUP],\n    },\n    [Feature.Portfolio]: {\n      dataElements: [\n        DataElements.CREATE_PORTFOLIO_BUTTON,\n        DataElements.PORTFOLIO_PANEL_BUTTON,\n        DataElements.PORTFOLIO_PANEL,\n      ],\n    },\n  };\n\n  if (!Array.isArray(features)) {\n    features = [features];\n  }\n\n  features.forEach((feature) => {\n    const { dataElements = [], fn = () => { } } = map[feature];\n\n    if (enable) {\n      store.dispatch(actions.enableElements(dataElements, priority));\n    } else {\n      store.dispatch(actions.disableElements(dataElements, priority));\n    }\n\n    fn();\n  });\n};\n","/**\n * Sets tool mode.\n * @method UI.setToolMode\n * @param {string|Core.Tools.ToolNames} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolMode('AnnotationEdit');\n  });\n */\n\nimport core from 'core';\n\nexport default (toolName) => {\n  core.setToolMode(toolName);\n};","export default () => {\n  return !!(document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement);\n};\n","import DataElements from 'constants/dataElement';\n\nexport default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = (state) => {\n  const defaultLeftPanels = [\n    DataElements.PORTFOLIO_PANEL,\n    'thumbnailsPanel',\n    DataElements.OUTLINE_PANEL,\n    'layersPanel',\n    DataElements.BOOKMARK_PANEL,\n    'signaturePanel',\n    'attachmentPanel',\n  ];\n\n  if (state.viewer.notesInLeftPanel) {\n    defaultLeftPanels.push(DataElements.NOTES_PANEL);\n  }\n\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","import core from 'core';\nimport isDataElementLeftPanel from 'helpers/isDataElementLeftPanel';\nimport fireEvent from 'helpers/fireEvent';\nimport { getAllPanels } from 'helpers/getElements';\nimport { indexOfHeaderItem } from 'helpers/headers';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport { disableElements, enableElements, setActiveFlyout } from 'actions/internalActions';\nimport defaultTool from 'constants/defaultTool';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\nimport { getCustomFlxPanels } from 'selectors/exposedSelectors';\nimport DataElements from 'constants/dataElement';\n\nexport const disableApplyCropWarningModal = () => ({\n  type: 'SHOW_APPLY_CROP_WARNING',\n  payload: { shouldShowApplyCropWarning: false },\n});\n\nexport const enableApplyCropWarningModal = () => ({\n  type: 'SHOW_APPLY_CROP_WARNING',\n  payload: { shouldShowApplyCropWarning: true },\n});\n\nexport const disableApplySnippingWarningModal = () => ({\n  type: 'SHOW_APPLY_SNIPPING_WARNING',\n  payload: { shouldShowApplySnippingWarning: false },\n});\n\nexport const enableApplySnippingWarningModal = () => ({\n  type: 'SHOW_APPLY_SNIPPING_WARNING',\n  payload: { shouldShowApplySnippingWarning: true },\n});\n\nexport const setPresetCropDimensions = (presetCropDimensions) => ({\n  type: 'SET_PRESET_CROP_DIMENSIONS',\n  payload: { presetCropDimensions },\n});\n\nexport const setPresetNewPageDimensions = (presetNewPageDimensions) => ({\n  type: 'SET_PRESET_NEW_PAGE_DIMENSIONS',\n  payload: { presetNewPageDimensions },\n});\n\nexport const setDateTimeFormats = (dateTimeFormats) => ({\n  type: 'SET_DATE_TIME_FORMATS',\n  payload: { dateTimeFormats },\n});\n\nexport const setEnableDesktopOnlyMode = (enableDesktopOnlyMode) => ({\n  type: 'SET_ENABLE_DESKTOP_ONLY_MODE',\n  payload: { enableDesktopOnlyMode },\n});\n\nexport const setHighContrastMode = (useHighContrastMode) => ({\n  type: 'SET_HIGH_CONTRAST_MODE',\n  payload: { useHighContrastMode },\n});\n\nexport const setCanUndo = (canUndo, documentViewerKey = 1) => ({\n  type: 'SET_CAN_UNDO',\n  payload: { canUndo, documentViewerKey },\n});\n\nexport const setCanRedo = (canRedo, documentViewerKey = 1) => ({\n  type: 'SET_CAN_REDO',\n  payload: { canRedo, documentViewerKey },\n});\n\nexport const setStandardStamps = (t) => async (dispatch) => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getStandardStampAnnotations();\n  const previews = await Promise.all(\n    annotations.map((annotation) => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const standardStamps = annotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n\n  dispatch({\n    type: 'SET_STANDARD_STAMPS',\n    payload: { standardStamps },\n  });\n};\n\nexport const setCustomStamps = (t) => async (dispatch) => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getCustomStampAnnotations();\n  await Promise.all(\n    annotations.map((annotation) => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const customStamps = annotations.map((annotation) => ({\n    annotation,\n    imgSrc: annotation['ImageData'],\n  }));\n\n  dispatch({\n    type: 'SET_CUSTOM_STAMPS',\n    payload: { customStamps },\n  });\n};\n\nexport const setReadOnlyRibbons = () => (dispatch, getState) => {\n  dispatch(setToolbarGroup('toolbarGroup-View'));\n  const state = getState();\n  const toolbarGroupsToDisable = Object.keys(state.viewer.headers).filter(\n    (key) => key.includes('toolbarGroup-') && key !== 'toolbarGroup-View',\n  );\n\n  disableElements(toolbarGroupsToDisable, PRIORITY_TWO)(dispatch, getState);\n};\n\nexport const enableRibbons = () => (dispatch, getState) => {\n  const state = getState();\n  // There can be a situation where we switch to FormBuilder mode and we get a race condition between setting\n  // the active toolbarGroup as what is in the current state and Forms, as redux hasnt dispatched the update to the Forms tool bar yet.\n  // We double check here if we are in form mode and set the correct tool bar group\n  // We enable ribbons when going into form mode, as we temporarily elevate the user's permissions\n  const isInFormFieldCreationMode = core.getFormFieldCreationManager().isInFormFieldCreationMode();\n  const toolbarGroup = isInFormFieldCreationMode ? 'toolbarGroup-Forms' : state.viewer.toolbarGroup;\n  dispatch(setToolbarGroup(toolbarGroup || 'toolbarGroup-Annotate'));\n  const toolbarGroupsToEnable = Object.keys(state.viewer.headers).filter((key) => key.includes('toolbarGroup-'));\n\n  enableElements(toolbarGroupsToEnable, PRIORITY_TWO)(dispatch, getState);\n};\n\nconst isElementDisabled = (state, dataElement) => state.viewer.disabledElements[dataElement]?.disabled;\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const dataElements = Object.values(state.viewer.toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every((dataElement) => isElementDisabled(state, dataElement));\n};\n\nexport const setCurrentGroupedItem = (groupedItems) => (dispatch) => {\n  dispatch({\n    type: 'SET_CURRENT_GROUPED_ITEMS',\n    payload: { groupedItems },\n  });\n};\n\nexport const setFixedGroupedItems = (groupedItems) => (dispatch) => {\n  dispatch({\n    type: 'SET_FIXED_GROUPED_ITEMS',\n    payload: { groupedItems }\n  });\n};\n\nexport const setToolbarGroup = (toolbarGroup, pickTool = true, toolGroup = '') => (dispatch, getState) => {\n  const getFirstToolGroupForToolbarGroup = (state, _toolbarGroup) => {\n    const toolGroups = state.viewer.headers[_toolbarGroup];\n    let firstToolGroupForToolbarGroup = '';\n    if (toolGroups) {\n      const firstTool = Object.values(toolGroups).find(({ toolGroup, dataElement }) => {\n        if (toolGroup && !isElementDisabled(state, dataElement) && !allButtonsInGroupDisabled(state, toolGroup)) {\n          return true;\n        }\n        return false;\n      });\n      if (firstTool) {\n        firstToolGroupForToolbarGroup = firstTool.toolGroup;\n      }\n    }\n    return firstToolGroupForToolbarGroup;\n  };\n\n  const getFirstToolNameForGroup = (state, toolGroup) => {\n    const tools = state.viewer.toolButtonObjects;\n    const firstTool = Object.keys(tools).find((key) => {\n      return tools[key].group === toolGroup;\n    });\n    return firstTool;\n  };\n\n  if (toolbarGroup === 'toolbarGroup-View') {\n    dispatch({\n      type: 'SET_ACTIVE_TOOL_GROUP',\n      payload: { toolGroup: '', toolbarGroup },\n    });\n    core.setToolMode(defaultTool);\n  } else {\n    dispatch(openElements(['toolsHeader']));\n    const state = getState();\n    const lastPickedToolGroup =\n      toolGroup || state.viewer.lastPickedToolGroup[toolbarGroup] || getFirstToolGroupForToolbarGroup(state, toolbarGroup);\n    const lastPickedToolName =\n      state.viewer.lastPickedToolForGroup[lastPickedToolGroup] || getFirstToolNameForGroup(state, lastPickedToolGroup);\n    if (pickTool) {\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: lastPickedToolGroup, toolbarGroup },\n      });\n\n      if (lastPickedToolName === 'AnnotationCreateSignature') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolName);\n      }\n    } else {\n      core.setToolMode(defaultTool);\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: '', toolbarGroup },\n      });\n    }\n  }\n  dispatch(closeElements(['toolsOverlay', 'signatureOverlay', 'toolStylePopup']));\n  dispatch({\n    type: 'SET_TOOLBAR_GROUP',\n    payload: { toolbarGroup },\n  });\n  fireEvent(Events.TOOLBAR_GROUP_CHANGED, toolbarGroup);\n};\nexport const setSelectedStampIndex = (index) => ({\n  type: 'SET_SELECTED_STAMP_INDEX',\n  payload: { index },\n});\nexport const setOutlineControlVisibility = (outlineControlVisibility) => ({\n  type: 'SET_OUTLINE_CONTROL_VISIBILITY',\n  payload: { outlineControlVisibility },\n});\nexport const setSelectedDisplayedSignatureIndex = (index) => ({\n  type: 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX',\n  payload: { index },\n});\nexport const setSavedSignatures = (savedSignatures) => ({\n  type: 'SET_SAVED_SIGNATURES',\n  payload: { savedSignatures },\n});\nexport const setDisplayedSignaturesFilterFunction = (filterFunction) => ({\n  type: 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION',\n  payload: { filterFunction },\n});\nexport const setSignatureMode = (signatureMode) => ({\n  type: 'SET_SIGNATURE_MODE',\n  payload: { signatureMode }\n});\n\nexport const setSavedInitials = (savedInitials) => ({\n  type: 'SET_SAVED_INITIALS',\n  payload: { savedInitials },\n});\n\nexport const setSelectedDisplayedInitialsIndex = (index) => ({\n  type: 'SET_SELECTED_DISPLAYED_INITIALS_INDEX',\n  payload: { index },\n});\n\nexport const setLeftPanelWidth = (width) => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setSearchPanelWidth = (width) => ({\n  type: 'SET_SEARCH_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setNotesPanelWidth = (width) => ({\n  type: 'SET_NOTES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setComparePanelWidth = (width) => ({\n  type: 'SET_COMPARE_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setRedactionPanelWidth = (width) => ({\n  type: 'SET_REDACTION_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setTextEditingPanelWidth = (width) => ({\n  type: 'SET_TEXT_EDITING_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWatermarkPanelWidth = (width) => ({\n  type: 'SET_WATERMARK_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelWidth = (width) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelModelData = (modelData) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA',\n  payload: { modelData },\n});\nexport const setWv3dPropertiesPanelSchema = (schema) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_SCHEMA',\n  payload: { schema },\n});\nexport const setOfficeEditorCursorProperties = (cursorProperties) => ({\n  type: 'SET_OFFICE_EDITOR_CURSOR_PROPERTIES',\n  payload: { cursorProperties },\n});\nexport const setOfficeEditorSelectionProperties = (selectionProperties) => ({\n  type: 'SET_OFFICE_EDITOR_SELECTION_PROPERTIES',\n  payload: { selectionProperties },\n});\nexport const addOfficeEditorAvailableFontFace = (fontFace) => ({\n  type: 'ADD_OFFICE_EDITOR_AVAILABLE_FONT_FACE',\n  payload: { fontFace },\n});\n\nexport const setDocumentContainerWidth = (width) => ({\n  type: 'SET_DOCUMENT_CONTAINER_WIDTH',\n  payload: { width },\n});\nexport const setDocumentContainerHeight = (height) => ({\n  type: 'SET_DOCUMENT_CONTAINER_HEIGHT',\n  payload: { height },\n});\n\nexport const setGapBetweenHeaderItems = (dataElement, gap) => updateHeaderProperty(dataElement, 'gap', gap);\n\nexport const setHeaderJustifyContent = (dataElement, justifyContent) => updateHeaderProperty(dataElement, 'justifyContent', justifyContent);\n\nexport const setHeaderMaxWidth = (dataElement, maxWidth) => updateHeaderProperty(dataElement, 'maxWidth', maxWidth);\n\nexport const setHeaderMaxHeight = (dataElement, maxHeight) => updateHeaderProperty(dataElement, 'maxHeight', maxHeight);\n\nconst updateHeaderProperty = (dataElement, property, value) => ({\n  type: 'UPDATE_MODULAR_HEADERS',\n  payload: {\n    dataElement,\n    property,\n    value,\n  }\n});\n\nexport const setGroupedItemsProperty = (propertyName, propertyValue, groupedItemsDataElement, headerDataElement) => (dispatch, getState) => {\n  const state = getState();\n  const headers = state.viewer.modularHeaders;\n  const updatedHeaders = headers.map((header) => {\n    // Will change only if there is no specific header for setting the property\n    // or if the specific header is the current one of the loop\n    if (!headerDataElement || header['dataElement'] === headerDataElement) {\n      if (groupedItemsDataElement) {\n        const itemIndex = indexOfHeaderItem(header, groupedItemsDataElement);\n        if (itemIndex > -1) {\n          header.items[itemIndex][propertyName] = propertyValue;\n          const updatedItems = [...header.items];\n          header.items = updatedItems;\n        }\n      } else {\n        const updatedItems = header.items.map((item) => {\n          if (item[propertyName]) {\n            item[propertyName] = propertyValue;\n          }\n          return { ...item };\n        });\n\n        header.items = updatedItems;\n      }\n    }\n    return { ...header };\n  });\n\n  dispatch({\n    type: 'SET_MODULAR_HEADERS',\n    payload: updatedHeaders\n  });\n};\n\nexport const enableAllElements = () => ({\n  type: 'ENABLE_ALL_ELEMENTS',\n  payload: {},\n});\nexport const openElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isLeftPanelOpen = state.viewer.openElements['leftPanel'];\n  const isElementOpen = isDataElementLeftPanel(dataElement, state)\n    ? isLeftPanelOpen && state.viewer.activeLeftPanel === dataElement\n    : state.viewer.openElements[dataElement];\n  const isFlyoutElement = state.viewer.flyoutMap?.[dataElement];\n\n  if (isFlyoutElement) {\n    dispatch(setActiveFlyout(dataElement));\n  }\n\n  if (isElementDisabled || isElementOpen) {\n    return;\n  }\n\n  const flexPanel = state.viewer.customFlxPanels.find((item) => dataElement === item.dataElement);\n  if (flexPanel?.location === 'left') {\n    const keys = ['leftPanel'];\n    getAllPanels(flexPanel.location).forEach((item) => keys.push(item.dataset.element));\n    dispatch(closeElements(keys));\n  } else if (flexPanel?.location === 'right') {\n    dispatch(closeElements(rightPanelList));\n  }\n\n  if (isDataElementLeftPanel(dataElement, state) && dataElement !== DataElements.NOTES_PANEL) {\n    if (!isLeftPanelOpen) {\n      dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement: 'leftPanel' } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: true });\n    }\n    dispatch(setActiveLeftPanel(dataElement));\n  } else {\n    dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n\n    if (dataElement === 'leftPanel' && !isLeftPanelOpen) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: true,\n      });\n    }\n\n    if (dataElement === 'leftPanel') {\n      const panels = getCustomFlxPanels(state, 'left');\n      const keys = panels.map((item) => item.dataElement);\n      dispatch(closeElements(keys));\n    }\n  }\n};\nexport const openElements = (dataElements) => (dispatch) => {\n  if (typeof dataElements === 'string') {\n    dispatch(openElement(dataElements));\n  } else {\n    dataElements.forEach((dataElement) => {\n      dispatch(openElement(dataElement));\n    });\n  }\n};\nexport const closeElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isFlyoutElement = state.viewer.flyoutMap?.[dataElement];\n  const isElementClosed = isDataElementLeftPanel(dataElement, state)\n    ? state.viewer.activeLeftPanel !== dataElement\n    : !state.viewer.openElements[dataElement];\n\n  if (isElementDisabled || isElementClosed) {\n    return;\n  }\n\n  if (isDataElementLeftPanel(dataElement, state) && state.viewer.openElements['leftPanel']) {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement: 'leftPanel' } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: false });\n  } else {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: false });\n\n    if (isFlyoutElement) {\n      dispatch({\n        type: 'SET_ACTIVE_FLYOUT',\n        payload: { dataElement: null }\n      });\n    }\n    if (dataElement === DataElements.PAGE_MANIPULATION_OVERLAY) {\n      dispatch({\n        type: 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION',\n        payload: null\n      });\n    }\n\n    if (dataElement === 'leftPanel' && state.viewer.openElements['leftPanel']) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n    }\n  }\n};\nexport const closeElements = (dataElements) => (dispatch) => {\n  if (typeof dataElements === 'string') {\n    dispatch(closeElement(dataElements));\n  } else {\n    dataElements.forEach((dataElement) => {\n      dispatch(closeElement(dataElement));\n    });\n  }\n};\n\nconst rightPanelList = ['searchPanel', DataElements.NOTES_PANEL, 'comparePanel', 'redactionPanel', 'wv3dPropertiesPanel', 'textEditingPanel', 'watermarkPanel'];\nexport const toggleElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  if (state.viewer.disabledElements[dataElement]?.disabled) {\n    return;\n  }\n\n  // hack for new ui\n  if (!state.viewer.notesInLeftPanel) {\n    if (rightPanelList.includes(dataElement)) {\n      for (const panel of rightPanelList) {\n        if (panel !== dataElement) {\n          dispatch(closeElement(panel));\n        }\n      }\n      const openFlexPanelsRight = getCustomFlxPanels(state, 'right');\n      for (const panel of openFlexPanelsRight) {\n        dispatch(closeElement(panel.dataElement));\n      }\n    }\n  }\n\n  if (state.viewer.openElements[dataElement]) {\n    dispatch(closeElement(dataElement));\n  } else {\n    dispatch(openElement(dataElement));\n  }\n};\n\nexport const addCustomModal = (modalOptions) => ({\n  type: 'ADD_CUSTOM_MODAL',\n  payload: modalOptions,\n});\nexport const addModularHeaders = (headersList) => ({\n  type: 'ADD_MODULAR_HEADERS',\n  payload: headersList\n});\nexport const updateModularHeaders = (modularHeaders) => ({\n  type: 'SET_MODULAR_HEADERS',\n  payload: modularHeaders\n});\nexport const setRightHeaderWidth = (width) => ({\n  type: 'SET_RIGHT_HEADER_WIDTH',\n  payload: width\n});\nexport const setLeftHeaderWidth = (width) => ({\n  type: 'SET_LEFT_HEADER_WIDTH',\n  payload: width\n});\nexport const setTopFloatingContainerHeight = (height) => ({\n  type: 'SET_TOP_FLOATING_CONTAINER_HEIGHT',\n  payload: height\n});\nexport const setBottomFloatingContainerHeight = (height) => ({\n  type: 'SET_BOTTOM_FLOATING_CONTAINER_HEIGHT',\n  payload: height\n});\nexport const setActiveHeaderGroup = (headerGroup) => ({\n  type: 'SET_ACTIVE_HEADER_GROUP',\n  payload: { headerGroup },\n});\nexport const setActiveLeftPanel = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  if (isDataElementLeftPanel(dataElement, state)) {\n    if (state.viewer.activeLeftPanel !== dataElement) {\n      dispatch({\n        type: 'CLOSE_ELEMENT',\n        payload: { dataElement: state.viewer.activeLeftPanel },\n      });\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n      dispatch({ type: 'SET_ACTIVE_LEFT_PANEL', payload: { dataElement } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n    }\n  } else {\n    const panelDataElements = [\n      ...state.viewer.customPanels.map(({ panel }) => panel.dataElement),\n      DataElements.PORTFOLIO_PANEL,\n      'thumbnailsPanel',\n      'outlinesPanel',\n      'layersPanel',\n      'bookmarksPanel',\n      DataElements.NOTES_PANEL,\n      'signaturePanel',\n      'attachmentPanel',\n    ].join(', ');\n    console.warn(\n      `${dataElement} is not recognized by the left panel. Please use one of the following options: ${panelDataElements}`,\n    );\n  }\n};\n\nexport const setTimezone = (timezone) => ({\n  type: 'SET_TIMEZONE',\n  payload: { timezone },\n});\nexport const setNotesPanelSortStrategy = (sortStrategy) => ({\n  type: 'SET_NOTES_PANEL_SORT_STRATEGY',\n  payload: { sortStrategy },\n});\n\nexport const setNoteDateFormat = (noteDateFormat) => ({\n  type: 'SET_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setPrintedNoteDateFormat = (noteDateFormat) => ({\n  type: 'SET_PRINTED_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setCustomPanel = (newPanel) => ({\n  type: 'SET_CUSTOM_PANEL',\n  payload: { newPanel },\n});\n\nexport const addPanel = (newPanel) => ({\n  type: 'ADD_PANEL',\n  payload: { newPanel },\n});\n\nexport const setPageLabels = (pageLabels) => (dispatch) => {\n  if (pageLabels.length !== core.getTotalPages()) {\n    console.warn('Number of page labels do not match with the total pages.');\n    return;\n  }\n  dispatch({\n    type: 'SET_PAGE_LABELS',\n    payload: { pageLabels: pageLabels.map(String) },\n  });\n};\nexport const setSelectedPageThumbnails = (selectedThumbnailPageIndexes = []) => {\n  fireEvent(Events.SELECTED_THUMBNAIL_CHANGED, selectedThumbnailPageIndexes);\n\n  return {\n    type: 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES',\n    payload: { selectedThumbnailPageIndexes },\n  };\n};\nexport const setShiftKeyThumbnailsPivotIndex = (shiftKeyThumbnailPivotIndex = null) => ({\n  type: 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX',\n  payload: { shiftKeyThumbnailPivotIndex },\n});\nexport const setSwipeOrientation = (swipeOrientation) => ({\n  type: 'SET_SWIPE_ORIENTATION',\n  payload: { swipeOrientation },\n});\nexport const showWarningMessage = (options) => (dispatch) => {\n  dispatch({ type: 'SET_WARNING_MESSAGE', payload: options });\n  dispatch(openElement('warningModal'));\n};\nexport const disableDeleteTabWarning = () => ({\n  type: 'DISABLE_DELETE_TAB_WARNING',\n  payload: { showDeleteTabWarning: false },\n});\nexport const showErrorMessage = (message) => (dispatch) => {\n  dispatch({ type: 'SET_ERROR_MESSAGE', payload: { message } });\n  dispatch(openElement('errorModal'));\n};\nexport const setCustomNoteFilter = (filterFunc) => ({\n  type: 'SET_CUSTOM_NOTE_FILTER',\n  payload: { customNoteFilter: filterFunc },\n});\nexport const setInlineCommentFilter = (filterFunc) => ({\n  type: 'SET_INLINE_COMMENT_FILTER',\n  payload: { inlineCommentFilter: filterFunc },\n});\nexport const setZoomList = (zoomList) => (dispatch) => {\n  const minZoomLevel = getMinZoomLevel();\n  const maxZoomLevel = getMaxZoomLevel();\n  const filteredZoomList = zoomList.filter((zoom) => zoom >= minZoomLevel && zoom <= maxZoomLevel);\n\n  if (filteredZoomList.length !== zoomList.length) {\n    const outOfRangeZooms = zoomList.filter((zoom) => !filteredZoomList.includes(zoom));\n    console.warn(`\n      ${outOfRangeZooms.join(', ')} are not allowed zoom levels in the UI.\n      Valid zoom levels should be in the range of ${minZoomLevel}-${maxZoomLevel}.\n      You can use setMinZoomLevel or setMaxZoomLevel APIs to change the range.\n      See https://docs.apryse.com/api/web/UI.html for more information.\n    `);\n  }\n\n  dispatch({ type: 'SET_ZOOM_LIST', payload: { zoomList: filteredZoomList } });\n};\nexport const useEmbeddedPrint = (useEmbeddedPrint = true) => ({\n  type: 'USE_EMBEDDED_PRINT',\n  payload: { useEmbeddedPrint },\n});\nexport const setMaxSignaturesCount = (maxSignaturesCount) => ({\n  type: 'SET_MAX_SIGNATURES_COUNT',\n  payload: { maxSignaturesCount },\n});\nexport const setUserData = (userData) => ({\n  type: 'SET_USER_DATA',\n  payload: { userData },\n});\nexport const setCustomMeasurementOverlay = (customMeasurementOverlay) => ({\n  type: 'SET_CUSTOM_MEASUREMENT_OVERLAY',\n  payload: { customMeasurementOverlay },\n});\nexport const setSelectedTab = (id, dataElement) => ({\n  type: 'SET_SELECTED_TAB',\n  payload: { id, dataElement },\n});\nexport const setCustomElementOverrides = (dataElement, overrides) => ({\n  type: 'SET_CUSTOM_ELEMENT_OVERRIDES',\n  payload: { dataElement, overrides },\n});\nexport const setPageReplacementModalFileList = (list) => ({\n  type: 'SET_PAGE_REPLACEMENT_FILE_LIST',\n  payload: { list },\n});\nexport const setActiveTheme = (theme) => {\n  fireEvent(Events.THEME_CHANGED, theme);\n\n  return {\n    type: 'SET_ACTIVE_THEME',\n    payload: { theme },\n  };\n};\nexport const setSearchResults = (searchResults) => ({\n  type: 'SET_SEARCH_RESULTS',\n  payload: searchResults,\n});\n\nexport const setClearSearchOnPanelClose = (shouldClear) => ({\n  type: 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE',\n  payload: shouldClear,\n});\n\nexport const setAnnotationContentOverlayHandler = (annotationContentOverlayHandler) => ({\n  type: 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER',\n  payload: { annotationContentOverlayHandler },\n});\n\nexport const setAnnotationReadState = ({ isRead, annotationId }) => ({\n  type: 'SET_ANNOTATION_READ_STATE',\n  payload: { isRead, annotationId },\n});\nexport const addTrustedCertificates = (certificates) => ({\n  type: 'ADD_TRUSTED_CERTIFICATES',\n  payload: { certificates },\n});\nexport const addTrustList = (trustList) => ({\n  type: 'ADD_TRUST_LIST',\n  payload: { trustList },\n});\nexport const setSignatureValidationModalWidgetName = (widgetName) => ({\n  type: 'SET_VALIDATION_MODAL_WIDGET_NAME',\n  payload: { validationModalWidgetName: widgetName },\n});\n\nexport const setNoteSubmissionEnabledWithEnter = (enableNoteSubmissionWithEnter) => ({\n  type: 'SET_SUBMIT_COMMENT_MODE',\n  payload: { enableNoteSubmissionWithEnter },\n});\n\nexport const setNotesPanelTextCollapsing = (enableNotesPanelTextCollapsing) => ({\n  type: 'SET_NOTES_PANEL_TEXT_COLLAPSING',\n  payload: { enableNotesPanelTextCollapsing },\n});\n\nexport const setNotesPanelRepliesCollapsing = (enableNotesPanelRepliesCollapsing) => ({\n  type: 'SET_NOTES_PANEL_REPLIES_COLLAPSING',\n  payload: { enableNotesPanelRepliesCollapsing },\n});\n\nexport const setCommentThreadExpansion = (enableCommentThreadExpansion) => ({\n  type: 'SET_COMMENT_THREAD_EXPANSION',\n  payload: { enableCommentThreadExpansion },\n});\n\nexport const enableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: true },\n});\n\nexport const disableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: false },\n});\n\nexport const enablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: true },\n});\n\nexport const disablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: false },\n});\n\nexport const setWatermarkModalOptions = (watermarkModalOptions) => ({\n  type: 'SET_WATERMARK_MODAL_OPTIONS',\n  payload: { watermarkModalOptions },\n});\n\nexport const replaceRedactionSearchPattern = (searchPattern, regex) => ({\n  type: 'REPLACE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern, regex },\n});\n\nexport const setThumbnailSelectionMode = (thumbnailSelectionMode) => ({\n  type: 'SET_THUMBNAIL_SELECTION_MODE',\n  payload: { thumbnailSelectionMode },\n});\n\nexport const addRedactionSearchPattern = (searchPattern) => ({\n  type: 'ADD_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern },\n});\n\nexport const removeRedactionSearchPattern = (searchPatternType) => ({\n  type: 'REMOVE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPatternType },\n});\n\nexport const setColorMap = (colorMap) => ({\n  type: 'SET_COLOR_MAP',\n  payload: { colorMap }\n});\n\nexport const setZoomStepFactors = (zoomStepFactors) => ({\n  type: 'SET_ZOOM_STEP_FACTORS',\n  payload: { zoomStepFactors },\n});\n\nexport const setNotesPanelCustomHeader = (notesPanelCustomHeaderOptions) => ({\n  type: 'SET_NOTES_PANEL_CUSTOM_HEADER_OPTIONS',\n  payload: { notesPanelCustomHeaderOptions },\n});\n\nexport const setNotesPanelEmptyPanel = (notesPanelCustomEmptyPanel) => ({\n  type: 'SET_NOTES_PANEL_CUSTOM_EMPTY_PANEL',\n  payload: { notesPanelCustomEmptyPanel },\n});\n\nexport const addMeasurementScalePreset = (measurementSystem, newPreset, index) => ({\n  type: 'ADD_MEASUREMENT_SCALE_PRESET',\n  payload: { measurementSystem, newPreset, index }\n});\n\nexport const removeMeasurementScalePreset = (measurementSystem, index) => ({\n  type: 'REMOVE_MEASUREMENT_SCALE_PRESET',\n  payload: { measurementSystem, index }\n});\n\nexport const setIsMultipleScalesMode = (isMultipleScalesMode) => ({\n  type: 'SET_IS_MULTIPLE_SCALE_MODE',\n  payload: { isMultipleScalesMode }\n});\n\nexport const setReplyAttachmentPreviewEnabled = (replyAttachmentPreviewEnabled) => ({\n  type: 'SET_REPLY_ATTACHMENT_PREVIEW',\n  payload: { replyAttachmentPreviewEnabled }\n});\n\nexport const setNotesPanelMultiSelect = (isNotesPanelMultiSelectEnabled) => ({\n  type: 'SET_NOTES_PANEL_MULTI_SELECT',\n  payload: { isNotesPanelMultiSelectEnabled }\n});\n\nexport const setReplyAttachmentHandler = (replyAttachmentHandler) => ({\n  type: 'SET_REPLY_ATTACHMENT_HANDLER',\n  payload: { replyAttachmentHandler }\n});\n\nexport const setCustomSettings = (customSettings) => ({\n  type: 'SET_CUSTOM_SETTINGS',\n  payload: customSettings\n});\n\nexport const setEnableRightClickAnnotationPopup = (isEnabled) => ({\n  type: 'SET_ENABLE_RIGHT_CLICK_ANNOTATION_POPUP',\n  payload: { isEnabled }\n});\n\nexport const setToolDefaultStyleUpdateFromAnnotationPopupEnabled = (isToolDefaultStyleUpdateFromAnnotationPopupEnabled) => ({\n  type: 'SET_TOOL_DEFAULT_STYLE_UPDATE_FROM_ANNOTATION_POPUP_ENABLED',\n  payload: isToolDefaultStyleUpdateFromAnnotationPopupEnabled\n});\n\nexport const setMultiViewerSyncScrollingMode = (multiViewerComparedSyncScrollingMode) => ({\n  type: 'SET_MULTI_VIEWER_SYNC_SCROLLING_MODE',\n  payload: multiViewerComparedSyncScrollingMode\n});\n\nexport const setTextSignatureQuality = (multiplier) => ({\n  type: 'SET_TEXT_SIGNATURE_CANVAS_MULTIPLIER',\n  payload: { multiplier },\n});\n\nexport const setEnableMeasurementAnnotationsFilter = (isEnabled) => ({\n  type: 'SET_ENABLE_MEASUREMENT_ANNOTATIONS_FILTER',\n  payload: { isEnabled },\n});","\nconst indexOfHeaderItem = (header, itemDataElement) => {\n  let itemIndex = -1;\n  header['items'].forEach((element, index) => {\n    const item = element.props || element;\n    if (item['dataElement'] === itemDataElement) {\n      itemIndex = index;\n    }\n  });\n  return itemIndex;\n};\n\nexport {\n  indexOfHeaderItem\n};","import hotkeys from 'src/apis/hotkeys';\nimport core from 'core';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport getAnnotationCreateToolNames from 'helpers/getAnnotationCreateToolNames';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n// a higher order function that creates the enableTools and disableTools APIs\nexport default (enable, store) => (\n  toolNames,\n) => {\n  const map = {\n    AnnotationCreateTextUnderline: 'textUnderlineToolButton',\n    AnnotationCreateTextHighlight: 'textHighlightToolButton',\n    AnnotationCreateTextSquiggly: 'textSquigglyToolButton',\n    AnnotationCreateTextStrikeout: 'textStrikeoutToolButton',\n  };\n\n  let emptyArgument = false;\n\n  if (toolNames === undefined) {\n    toolNames = getAnnotationCreateToolNames();\n    emptyArgument = true;\n  }\n\n  const toolNameArray = typeof toolNames === 'string' ? [toolNames] : toolNames;\n  const dataElements = selectors.getToolButtonDataElements(\n    store.getState(),\n    toolNameArray,\n  );\n\n  // if the argument is empty, disable the forms group to prevent the user from re-enabling all tools\n  if (emptyArgument) {\n    dataElements.push('toolbarGroup-Forms');\n  }\n\n  // for the tool names in the map, enable/disable other related buttons\n  Object.keys(map).forEach((toolName) => {\n    if (toolNameArray.indexOf(toolName) !== -1) {\n      dataElements.push(map[toolName]);\n    }\n  });\n\n  const currTool = core.getToolMode();\n  if (!enable && toolNames.indexOf(currTool?.name) > -1) {\n    core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n  }\n\n  if (enable) {\n    toolNameArray.forEach((toolName) => {\n      toolName && hotkeys.on(toolName);\n    });\n\n    store.dispatch(actions.enableElements(dataElements, PRIORITY_TWO));\n  } else {\n    toolNameArray.forEach((toolName) => {\n      toolName && hotkeys.off(toolName);\n    });\n\n    store.dispatch(actions.disableElements(dataElements, PRIORITY_TWO));\n  }\n};\n","import core from 'core';\n\nexport default () => {\n  const toolNames = [];\n  const toolModeMap = core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach((toolMode) => {\n    const tool = toolModeMap[toolMode];\n    const isAnnotationTool = tool instanceof window.Core.Tools.GenericAnnotationCreateTool || tool instanceof window.Core.Tools.TextAnnotationCreateTool || tool.defaults;\n\n    if (isAnnotationTool) {\n      toolNames.push(tool.name);\n    }\n  });\n\n  return toolNames;\n};\n","var currentId = 0;\n/**\n * Generates a sequential string to use as a unique identifier. This should be\n * used over `getId` if you need to use it as a DOM id, or a React key.\n *\n * @param prefix Optional. Prefix for the string id.\n */\nexport function getStringId(prefix) {\n    if (prefix === void 0) { prefix = 'id'; }\n    return prefix + \"_\" + (currentId++).toString(16);\n}\n/**\n * Returns a Symbol to uniquely identify something. Will fallback to using\n * string.\n *\n * @param description Description of the Symbol. Used as string prefix if not supported.\n */\nexport function getId(description) {\n    if (typeof Symbol === 'function')\n        return Symbol(description);\n    return description + \"_\" + getStringId();\n}\n","import { useMemo } from 'react';\nimport { getStringId } from '../utils';\n/**\n * If an ID is not given, will generate and memoize an ID to use for a11y\n * or any other purpose.\n * @param id The optional ID provided by props.\n */\nexport function useID(id) {\n    return useMemo(function () { return id || getStringId('label'); }, [id]);\n}\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';\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 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    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, namespaces.join()]);\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]);\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}","var WritableStream = require('stream').Writable;\nvar util = require('util');\nvar Blob = require('blob');\nvar URL = global.URL || global.webkitURL || global.mozURL;\n\nfunction BlobStream() {\n  if (!(this instanceof BlobStream))\n    return new BlobStream;\n    \n  WritableStream.call(this);\n  this._chunks = [];\n  this._blob = null;\n  this.length = 0;\n}\n\nutil.inherits(BlobStream, WritableStream);\n\nBlobStream.prototype._write = function(chunk, encoding, callback) {\n  // convert chunks to Uint8Arrays (e.g. Buffer when array fallback is being used)\n  if (!(chunk instanceof Uint8Array))\n    chunk = new Uint8Array(chunk);\n    \n  this.length += chunk.length;\n  this._chunks.push(chunk);\n  callback();\n};\n\nBlobStream.prototype.toBlob = function(type) {\n  type = type || 'application/octet-stream';\n  \n  // cache the blob if needed\n  if (!this._blob) {\n    this._blob = new Blob(this._chunks, {\n      type: type\n    });\n    \n    this._chunks = []; // free memory\n  }\n  \n  // if the cached blob's type doesn't match the requested type, make a new blob\n  if (this._blob.type !== type)\n    this._blob = new Blob([this._blob], { type: type });\n  \n  return this._blob;\n};\n\nBlobStream.prototype.toBlobURL = function(type) {\n  return URL.createObjectURL(this.toBlob(type));\n};\n\nmodule.exports = BlobStream;\n","var fetchApi\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch\n  }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n  var f = fetchApi || require('cross-fetch')\n  if (f.default) f = f.default\n  exports.default = f\n  module.exports = exports.default\n}\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * @typedef {Object} UI.MentionsManager.Mention\n * @property {string} email The email of the mentioned person. This is passed from setUserData.\n * @property {string} value The value(display name) of the mentioned person. This is passed from setUserData.\n * @property {string} type The type of the mentioned person. This is passed from setUserData.\n * @property {string} id The id of the mentioned person. This is passed from setUserData.\n * @property {string} annotId The id of the annotation in which the contents contain the mentions.\n */\n\n/**\n * @typedef {Object} mentionData\n * @property {UI.MentionsManager.Mention} mentions an array of mentions that an annotation contains\n * @property {string} contentWithoutMentions the content of an annotation, but without mentions\n * @ignore\n */\n\n/**\n * @typedef {Object.<string, string>} UI.MentionsManager.UserData\n * @property {string} value The display name of the user, which will be displayed in the suggestion overlay.\n * @property {string} [id] The unique id of the user. Default to `value`.\n * @property {string} [email] The email of the user, which will be displayed under `value` in the suggestion overlay, if present.\n */\n\n/**\n * @class\n * @name MentionsManager\n * @memberof UI\n * @extends Core.EventHandler\n */\nclass MentionsManager {\n  initialize(store, annotManager) {\n    this.store = store;\n    /**\n     * the key represents the event name\n     * the value is an array of callbacks that will be called when the given key event is triggered\n     * @type {Object.<string, Function[]>}\n     * @ignore\n     */\n    this.events = {};\n    /**\n     * the key represents an annotation's id\n     * the value is a mentionMap\n     * @type {Object.<string, mentionData>}\n     * @example\n     * {\n     *   'eb15d11a-ef1b-6d03-adba-e0eb64bbf6d2': {\n     *     mentions: [\n     *       {\n     *         email: 'cahang@apryse.com',\n     *         value: 'Edmiz',\n     *         type: 'user',\n     *         id: 'aidsfuha-32123123',\n     *       },\n     *       ...\n     *     ],\n     *     contentWithoutMentions: '...'\n     *   }\n     * }\n     * @ignore\n     */\n    this.idMentionDataMap = {};\n    this.allowedTrailingCharacters = [' ', '\\n'];\n    this.mentionLookupCallback = this.defaultMentionsSearchCallback;\n    annotManager.addEventListener('annotationChanged', (annotations, action, { imported }) => {\n      if (!annotations.length || !this.getUserData().length) {\n        return;\n      }\n      if (action === 'add') {\n        imported ? this.handleAnnotationsAdded(annotations, imported) : this.handleAnnotationsAdded(annotations);\n      } else if (action === 'modify') {\n        this.handleAnnotationsModified(annotations);\n      } else if (action === 'delete') {\n        this.handleAnnotationsDeleted(annotations);\n      }\n    });\n  }\n\n  handleAnnotationsAdded(annotations, imported = false) {\n    let newMentions = [];\n\n    annotations.forEach((annotation) => {\n      const mentionData = this.extractMentionDataFromAnnot(annotation);\n\n      this.idMentionDataMap[annotation.Id] = mentionData;\n      newMentions = newMentions.concat(mentionData.mentions);\n    });\n\n    if (newMentions.length && !imported) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n  }\n\n  handleAnnotationsModified(annotations) {\n    const newMentions = [];\n    let modifiedMentions = [];\n    const deletedMentions = [];\n\n    for (const annotation of annotations) {\n      const prevMentionData = this.idMentionDataMap[annotation.Id] || {\n        mentions: [],\n        contentWithoutMentions: '',\n      };\n      const currMentionData = this.extractMentionDataFromAnnot(annotation);\n      const prevMentions = prevMentionData.mentions;\n      const currMentions = currMentionData.mentions;\n\n      this.idMentionDataMap[annotation.Id] = currMentionData;\n\n      for (const currMention of currMentions) {\n        const isNewMention = !prevMentions.find((prevMention) => this.isSameMention(prevMention, currMention)\n        );\n        if (isNewMention) {\n          newMentions.push(currMention);\n        }\n      }\n\n      for (const prevMention of prevMentions) {\n        const isDeletedMention = !currMentions.find((currMention) => this.isSameMention(prevMention, currMention)\n        );\n        if (isDeletedMention) {\n          deletedMentions.push(prevMention);\n        }\n      }\n\n      if (\n        prevMentions.length &&\n        prevMentionData.contentWithoutMentions !== currMentionData.contentWithoutMentions\n      ) {\n        modifiedMentions = modifiedMentions.concat(currMentions);\n      }\n    }\n\n    if (newMentions.length) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n    if (modifiedMentions.length) {\n      this.trigger('mentionChanged', [modifiedMentions, 'modify']);\n    }\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  handleAnnotationsDeleted(annotations) {\n    let deletedMentions = [];\n\n    annotations.forEach((annotation) => {\n      if (this.idMentionDataMap[annotation.Id]) {\n        deletedMentions = deletedMentions.concat(this.idMentionDataMap[annotation.Id].mentions);\n        delete this.idMentionDataMap[annotation.Id];\n      }\n    });\n\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  doesDeltaContainMention(deltas) {\n    const containsMention = deltas.some((delta) => {\n      return delta.insert?.mention;\n    });\n    return containsMention;\n  }\n\n  getFormattedTextFromDeltas(deltas) {\n    const formattedMentionTextList = [];\n    deltas.forEach((delta) => {\n      if (delta.insert) {\n        if (typeof (delta.insert) === 'string') {\n          formattedMentionTextList.push(delta.insert);\n        } else if (delta.insert.mention) {\n          const mention = delta.insert.mention;\n          const formattedMentionText = `${mention.denotationChar}[${mention.value}](${mention.id})`;\n          formattedMentionTextList.push(formattedMentionText);\n        }\n      }\n    });\n    return formattedMentionTextList.join('');\n  }\n\n  /**\n   * @param {string} str a string to extract mention data from\n   * @returns {object} returns an object that contains the following properties\n   * plainTextValue: a string that has been transformed to not have the markups in the incoming string\n   * ids: an array of strings that contains the mentioned ids\n   * @ignore\n   */\n  extractMentionDataFromStr(str) {\n    // the value of the markup is defined at https://github.com/signavio/react-mentions#configuration\n    const markupRegex = /@\\[(.*?)\\]\\((.*?)\\)/g;\n    const ids = [];\n    let match;\n    let plainTextValue = str;\n\n    // iterate through the matches, extract ids and build the plainTextValue\n    // after the iteration finishes, if the incoming string is Hello! @[Zhijie Zhang](zzhang@apryse.com), then we should have:\n    // {\n    //   plainTextValue: Hello! Zhijie Zhang,\n    //   ids: ['zzhang@apryse.com'],\n    // }\n    // eslint-disable-next-line no-cond-assign\n    while ((match = markupRegex.exec(str)) !== null) {\n      const [wholeMatch, displayName, id] = match;\n\n      ids.push(id);\n      plainTextValue = plainTextValue.replace(\n        // keep the @ and only replace the remaining text\n        wholeMatch.slice(1),\n        displayName,\n      );\n    }\n\n    return {\n      plainTextValue,\n      ids,\n    };\n  }\n\n  /**\n   * @param {string} content\n   * @returns {mentionData}\n   * @ignore\n   */\n  extractMentionDataFromAnnot(annotation) {\n    let mentionData = annotation.getCustomData('trn-mention');\n    const userData = this.getUserData();\n    const contents = annotation.getContents();\n    const result = {\n      mentions: [],\n      contentWithoutMentions: contents,\n    };\n\n    if (mentionData === '') {\n      return result;\n    }\n\n    mentionData = JSON.parse(mentionData);\n\n    userData.forEach((user) => {\n      if (mentionData.ids.includes(user.id) && this.isValidMention(contents, user.value)) {\n        result.mentions.push({\n          ...user,\n          annotId: annotation.Id,\n        });\n\n        result.contentWithoutMentions = result.contentWithoutMentions.replace(`@${user.value}`, '');\n      }\n    });\n\n    return result;\n  }\n\n  isValidMention(content, value) {\n    value = `@${value}`;\n\n    const startIndex = content.indexOf(value);\n    const nextChar = content[startIndex + value.length];\n    const isEndOfString = typeof nextChar === 'undefined';\n    const allowedChars = this.getAllowedTrailingCharacters();\n\n    return isEndOfString || allowedChars === '*' || allowedChars.includes(nextChar);\n  }\n\n  isSameMention(prevMention, currMention) {\n    for (const key in prevMention) {\n      if (prevMention[key] !== currMention[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  createMentionReply(annotation, value) {\n    const { plainTextValue, ids } = this.extractMentionDataFromStr(value);\n\n    const replyAnnot = new window.Core.Annotations.StickyAnnotation();\n    replyAnnot['InReplyTo'] = annotation['Id'];\n    replyAnnot['X'] = annotation['X'];\n    replyAnnot['Y'] = annotation['Y'];\n    replyAnnot['PageNumber'] = annotation['PageNumber'];\n    replyAnnot['Author'] = core.getCurrentUser();\n    replyAnnot.setContents(plainTextValue || '');\n    replyAnnot.setCustomData('trn-mention', JSON.stringify({\n      contents: value,\n      ids,\n    }));\n\n    annotation.addReply(replyAnnot);\n    return replyAnnot;\n  }\n\n  /**\n   * Sets the user data that will be displayed in the suggestions overlay when an @ is entered in the textarea.\n   * @method UI.MentionsManager#setUserData\n   * @param {UI.MentionsManager.UserData[]} userData An array of user data\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n      {\n        value: 'Jane Doe',\n        email: 'jDoe@gmail.com'\n      }\n    ]);\n  });\n   */\n  setUserData(userData) {\n    userData = userData.map((user) => ({\n      ...user,\n      id: user.id || user.email || user.value,\n    }));\n\n    this.store.dispatch(actions.setUserData(userData));\n  }\n\n  /**\n   * Gets the user data\n   * @method UI.MentionsManager#getUserData\n   * @returns {UI.MentionsManager.UserData[]} An array of user data\n   */\n  getUserData() {\n    return selectors.getUserData(this.store.getState());\n  }\n\n  /**\n   * Sets the characters that can follow a mention, while not invalidating it\n   * By default, a mention can only be followed by a space, or is located at the end of the string\n   * @method UI.MentionsManager#setAllowedTrailingCharacters\n   * @param {string[]|'*'} chars An array of characters. If `*` is passed, then a mention can be followed by any characters\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n    ]);\n\n    // this is considered as a mention, because `@John Doe` is at the end of the string\n    'Hello, @John Doe'\n\n    // this is considered as a mention, because `@John Doe` is followed by a space\n    'Hello, @John Doe How are you?'\n\n    // this is NOT considered as a mention, because `@John Doe` is followed by a comma\n    '@John Doe, Hello!'\n\n    instance.mentions.setAllowedTrailingCharacters([' ', ',']);\n\n    // this is now considered as a mention, because comma is an allowed trailing character\n    '@John Doe, Hello!'\n  });\n   */\n  setAllowedTrailingCharacters(chars) {\n    this.allowedTrailingCharacters = chars;\n  }\n\n  /**\n   * Gets the allowed trailing characters\n   * @method UI.MentionsManager#getAllowedTrailingCharacters\n   * @returns {string[]|'*'} An array of trailing characters, or '*'\n   */\n  getAllowedTrailingCharacters() {\n    return this.allowedTrailingCharacters;\n  }\n\n  on(eventName, fn) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = [];\n    }\n\n    this.events[eventName].push(fn);\n\n    return this;\n  }\n\n  off(eventName, fn) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (typeof eventName === 'undefined') {\n      this.events = {};\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    if (fn) {\n      this.events[eventName] = this.events[eventName].filter((handler) => handler !== fn);\n    } else {\n      this.events[eventName] = [];\n    }\n\n    return this;\n  }\n\n  one(eventName, fn) {\n    const origFn = fn;\n\n    fn = (...args) => {\n      this.off(eventName, fn);\n\n      origFn.apply(this, args);\n    };\n\n    return this.on(eventName, fn);\n  }\n\n  trigger(eventName, ...data) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    // normalize data if only an array is passed in as data\n    // for example: trigger('mentionChanged', [mentions])\n    // data will be passed to the handler: (mentions) => {}\n    if (data.length === 1 && Array.isArray(data[0])) {\n      data = data[0];\n    }\n\n    this.events[eventName].forEach((fn) => {\n      fn.call(this, ...data);\n    });\n\n    return this;\n  }\n\n  addEventListener(...args) {\n    this.on(...args);\n  }\n\n  setEventListener(...args) {\n    this.on(...args);\n  }\n\n  removeEventListener(...args) {\n    this.off(...args);\n  }\n\n\n  /**\n   * Sets the mention lookup callback function used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#setMentionLookupCallback\n   * @param {function} callback A callback function that returns an array of users that displayed in the suggestions overlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setMentionLookupCallback(async (userData, searchTerm) => {\n      const matches = [];\n      userData.forEach((user) => {\n        if (user.name === 'John Doe') {\n          matches.push(user);\n        }\n      });\n      return matches;\n    });\n  });\n   */\n  setMentionLookupCallback(callback) {\n    this.mentionLookupCallback = callback;\n  }\n\n  /**\n   * Gets the current mention lookup callback function being used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#getMentionLookupCallback\n   * @returns {function} the current function used to filter users in the suggestions overlay\n   */\n  getMentionLookupCallback() {\n    return this.mentionLookupCallback;\n  }\n\n  /**\n   * The default mention lookup callback used to filter users in the suggestions overlay.\n   * @method UI.MentionsManager#defaultMentionLookupCallback\n   */\n  defaultMentionsSearchCallback(userData, searchTerm) {\n    if (searchTerm.length === 0) {\n      return (userData);\n    }\n\n    const matches = [];\n    const searchTermLowerCase = searchTerm.toLowerCase();\n    userData.forEach(function(user) {\n      const userValueIncludesSearchTerm = user.value.toLowerCase().includes(searchTermLowerCase);\n      const userIdIncludesSearchTerm = user.id && user.id.toLowerCase().includes(searchTermLowerCase);\n      const userEmailIncludesSearchTerm = user.email && user.email.toLowerCase().includes(searchTermLowerCase);\n\n      if (userValueIncludesSearchTerm || userIdIncludesSearchTerm || userEmailIncludesSearchTerm) {\n        matches.push(user);\n      }\n    });\n\n    return (matches);\n  }\n}\n\n/**\n * Triggered when a mention or mentions have been changed (added, deleted, modified).\n * Attach like instance.mentions.on('mentionChanged', callback)\n * @name UI.MentionsManager#mentionChanged\n * @event\n * @param {UI.MentionsManager.Mention} mentions The mentions that were changed\n * @param {'add'|'modify'|'delete'} action The action that occurred (add, delete, modify)\n */\n\nexport default new MentionsManager();\nexport {\n  MentionsManager\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Swipeable } from 'react-swipeable';\n\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport Button from 'components/Button';\nimport './ModalWrapper.scss';\n\nconst SwipeableWrapper = (props) => {\n  if (props.swipeToClose) {\n    return (\n      <Swipeable\n        onSwipedUp={props.closeHandler}\n        onSwipedDown={props.closeHandler}\n        preventDefaultTouchmoveEvent\n      >\n        {props.children}\n      </Swipeable>\n    );\n  }\n  return props.children;\n};\n\nconst ModalWrapper = (props) => {\n  const [t] = useTranslation();\n\n  return (\n    <FocusTrap locked={props.isOpen}>\n      <div className=\"modal-container\" onClick={props.containerOnClick}>\n        <div className=\"wrapper\">\n          <SwipeableWrapper {...props}>\n            <div className=\"header-container\">\n              <div className='left-header'>\n                {props.backButtonDataElement && (\n                  <Button\n                    className=\"back-button\"\n                    dataElement={props.backButtonDataElement}\n                    title={t('action.back')}\n                    img={'icon-arrow-back'}\n                    onClick={props.onBackClick}\n                  />\n                )}\n                {t(props.title)}\n              </div>\n              <Button\n                className=\"close-button\"\n                dataElement={props.closeButtonDataElement}\n                title=\"action.close\"\n                img=\"ic_close_black_24px\"\n                onClick={props.onCloseClick}\n              />\n            </div>\n          </SwipeableWrapper>\n          {props.children}\n        </div>\n      </div>\n    </FocusTrap>\n  );\n};\n\nexport default ModalWrapper;","import ModalWrapper from './ModalWrapper';\n\nexport default ModalWrapper;","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","const Scale = window.Core.Scale;\n\nexport const PresetMeasurementSystems = {\n  METRIC: 'metric',\n  IMPERIAL: 'imperial'\n};\n\nconst metricPreset = [\n  ['1:10', new Scale([[1, 'mm'], [10, 'mm']])],\n  ['1:20', new Scale([[1, 'mm'], [20, 'mm']])],\n  ['1:50', new Scale([[1, 'mm'], [50, 'mm']])],\n  ['1:100', new Scale([[1, 'mm'], [100, 'mm']])],\n  ['1:200', new Scale([[1, 'mm'], [200, 'mm']])],\n  ['1:500', new Scale([[1, 'mm'], [500, 'mm']])],\n  ['1:1000', new Scale([[1, 'mm'], [1000, 'mm']])]\n];\nconst imperialPreset = [\n  ['1/16\"=1\\'-0\"', new Scale([[1 / 16, 'in'], [1, 'ft-in']])],\n  ['3/32\"=1\\'-0\"', new Scale([[3 / 32, 'in'], [1, 'ft-in']])],\n  ['1/8\"=1\\'-0\"', new Scale([[1 / 8, 'in'], [1, 'ft-in']])],\n  ['3/16\"=1\\'-0\"', new Scale([[3 / 16, 'in'], [1, 'ft-in']])],\n  ['1/4\"=1\\'-0\"', new Scale([[1 / 4, 'in'], [1, 'ft-in']])],\n  ['3/8\"=1\\'-0\"', new Scale([[3 / 8, 'in'], [1, 'ft-in']])],\n  ['1/2\"=1\\'-0\"', new Scale([[1 / 2, 'in'], [1, 'ft-in']])],\n  ['3/4\"=1\\'-0\"', new Scale([[3 / 4, 'in'], [1, 'ft-in']])],\n  ['1\"=1\\'-0\"', new Scale([[1, 'in'], [1, 'ft-in']])]\n];\n\nexport const getMeasurementScalePreset = () => ({\n  [PresetMeasurementSystems.METRIC]: metricPreset,\n  [PresetMeasurementSystems.IMPERIAL]: imperialPreset\n});\n\nconst decimalPrecisions = [\n  ['0.1', 0.1],\n  ['0.01', 0.01],\n  ['0.001', 0.001],\n  ['0.0001', 0.0001]\n];\nconst fractionalPrecisions = [\n  ['1/8', 0.125],\n  ['1/16', 0.0625],\n  ['1/32', 0.03125],\n  ['1/64', 0.015625]\n];\nexport const PrecisionType = {\n  DECIMAL: 'decimal',\n  FRACTIONAL: 'fractional'\n};\nexport const precisionOptions = {\n  [PrecisionType.DECIMAL]: decimalPrecisions,\n  [PrecisionType.FRACTIONAL]: fractionalPrecisions\n};\n\nexport const precisionFractions = {\n  0.125: '1/8',\n  0.0625: '1/16',\n  0.03125: '1/32',\n  0.015625: '1/64'\n};\n\nexport const numberRegex = /^\\d*(\\.\\d*)?$/;\nexport const fractionRegex = /^\\d*(\\s\\d\\/\\d*)$/;\nexport const pureFractionRegex = /^(\\d\\/\\d*)*$/;\nexport const floatRegex = /^(\\d+)?(\\.)?(\\d+)?$/;\nexport const inFractionalRegex = /^((\\d+) )?((\\d+)\\/)?(\\d+)\"$/;\nexport const ftInFractionalRegex = /^((\\d+)'-)?((\\d+) )?((\\d+)\\/)?(\\d+)\"$/;\nexport const ftInDecimalRegex = /^((\\d+)ft-)?(((\\d+).)?(\\d+))in$/;\n\nexport const parseFtInDecimal = (valueStr) => {\n  const matches = valueStr.match(ftInDecimalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  if (matches[3] && Number(matches[3])) {\n    sum += (Number(matches[3]) / 12);\n  }\n  return sum;\n};\nexport const parseInFractional = (valueStr) => {\n  const matches = valueStr.match(inFractionalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  if (matches[5] && Number(matches[5])) {\n    if (matches[4] && Number(matches[4])) {\n      sum += (Number(matches[4]) / Number(matches[5]));\n    } else {\n      sum += Number(matches[5]);\n    }\n  }\n  return sum;\n};\nexport const parseFtInFractional = (valueStr) => {\n  const matches = valueStr.match(ftInFractionalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  sum += matches[4] ? Number(matches[4]) / 12 : 0;\n  if (matches[7] && Number(matches[7])) {\n    if (matches[6] && Number(matches[6])) {\n      sum += (Number(matches[6]) / Number(matches[7])) / 12;\n    } else {\n      sum += Number(matches[7]) / 12;\n    }\n  }\n  return sum;\n};\n\nexport const fractionalUnits = ['in', 'ft-in'];\nexport const metricUnits = ['mm', 'cm', 'm', 'km'];\n\nexport const ifFractionalPrecision = (precision) => fractionalPrecisions.map((item) => item[0]).includes(precision) || fractionalPrecisions.map((item) => item[1]).includes(precision);\n\nexport const hintValues = {\n  'in': 'eg. 1 1/2\"',\n  'ft-in': 'eg. 1\\'-1 1/2\"',\n  'ft-in decimal': 'eg. 1ft-10.5in'\n};\n\n// the base unit is cm\nconst unitConversion = {\n  'mm': 0.1,\n  'cm': 1,\n  'm': 100,\n  'km': 100000,\n  'mi': 160394,\n  'yd': 91.44,\n  'ft': 30.48,\n  'in': 2.54,\n  'ft\\'': 30.48,\n  'in\"': 2.54,\n  'pt': 0.0352778,\n  'ft-in': 30.48\n};\n\nexport const convertUnit = (value, unit, newUnit) => {\n  return value * unitConversion[unit] / unitConversion[newUnit];\n};\n\nexport const scalePresetPrecision = {\n  [imperialPreset[0][0]]: fractionalPrecisions[1],\n  [imperialPreset[1][0]]: fractionalPrecisions[2],\n  [imperialPreset[2][0]]: fractionalPrecisions[0],\n  [imperialPreset[3][0]]: fractionalPrecisions[1],\n  [imperialPreset[4][0]]: fractionalPrecisions[0],\n  [imperialPreset[5][0]]: fractionalPrecisions[0],\n  [imperialPreset[6][0]]: fractionalPrecisions[0],\n  [imperialPreset[7][0]]: fractionalPrecisions[0],\n  [imperialPreset[8][0]]: fractionalPrecisions[0]\n};\n\nexport const initialScale = new Scale({ pageScale: { value: 1, unit: 'in' }, worldScale: { value: 1, unit: 'in' } });\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\n\nimport './PageNumberInput.scss';\n\nconst propTypes = {\n  selectedPageNumbers: PropTypes.arrayOf(PropTypes.number),\n  pageCount: PropTypes.number,\n  onSelectedPageNumbersChange: PropTypes.func,\n  onBlurHandler: PropTypes.func,\n  placeholder: PropTypes.string,\n};\n\nconst noop = () => {};\n\nfunction PageNumberInput({ selectedPageNumbers, onSelectedPageNumbersChange, onBlurHandler = noop, pageCount, placeHolder, onError = noop }) {\n  // Since we don't have page labels info we just assume page numbers as labels\n  const pageLabels = Array.from({ length: pageCount }, (_, i) => (i + 1).toString());\n  const [pageString, setPageString] = useState('');\n\n  useEffect(() => {\n    // Whenever we receive a selectedPageNumbers prop, massage it into the nice format\n    if (selectedPageNumbers) {\n      setPageString(getPageString(selectedPageNumbers));\n    }\n  }, [selectedPageNumbers]);\n\n  const onPagesChange = (e) => {\n    setPageString(e.target.value);\n\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n\n    // Send info back to parent component\n    onSelectedPageNumbersChange && onSelectedPageNumbersChange(pageNumbersArray);\n  };\n\n  const getPageString = (selectedPageArray) => {\n    let pagesToPrint = '';\n    const sortedPages = selectedPageArray.sort((a, b) => a - b);\n    let prevIndex = null;\n\n    for (let i = 0; sortedPages.length > i; i++) {\n      if (sortedPages[i + 1] === sortedPages[i] + 1) {\n        prevIndex = prevIndex !== null ? prevIndex : sortedPages[i];\n      } else if (prevIndex !== null) {\n        pagesToPrint = `${pagesToPrint}${prevIndex}-${sortedPages[i]}, `;\n        prevIndex = null;\n      } else {\n        pagesToPrint = `${pagesToPrint}${sortedPages[i]}, `;\n      }\n    }\n\n    return pagesToPrint.slice(0, -2);\n  };\n\n  const onBlur = (e) => {\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n    const pageNumbersString = getPageString(pageNumbersArray);\n    setPageString(pageNumbersString);\n\n    // Send info back to parent component\n    onBlurHandler && onBlurHandler(pageNumbersArray);\n  };\n\n  return (\n    <input\n      className=\"page-number-input\"\n      type=\"text\"\n      onChange={onPagesChange}\n      onBlur={onBlur}\n      value={pageString}\n      placeholder={placeHolder}\n    />\n  );\n}\n\nPageNumberInput.propTypes = propTypes;\n\nexport default PageNumberInput;\n","import PageNumberInput from './PageNumberInput';\n\nexport default PageNumberInput;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/extends';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport '@babel/runtime/helpers/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 React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CacheProvider } from '@emotion/core';\nimport 'react-dom';\nimport '@babel/runtime/helpers/typeof';\nexport { F as components } from './index-75b02bac.browser.esm.js';\nimport { S as Select } from './Select-e1cf49ae.browser.esm.js';\nexport { c as createFilter, a as defaultTheme, m as mergeStyles } from './Select-e1cf49ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from './stateManager-2f2b6f5b.browser.esm.js';\nimport createCache from '@emotion/cache';\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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar NonceProvider = /*#__PURE__*/function (_Component) {\n  _inherits(NonceProvider, _Component);\n\n  var _super = _createSuper(NonceProvider);\n\n  function NonceProvider(props) {\n    var _this;\n\n    _classCallCheck(this, NonceProvider);\n\n    _this = _super.call(this, props);\n\n    _this.createEmotionCache = function (nonce) {\n      return createCache({\n        nonce: nonce\n      });\n    };\n\n    _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n    return _this;\n  }\n\n  _createClass(NonceProvider, [{\n    key: \"render\",\n    value: function render() {\n      var emotionCache = this.createEmotionCache(this.props.nonce);\n      return /*#__PURE__*/React.createElement(CacheProvider, {\n        value: emotionCache\n      }, this.props.children);\n    }\n  }]);\n\n  return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? 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) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\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) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\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';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (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() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n","var map = {\n\t\"./apryse-logo.svg\": 619,\n\t\"./calibrate.svg\": 620,\n\t\"./digital_signature_error.svg\": 621,\n\t\"./digital_signature_valid.svg\": 622,\n\t\"./digital_signature_warning.svg\": 623,\n\t\"./group-annotations-icon.svg\": 624,\n\t\"./ic-audio-redact.svg\": 625,\n\t\"./ic-calibrate.svg\": 626,\n\t\"./ic-delete.svg\": 627,\n\t\"./ic-file-cad.svg\": 628,\n\t\"./ic-file-doc.svg\": 629,\n\t\"./ic-file-etc.svg\": 630,\n\t\"./ic-file-img.svg\": 631,\n\t\"./ic-file-pdf.svg\": 632,\n\t\"./ic-file-ppt.svg\": 633,\n\t\"./ic-file-xls.svg\": 634,\n\t\"./ic-full-frame-video-and-audio-redact.svg\": 635,\n\t\"./ic-full-frame-video-redact.svg\": 636,\n\t\"./ic-hamburger-menu.svg\": 637,\n\t\"./ic-indent-decrease.svg\": 638,\n\t\"./ic-indent-increase.svg\": 639,\n\t\"./ic-insert text.svg\": 640,\n\t\"./ic-paragraph.svg\": 641,\n\t\"./ic-replace text.svg\": 642,\n\t\"./ic-wv3d-properties-panel-menu.svg\": 643,\n\t\"./ic_annotation_area_black_24px.svg\": 644,\n\t\"./ic_annotation_cloudy_rectangular_area_black_24px.svg\": 645,\n\t\"./ic_annotation_ellipse_area_black.svg\": 646,\n\t\"./ic_annotation_eraser_black_24px.svg\": 647,\n\t\"./ic_annotation_rectangular_area_black_24px.svg\": 648,\n\t\"./ic_annotation_signature_black_24px.svg\": 649,\n\t\"./ic_annotation_strikeout_black_24px.svg\": 650,\n\t\"./ic_annotation_underline_black_24px.svg\": 651,\n\t\"./ic_bookmarks_black_24px.svg\": 652,\n\t\"./ic_check_black_24px.svg\": 653,\n\t\"./ic_chevron_down_black_24px.svg\": 654,\n\t\"./ic_chevron_left_black_24px.svg\": 655,\n\t\"./ic_chevron_right_black_24px.svg\": 656,\n\t\"./ic_chevron_up_black_24px.svg\": 657,\n\t\"./ic_close_black_24px.svg\": 658,\n\t\"./ic_copy_black_24px.svg\": 659,\n\t\"./ic_crop_black_24px.svg\": 660,\n\t\"./ic_edit_page_24px.svg\": 661,\n\t\"./ic_fileattachment_24px.svg\": 662,\n\t\"./ic_layers_24px.svg\": 663,\n\t\"./ic_pause_24px.svg\": 664,\n\t\"./ic_play_24px.svg\": 665,\n\t\"./ic_select_black_24px.svg\": 666,\n\t\"./ic_snipping_black_24px.svg\": 667,\n\t\"./ic_sound_24px.svg\": 668,\n\t\"./ic_thumbnails_grid_black_24px.svg\": 669,\n\t\"./icon-action-redo.svg\": 670,\n\t\"./icon-action-undo.svg\": 671,\n\t\"./icon-add-file.svg\": 672,\n\t\"./icon-add-folder.svg\": 673,\n\t\"./icon-annotation-select-multiple.svg\": 674,\n\t\"./icon-annotation-status-accepted.svg\": 675,\n\t\"./icon-annotation-status-cancelled.svg\": 676,\n\t\"./icon-annotation-status-completed.svg\": 677,\n\t\"./icon-annotation-status-marked.svg\": 678,\n\t\"./icon-annotation-status-none.svg\": 679,\n\t\"./icon-annotation-status-rejected.svg\": 680,\n\t\"./icon-annotation-status-unmarked.svg\": 681,\n\t\"./icon-arrow-back.svg\": 682,\n\t\"./icon-arrow-down.svg\": 683,\n\t\"./icon-arrow-left.svg\": 684,\n\t\"./icon-arrow-right.svg\": 685,\n\t\"./icon-arrow-to-bottom.svg\": 686,\n\t\"./icon-arrow-to-middle.svg\": 687,\n\t\"./icon-arrow-to-top.svg\": 688,\n\t\"./icon-arrow-up.svg\": 689,\n\t\"./icon-chat-bubble.svg\": 690,\n\t\"./icon-chevron-down.svg\": 691,\n\t\"./icon-chevron-left.svg\": 692,\n\t\"./icon-chevron-right.svg\": 693,\n\t\"./icon-chevron-up.svg\": 694,\n\t\"./icon-close.svg\": 695,\n\t\"./icon-comments-filter.svg\": 696,\n\t\"./icon-compare-change.svg\": 697,\n\t\"./icon-compare-file-open.svg\": 698,\n\t\"./icon-copy.svg\": 699,\n\t\"./icon-cut.svg\": 700,\n\t\"./icon-dark-mode-option.svg\": 701,\n\t\"./icon-delete-line.svg\": 702,\n\t\"./icon-detach-toolbar.svg\": 703,\n\t\"./icon-download.svg\": 704,\n\t\"./icon-drag-handle.svg\": 705,\n\t\"./icon-edit-form-field.svg\": 706,\n\t\"./icon-folder.svg\": 707,\n\t\"./icon-form-field-checkbox.svg\": 708,\n\t\"./icon-form-field-combobox.svg\": 709,\n\t\"./icon-form-field-listbox.svg\": 710,\n\t\"./icon-form-field-radiobutton.svg\": 711,\n\t\"./icon-form-field-signature.svg\": 712,\n\t\"./icon-form-field-text.svg\": 713,\n\t\"./icon-header-chat-line.svg\": 714,\n\t\"./icon-header-compare.svg\": 715,\n\t\"./icon-header-file-picker-line.svg\": 716,\n\t\"./icon-header-full-screen-exit.svg\": 717,\n\t\"./icon-header-full-screen.svg\": 718,\n\t\"./icon-header-page-manipulation-insert-above.svg\": 719,\n\t\"./icon-header-page-manipulation-line.svg\": 720,\n\t\"./icon-header-page-manipulation-page-layout-cover-line.svg\": 721,\n\t\"./icon-header-page-manipulation-page-layout-double-page-line.svg\": 722,\n\t\"./icon-header-page-manipulation-page-layout-single-page-line.svg\": 723,\n\t\"./icon-header-page-manipulation-page-rotation-clockwise-line.svg\": 724,\n\t\"./icon-header-page-manipulation-page-rotation-counterclockwise-line.svg\": 725,\n\t\"./icon-header-page-manipulation-page-transition-continuous-page-line.svg\": 726,\n\t\"./icon-header-page-manipulation-page-transition-page-by-page-line.svg\": 727,\n\t\"./icon-header-page-manipulation-page-transition-reader.svg\": 728,\n\t\"./icon-header-pan.svg\": 729,\n\t\"./icon-header-print-line.svg\": 730,\n\t\"./icon-header-search.svg\": 731,\n\t\"./icon-header-select-line.svg\": 732,\n\t\"./icon-header-settings-line.svg\": 733,\n\t\"./icon-header-sidebar-line.svg\": 734,\n\t\"./icon-header-zoom-fit-to-page.svg\": 735,\n\t\"./icon-header-zoom-fit-to-width.svg\": 736,\n\t\"./icon-header-zoom-in-line.svg\": 737,\n\t\"./icon-header-zoom-marquee.svg\": 738,\n\t\"./icon-header-zoom-out-line.svg\": 739,\n\t\"./icon-image-green.svg\": 740,\n\t\"./icon-info.svg\": 741,\n\t\"./icon-keyboard.svg\": 742,\n\t\"./icon-light-mode-option.svg\": 743,\n\t\"./icon-linestyle-cloudy-line.svg\": 744,\n\t\"./icon-linestyle-dash-1-4-8-4.svg\": 745,\n\t\"./icon-linestyle-dash-2-2.svg\": 746,\n\t\"./icon-linestyle-dash-3-6-10-6.svg\": 747,\n\t\"./icon-linestyle-dash-4-4.svg\": 748,\n\t\"./icon-linestyle-dash-4-6-10-6.svg\": 749,\n\t\"./icon-linestyle-dash-6-6.svg\": 750,\n\t\"./icon-linestyle-end-arrow-closed-reverse.svg\": 751,\n\t\"./icon-linestyle-end-arrow-closed.svg\": 752,\n\t\"./icon-linestyle-end-arrow-open-reverse.svg\": 753,\n\t\"./icon-linestyle-end-arrow-open.svg\": 754,\n\t\"./icon-linestyle-end-butt.svg\": 755,\n\t\"./icon-linestyle-end-circle.svg\": 756,\n\t\"./icon-linestyle-end-diamond.svg\": 757,\n\t\"./icon-linestyle-end-slash.svg\": 758,\n\t\"./icon-linestyle-end-square.svg\": 759,\n\t\"./icon-linestyle-none.svg\": 760,\n\t\"./icon-linestyle-solid-line.svg\": 761,\n\t\"./icon-linestyle-start-arrow-closed-reverse.svg\": 762,\n\t\"./icon-linestyle-start-arrow-closed.svg\": 763,\n\t\"./icon-linestyle-start-arrow-open-reverse.svg\": 764,\n\t\"./icon-linestyle-start-arrow-open.svg\": 765,\n\t\"./icon-linestyle-start-butt.svg\": 766,\n\t\"./icon-linestyle-start-circle.svg\": 767,\n\t\"./icon-linestyle-start-diamond.svg\": 768,\n\t\"./icon-linestyle-start-slash.svg\": 769,\n\t\"./icon-linestyle-start-square.svg\": 770,\n\t\"./icon-lock.svg\": 771,\n\t\"./icon-magnifying-glass.svg\": 772,\n\t\"./icon-menu-add.svg\": 773,\n\t\"./icon-menu-align-centre.svg\": 774,\n\t\"./icon-menu-align-left.svg\": 775,\n\t\"./icon-menu-align-right.svg\": 776,\n\t\"./icon-menu-bold.svg\": 777,\n\t\"./icon-menu-both-align.svg\": 778,\n\t\"./icon-menu-centre-align.svg\": 779,\n\t\"./icon-menu-checkmark.svg\": 780,\n\t\"./icon-menu-italic.svg\": 781,\n\t\"./icon-menu-left-align.svg\": 782,\n\t\"./icon-menu-right-align.svg\": 783,\n\t\"./icon-menu-style-line.svg\": 784,\n\t\"./icon-menu-text-underline.svg\": 785,\n\t\"./icon-no-marked-redactions.svg\": 786,\n\t\"./icon-office-editor-bullet-list.svg\": 787,\n\t\"./icon-office-editor-circle.svg\": 788,\n\t\"./icon-office-editor-line-spacing.svg\": 789,\n\t\"./icon-office-editor-list-style-arrow.svg\": 790,\n\t\"./icon-office-editor-list-style-bullet.svg\": 791,\n\t\"./icon-office-editor-list-style-check.svg\": 792,\n\t\"./icon-office-editor-list-style-diamond.svg\": 793,\n\t\"./icon-office-editor-list-style-latin-roman.svg\": 794,\n\t\"./icon-office-editor-list-style-number-decimal.svg\": 795,\n\t\"./icon-office-editor-list-style-number-latin-1.svg\": 796,\n\t\"./icon-office-editor-list-style-number-latin-2.svg\": 797,\n\t\"./icon-office-editor-list-style-roman-latin.svg\": 798,\n\t\"./icon-office-editor-list-style-square-bullet.svg\": 799,\n\t\"./icon-office-editor-list-style-square.svg\": 800,\n\t\"./icon-office-number-list.svg\": 801,\n\t\"./icon-open-folder.svg\": 802,\n\t\"./icon-operation-eraser.svg\": 803,\n\t\"./icon-operation-redo.svg\": 804,\n\t\"./icon-operation-undo.svg\": 805,\n\t\"./icon-page-insertion-insert.svg\": 806,\n\t\"./icon-page-manipulation-extract.svg\": 807,\n\t\"./icon-page-move-down.svg\": 808,\n\t\"./icon-page-move-up.svg\": 809,\n\t\"./icon-page-replacement.svg\": 810,\n\t\"./icon-panel-outlines.svg\": 811,\n\t\"./icon-panel-thumbnail-line.svg\": 812,\n\t\"./icon-paste-without-formatting.svg\": 813,\n\t\"./icon-paste.svg\": 814,\n\t\"./icon-pdf-portfolio.svg\": 815,\n\t\"./icon-pencil-line.svg\": 816,\n\t\"./icon-plus-sign.svg\": 817,\n\t\"./icon-portfolio-file.svg\": 818,\n\t\"./icon-portfolio-folder.svg\": 819,\n\t\"./icon-post-reply.svg\": 820,\n\t\"./icon-redact-panel.svg\": 821,\n\t\"./icon-save.svg\": 822,\n\t\"./icon-signature-plus-disabled.svg\": 823,\n\t\"./icon-signature-plus-sign.svg\": 824,\n\t\"./icon-sync.svg\": 825,\n\t\"./icon-text-bold.svg\": 826,\n\t\"./icon-text-italic.svg\": 827,\n\t\"./icon-text-justify-center.svg\": 828,\n\t\"./icon-text-underline.svg\": 829,\n\t\"./icon-thumbtack.svg\": 830,\n\t\"./icon-tool-arc.svg\": 831,\n\t\"./icon-tool-callout-line.svg\": 832,\n\t\"./icon-tool-changeview.svg\": 833,\n\t\"./icon-tool-check-stamp.svg\": 834,\n\t\"./icon-tool-comment-line.svg\": 835,\n\t\"./icon-tool-cross-stamp.svg\": 836,\n\t\"./icon-tool-dot-stamp.svg\": 837,\n\t\"./icon-tool-fill-and-sign-calendar.svg\": 838,\n\t\"./icon-tool-highlight.svg\": 839,\n\t\"./icon-tool-image-line.svg\": 840,\n\t\"./icon-tool-link.svg\": 841,\n\t\"./icon-tool-measurement-arc.svg\": 842,\n\t\"./icon-tool-measurement-area-ellipse-line.svg\": 843,\n\t\"./icon-tool-measurement-area-line.svg\": 844,\n\t\"./icon-tool-measurement-area-polygon-line.svg\": 845,\n\t\"./icon-tool-measurement-cloud-area-line.svg\": 846,\n\t\"./icon-tool-measurement-distance-line.svg\": 847,\n\t\"./icon-tool-measurement-perimeter.svg\": 848,\n\t\"./icon-tool-model3d.svg\": 849,\n\t\"./icon-tool-more.svg\": 850,\n\t\"./icon-tool-page-redact.svg\": 851,\n\t\"./icon-tool-pen-highlight.svg\": 852,\n\t\"./icon-tool-pen-line.svg\": 853,\n\t\"./icon-tool-redaction-area.svg\": 854,\n\t\"./icon-tool-select-area-redaction.svg\": 855,\n\t\"./icon-tool-select-pages.svg\": 856,\n\t\"./icon-tool-shape-arrow.svg\": 857,\n\t\"./icon-tool-shape-cloud.svg\": 858,\n\t\"./icon-tool-shape-line.svg\": 859,\n\t\"./icon-tool-shape-oval.svg\": 860,\n\t\"./icon-tool-shape-polygon.svg\": 861,\n\t\"./icon-tool-shape-polyline.svg\": 862,\n\t\"./icon-tool-shape-rectangle.svg\": 863,\n\t\"./icon-tool-signature.svg\": 864,\n\t\"./icon-tool-stamp-line.svg\": 865,\n\t\"./icon-tool-text-free-text.svg\": 866,\n\t\"./icon-tool-text-manipulation-highlight.svg\": 867,\n\t\"./icon-tool-text-manipulation-squiggly.svg\": 868,\n\t\"./icon-tool-text-manipulation-strikethrough.svg\": 869,\n\t\"./icon-tool-text-manipulation-underline.svg\": 870,\n\t\"./icon-tool-unlink.svg\": 871,\n\t\"./icon-tools-more-active.svg\": 872,\n\t\"./icon-tools-more-vertical.svg\": 873,\n\t\"./icon-tools-more.svg\": 874,\n\t\"./icon-unposted-comment.svg\": 875,\n\t\"./icon-view.svg\": 876,\n\t\"./icon-watermark-panel.svg\": 877,\n\t\"./icon-zoom-thumb-in.svg\": 878,\n\t\"./icon-zoom-thumb-out.svg\": 879,\n\t\"./illustration - empty state - outlines.svg\": 880,\n\t\"./multi select.svg\": 881,\n\t\"./redact-icons-credit-card.svg\": 882,\n\t\"./redact-icons-email.svg\": 883,\n\t\"./redact-icons-image.svg\": 884,\n\t\"./redact-icons-phone-number.svg\": 885,\n\t\"./textselect_cursor.svg\": 886,\n\t\"./ungroup-annotations-icon.svg\": 887\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 406;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  } // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n\n\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n  return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n  var node = el;\n\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    node = node.parentNode;\n  } while (node);\n\n  return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n  var isBody = offsetParent === offsetParent.ownerDocument.body;\n  var offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n  var translation = getTranslation(controlPos, positionOffset, 'px');\n  return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n  var translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n  var x = _ref2.x,\n      y = _ref2.y;\n  var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n  if (positionOffset) {\n    var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n\n  return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n    return identifier === t.identifier;\n  }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n    return identifier === t.identifier;\n  });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n  var styleEl = doc.getElementById('react-draggable-style-el');\n\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      var selection = (doc.defaultView || window).getSelection();\n\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {// probably IE\n  }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type       //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Declaration, _Node);\n\n  function Declaration(defaults) {\n    var _this;\n\n    _this = _Node.call(this, defaults) || this;\n    _this.type = 'decl';\n    return _this;\n  }\n  /**\n   * @memberof Declaration#\n   * @member {string} prop The declaration’s property name.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.prop //=> 'color'\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {string} value The declaration’s value.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.value //=> 'black'\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {boolean} important `true` if the declaration\n   *                             has an !important annotation.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black !important; color: red }')\n   * root.first.first.important //=> true\n   * root.first.last.important  //=> undefined\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `between`: the symbols between the property and value\n   *   for declarations.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans declaration from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */\n\n\n  return Declaration;\n}(_node.default);\n\nvar _default = Declaration;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7OztJQVdNQSxXOzs7QUFDSix1QkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQiw2QkFBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxNQUFaO0FBRnFCO0FBR3RCO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7OztBQVdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFyQ3dCQyxhOztlQStEWEgsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICogZGVjbC50eXBlICAgICAgIC8vPT4gJ2RlY2wnXG4gKiBkZWNsLnRvU3RyaW5nKCkgLy89PiAnIGNvbG9yOiBibGFjaydcbiAqL1xuY2xhc3MgRGVjbGFyYXRpb24gZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2RlY2wnXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHByb3AgVGhlIGRlY2xhcmF0aW9u4oCZcyBwcm9wZXJ0eSBuYW1lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3RcbiAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHZhbHVlIFRoZSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtib29sZWFufSBpbXBvcnRhbnQgYHRydWVgIGlmIHRoZSBkZWNsYXJhdGlvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGFuICFpbXBvcnRhbnQgYW5ub3RhdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgY29sb3I6IHJlZCB9JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5pbXBvcnRhbnQgLy89PiB0cnVlXG4gICAqIHJvb3QuZmlyc3QubGFzdC5pbXBvcnRhbnQgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMuXG4gICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvblxuIl0sImZpbGUiOiJkZWNsYXJhdGlvbi5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cloneNode(obj, parent) {\n  var cloned = new obj.constructor();\n\n  for (var i in obj) {\n    if (!obj.hasOwnProperty(i)) continue;\n    var value = obj[i];\n    var type = typeof value;\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent;\n    } else if (i === 'source') {\n      cloned[i] = value;\n    } else if (value instanceof Array) {\n      cloned[i] = value.map(function (j) {\n        return cloneNode(j, cloned);\n      });\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value);\n      cloned[i] = value;\n    }\n  }\n\n  return cloned;\n}\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\n\nvar Node = /*#__PURE__*/function () {\n  /**\n   * @param {object} [defaults] Value for node properties.\n   */\n  function Node(defaults) {\n    if (defaults === void 0) {\n      defaults = {};\n    }\n\n    this.raws = {};\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof defaults !== 'object' && typeof defaults !== 'undefined') {\n        throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n      }\n    }\n\n    for (var name in defaults) {\n      this[name] = defaults[name];\n    }\n  }\n  /**\n   * Returns a `CssSyntaxError` instance containing the original position\n   * of the node in the source, showing line and column numbers and also\n   * a small excerpt to facilitate debugging.\n   *\n   * If present, an input source map will be used to get the original position\n   * of the source, even from a previous compilation step\n   * (e.g., from Sass compilation).\n   *\n   * This method produces very useful error messages.\n   *\n   * @param {string} message     Error description.\n   * @param {object} [opts]      Options.\n   * @param {string} opts.plugin Plugin name that created this error.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   *\n   * @return {CssSyntaxError} Error object to throw it.\n   *\n   * @example\n   * if (!variables[name]) {\n   *   throw decl.error('Unknown variable ' + name, { word: name })\n   *   // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n   *   //   color: $black\n   *   // a\n   *   //          ^\n   *   //   background: white\n   * }\n   */\n\n\n  var _proto = Node.prototype;\n\n  _proto.error = function error(message, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (this.source) {\n      var pos = this.positionBy(opts);\n      return this.source.input.error(message, pos.line, pos.column, opts);\n    }\n\n    return new _cssSyntaxError.default(message);\n  }\n  /**\n   * This method is provided as a convenience wrapper for {@link Result#warn}.\n   *\n   * @param {Result} result      The {@link Result} instance\n   *                             that will receive the warning.\n   * @param {string} text        Warning message.\n   * @param {object} [opts]      Options\n   * @param {string} opts.plugin Plugin name that created this warning.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   *\n   * @return {Warning} Created warning object.\n   *\n   * @example\n   * const plugin = postcss.plugin('postcss-deprecated', () => {\n   *   return (root, result) => {\n   *     root.walkDecls('bad', decl => {\n   *       decl.warn(result, 'Deprecated property bad')\n   *     })\n   *   }\n   * })\n   */\n  ;\n\n  _proto.warn = function warn(result, text, opts) {\n    var data = {\n      node: this\n    };\n\n    for (var i in opts) {\n      data[i] = opts[i];\n    }\n\n    return result.warn(text, data);\n  }\n  /**\n   * Removes the node from its parent and cleans the parent properties\n   * from the node and its children.\n   *\n   * @example\n   * if (decl.prop.match(/^-webkit-/)) {\n   *   decl.remove()\n   * }\n   *\n   * @return {Node} Node to make calls chain.\n   */\n  ;\n\n  _proto.remove = function remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n\n    this.parent = undefined;\n    return this;\n  }\n  /**\n   * Returns a CSS string representing the node.\n   *\n   * @param {stringifier|syntax} [stringifier] A syntax to use\n   *                                           in string generation.\n   *\n   * @return {string} CSS string of this node.\n   *\n   * @example\n   * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n   */\n  ;\n\n  _proto.toString = function toString(stringifier) {\n    if (stringifier === void 0) {\n      stringifier = _stringify.default;\n    }\n\n    if (stringifier.stringify) stringifier = stringifier.stringify;\n    var result = '';\n    stringifier(this, function (i) {\n      result += i;\n    });\n    return result;\n  }\n  /**\n   * Returns an exact clone of the node.\n   *\n   * The resulting cloned node and its (cloned) children will retain\n   * code style properties.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @example\n   * decl.raws.before    //=> \"\\n  \"\n   * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n   * cloned.raws.before  //=> \"\\n  \"\n   * cloned.toString()   //=> -moz-transform: scale(0)\n   *\n   * @return {Node} Clone of the node.\n   */\n  ;\n\n  _proto.clone = function clone(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = cloneNode(this);\n\n    for (var name in overrides) {\n      cloned[name] = overrides[name];\n    }\n\n    return cloned;\n  }\n  /**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * before the current node.\n   *\n   * @param {object} [overrides] Mew properties to override in the clone.\n   *\n   * @example\n   * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n   *\n   * @return {Node} New node\n   */\n  ;\n\n  _proto.cloneBefore = function cloneBefore(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  /**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * after the current node.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @return {Node} New node.\n   */\n  ;\n\n  _proto.cloneAfter = function cloneAfter(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  /**\n   * Inserts node(s) before the current node and removes the current node.\n   *\n   * @param {...Node} nodes Mode(s) to replace current one.\n   *\n   * @example\n   * if (atrule.name === 'mixin') {\n   *   atrule.replaceWith(mixinRules[atrule.params])\n   * }\n   *\n   * @return {Node} Current node to methods chain.\n   */\n  ;\n\n  _proto.replaceWith = function replaceWith() {\n    if (this.parent) {\n      for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {\n        nodes[_key] = arguments[_key];\n      }\n\n      for (var _i = 0, _nodes = nodes; _i < _nodes.length; _i++) {\n        var node = _nodes[_i];\n        this.parent.insertBefore(this, node);\n      }\n\n      this.remove();\n    }\n\n    return this;\n  }\n  /**\n   * Returns the next child of the node’s parent.\n   * Returns `undefined` if the current node is the last child.\n   *\n   * @return {Node|undefined} Next node.\n   *\n   * @example\n   * if (comment.text === 'delete next') {\n   *   const next = comment.next()\n   *   if (next) {\n   *     next.remove()\n   *   }\n   * }\n   */\n  ;\n\n  _proto.next = function next() {\n    if (!this.parent) return undefined;\n    var index = this.parent.index(this);\n    return this.parent.nodes[index + 1];\n  }\n  /**\n   * Returns the previous child of the node’s parent.\n   * Returns `undefined` if the current node is the first child.\n   *\n   * @return {Node|undefined} Previous node.\n   *\n   * @example\n   * const annotation = decl.prev()\n   * if (annotation.type === 'comment') {\n   *   readAnnotation(annotation.text)\n   * }\n   */\n  ;\n\n  _proto.prev = function prev() {\n    if (!this.parent) return undefined;\n    var index = this.parent.index(this);\n    return this.parent.nodes[index - 1];\n  }\n  /**\n   * Insert new node before current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertBefore(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.before('content: \"\"')\n   */\n  ;\n\n  _proto.before = function before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  /**\n   * Insert new node after current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertAfter(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.after('color: black')\n   */\n  ;\n\n  _proto.after = function after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  };\n\n  _proto.toJSON = function toJSON() {\n    var fixed = {};\n\n    for (var name in this) {\n      if (!this.hasOwnProperty(name)) continue;\n      if (name === 'parent') continue;\n      var value = this[name];\n\n      if (value instanceof Array) {\n        fixed[name] = value.map(function (i) {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON();\n          } else {\n            return i;\n          }\n        });\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON();\n      } else {\n        fixed[name] = value;\n      }\n    }\n\n    return fixed;\n  }\n  /**\n   * Returns a {@link Node#raws} value. If the node is missing\n   * the code style property (because the node was manually built or cloned),\n   * PostCSS will try to autodetect the code style property by looking\n   * at other nodes in the tree.\n   *\n   * @param {string} prop          Name of code style property.\n   * @param {string} [defaultType] Name of default value, it can be missed\n   *                               if the value is the same as prop.\n   *\n   * @example\n   * const root = postcss.parse('a { background: white }')\n   * root.nodes[0].append({ prop: 'color', value: 'black' })\n   * root.nodes[0].nodes[1].raws.before   //=> undefined\n   * root.nodes[0].nodes[1].raw('before') //=> ' '\n   *\n   * @return {string} Code style value.\n   */\n  ;\n\n  _proto.raw = function raw(prop, defaultType) {\n    var str = new _stringifier.default();\n    return str.raw(this, prop, defaultType);\n  }\n  /**\n   * Finds the Root instance of the node’s tree.\n   *\n   * @example\n   * root.nodes[0].nodes[0].root() === root\n   *\n   * @return {Root} Root parent.\n   */\n  ;\n\n  _proto.root = function root() {\n    var result = this;\n\n    while (result.parent) {\n      result = result.parent;\n    }\n\n    return result;\n  }\n  /**\n   * Clear the code style properties for the node and its children.\n   *\n   * @param {boolean} [keepBetween] Keep the raws.between symbols.\n   *\n   * @return {undefined}\n   *\n   * @example\n   * node.raws.before  //=> ' '\n   * node.cleanRaws()\n   * node.raws.before  //=> undefined\n   */\n  ;\n\n  _proto.cleanRaws = function cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  };\n\n  _proto.positionInside = function positionInside(index) {\n    var string = this.toString();\n    var column = this.source.start.column;\n    var line = this.source.start.line;\n\n    for (var i = 0; i < index; i++) {\n      if (string[i] === '\\n') {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n\n    return {\n      line: line,\n      column: column\n    };\n  };\n\n  _proto.positionBy = function positionBy(opts) {\n    var pos = this.source.start;\n\n    if (opts.index) {\n      pos = this.positionInside(opts.index);\n    } else if (opts.word) {\n      var index = this.toString().indexOf(opts.word);\n      if (index !== -1) pos = this.positionInside(index);\n    }\n\n    return pos;\n  }\n  /**\n   * @memberof Node#\n   * @member {string} type String representing the node’s type.\n   *                       Possible values are `root`, `atrule`, `rule`,\n   *                       `decl`, or `comment`.\n   *\n   * @example\n   * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n   */\n\n  /**\n   * @memberof Node#\n   * @member {Container} parent The node’s parent node.\n   *\n   * @example\n   * root.nodes[0].parent === root\n   */\n\n  /**\n   * @memberof Node#\n   * @member {source} source The input source of the node.\n   *\n   * The property is used in source map generation.\n   *\n   * If you create a node manually (e.g., with `postcss.decl()`),\n   * that node will not have a `source` property and will be absent\n   * from the source map. For this reason, the plugin developer should\n   * consider cloning nodes to create new ones (in which case the new node’s\n   * source will reference the original, cloned node) or setting\n   * the `source` property manually.\n   *\n   * ```js\n   * // Bad\n   * const prefixed = postcss.decl({\n   *   prop: '-moz-' + decl.prop,\n   *   value: decl.value\n   * })\n   *\n   * // Good\n   * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n   * ```\n   *\n   * ```js\n   * if (atrule.name === 'add-link') {\n   *   const rule = postcss.rule({ selector: 'a', source: atrule.source })\n   *   atrule.parent.insertBefore(atrule, rule)\n   * }\n   * ```\n   *\n   * @example\n   * decl.source.input.from //=> '/home/ai/a.sass'\n   * decl.source.start      //=> { line: 10, column: 2 }\n   * decl.source.end        //=> { line: 10, column: 12 }\n   */\n\n  /**\n   * @memberof Node#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text\n   *   and <code>*&#47;</code>.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans selectors, declaration values and at-rule parameters\n   * from comments and extra spaces, but it stores origin content in raws\n   * properties. As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */\n  ;\n\n  return Node;\n}();\n\nvar _default = Node;\n/**\n * @typedef {object} position\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input    {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end   The ending position of the node’s source.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQ0csV0FBUixFQUFiOztBQUVBLE9BQUssSUFBSUMsQ0FBVCxJQUFjSixHQUFkLEVBQW1C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Y3NzLXN5bnRheC1lcnJvcidcbmltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcblxuZnVuY3Rpb24gY2xvbmVOb2RlIChvYmosIHBhcmVudCkge1xuICBsZXQgY2xvbmVkID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpXG5cbiAgZm9yIChsZXQgaSBpbiBvYmopIHtcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShpKSkgY29udGludWVcbiAgICBsZXQgdmFsdWUgPSBvYmpbaV1cbiAgICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuXG4gICAgaWYgKGkgPT09ICdwYXJlbnQnICYmIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocGFyZW50KSBjbG9uZWRbaV0gPSBwYXJlbnRcbiAgICB9IGVsc2UgaWYgKGkgPT09ICdzb3VyY2UnKSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY2xvbmVkW2ldID0gdmFsdWUubWFwKGogPT4gY2xvbmVOb2RlKGosIGNsb25lZCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSBjbG9uZU5vZGUodmFsdWUpXG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9uZWRcbn1cblxuLyoqXG4gKiBBbGwgbm9kZSBjbGFzc2VzIGluaGVyaXQgdGhlIGZvbGxvd2luZyBjb21tb24gbWV0aG9kcy5cbiAqXG4gKiBAYWJzdHJhY3RcbiAqL1xuY2xhc3MgTm9kZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBWYWx1ZSBmb3Igbm9kZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzID0geyB9KSB7XG4gICAgdGhpcy5yYXdzID0geyB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgZGVmYXVsdHMgIT09ICdvYmplY3QnICYmIHR5cGVvZiBkZWZhdWx0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdQb3N0Q1NTIG5vZGVzIGNvbnN0cnVjdG9yIGFjY2VwdHMgb2JqZWN0LCBub3QgJyArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGVmYXVsdHMpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgbmFtZSBpbiBkZWZhdWx0cykge1xuICAgICAgdGhpc1tuYW1lXSA9IGRlZmF1bHRzW25hbWVdXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBgQ3NzU3ludGF4RXJyb3JgIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHBvc2l0aW9uXG4gICAqIG9mIHRoZSBub2RlIGluIHRoZSBzb3VyY2UsIHNob3dpbmcgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYW5kIGFsc29cbiAgICogYSBzbWFsbCBleGNlcnB0IHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLlxuICAgKlxuICAgKiBJZiBwcmVzZW50LCBhbiBpbnB1dCBzb3VyY2UgbWFwIHdpbGwgYmUgdXNlZCB0byBnZXQgdGhlIG9yaWdpbmFsIHBvc2l0aW9uXG4gICAqIG9mIHRoZSBzb3VyY2UsIGV2ZW4gZnJvbSBhIHByZXZpb3VzIGNvbXBpbGF0aW9uIHN0ZXBcbiAgICogKGUuZy4sIGZyb20gU2FzcyBjb21waWxhdGlvbikuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHByb2R1Y2VzIHZlcnkgdXNlZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgICAgRXJyb3IgZGVzY3JpcHRpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0c10gICAgICBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gUGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgZXJyb3IuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgc2V0IGl0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBBIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdHMuaW5kZXggIEFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaGlnaGxpZ2h0ZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm4ge0Nzc1N5bnRheEVycm9yfSBFcnJvciBvYmplY3QgdG8gdGhyb3cgaXQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmICghdmFyaWFibGVzW25hbWVdKSB7XG4gICAqICAgdGhyb3cgZGVjbC5lcnJvcignVW5rbm93biB2YXJpYWJsZSAnICsgbmFtZSwgeyB3b3JkOiBuYW1lIH0pXG4gICAqICAgLy8gQ3NzU3ludGF4RXJyb3I6IHBvc3Rjc3MtdmFyczphLnNhc3M6NDozOiBVbmtub3duIHZhcmlhYmxlICRibGFja1xuICAgKiAgIC8vICAgY29sb3I6ICRibGFja1xuICAgKiAgIC8vIGFcbiAgICogICAvLyAgICAgICAgICBeXG4gICAqICAgLy8gICBiYWNrZ3JvdW5kOiB3aGl0ZVxuICAgKiB9XG4gICAqL1xuICBlcnJvciAobWVzc2FnZSwgb3B0cyA9IHsgfSkge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgbGV0IHBvcyA9IHRoaXMucG9zaXRpb25CeShvcHRzKVxuICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmlucHV0LmVycm9yKG1lc3NhZ2UsIHBvcy5saW5lLCBwb3MuY29sdW1uLCBvcHRzKVxuICAgIH1cbiAgICByZXR1cm4gbmV3IENzc1N5bnRheEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciB7QGxpbmsgUmVzdWx0I3dhcm59LlxuICAgKlxuICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgVGhlIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIFBsdWdpbiBuYW1lIHRoYXQgY3JlYXRlZCB0aGlzIHdhcm5pbmcuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgc2V0IGl0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBBIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nfSBDcmVhdGVkIHdhcm5pbmcgb2JqZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwbHVnaW4gPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1kZXByZWNhdGVkJywgKCkgPT4ge1xuICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAqICAgICByb290LndhbGtEZWNscygnYmFkJywgZGVjbCA9PiB7XG4gICAqICAgICAgIGRlY2wud2FybihyZXN1bHQsICdEZXByZWNhdGVkIHByb3BlcnR5IGJhZCcpXG4gICAqICAgICB9KVxuICAgKiAgIH1cbiAgICogfSlcbiAgICovXG4gIHdhcm4gKHJlc3VsdCwgdGV4dCwgb3B0cykge1xuICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH1cbiAgICBmb3IgKGxldCBpIGluIG9wdHMpIGRhdGFbaV0gPSBvcHRzW2ldXG4gICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgbm9kZSBmcm9tIGl0cyBwYXJlbnQgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoZGVjbC5wcm9wLm1hdGNoKC9eLXdlYmtpdC0vKSkge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOb2RlIHRvIG1ha2UgY2FsbHMgY2hhaW4uXG4gICAqL1xuICByZW1vdmUgKCkge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcylcbiAgICB9XG4gICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdpZmllcnxzeW50YXh9IFtzdHJpbmdpZmllcl0gQSBzeW50YXggdG8gdXNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHN0cmluZyBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENTUyBzdHJpbmcgb2YgdGhpcyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge31cIlxuICAgKi9cbiAgdG9TdHJpbmcgKHN0cmluZ2lmaWVyID0gc3RyaW5naWZ5KSB7XG4gICAgaWYgKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSkgc3RyaW5naWZpZXIgPSBzdHJpbmdpZmllci5zdHJpbmdpZnlcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgIHJlc3VsdCArPSBpXG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleGFjdCBjbG9uZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZSBhbmQgaXRzIChjbG9uZWQpIGNoaWxkcmVuIHdpbGwgcmV0YWluXG4gICAqIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5yYXdzLmJlZm9yZSAgICAvLz0+IFwiXFxuICBcIlxuICAgKiBjb25zdCBjbG9uZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBjbG9uZWQucmF3cy5iZWZvcmUgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNsb25lZC50b1N0cmluZygpICAgLy89PiAtbW96LXRyYW5zZm9ybTogc2NhbGUoMClcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gQ2xvbmUgb2YgdGhlIG5vZGUuXG4gICAqL1xuICBjbG9uZSAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IGNsb25lTm9kZSh0aGlzKVxuICAgIGZvciAobGV0IG5hbWUgaW4gb3ZlcnJpZGVzKSB7XG4gICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV1cbiAgICB9XG4gICAgcmV0dXJuIGNsb25lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE1ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGVcbiAgICovXG4gIGNsb25lQmVmb3JlIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSBOZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5ldyBub2RlLlxuICAgKi9cbiAgY2xvbmVBZnRlciAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKVxuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBub2RlKHMpIGJlZm9yZSB0aGUgY3VycmVudCBub2RlIGFuZCByZW1vdmVzIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgTW9kZShzKSB0byByZXBsYWNlIGN1cnJlbnQgb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoYXRydWxlLm5hbWUgPT09ICdtaXhpbicpIHtcbiAgICogICBhdHJ1bGUucmVwbGFjZVdpdGgobWl4aW5SdWxlc1thdHJ1bGUucGFyYW1zXSlcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDdXJyZW50IG5vZGUgdG8gbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHJlcGxhY2VXaXRoICguLi5ub2Rlcykge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgbm9kZSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmUoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGxhc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBOZXh0IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChjb21tZW50LnRleHQgPT09ICdkZWxldGUgbmV4dCcpIHtcbiAgICogICBjb25zdCBuZXh0ID0gY29tbWVudC5uZXh0KClcbiAgICogICBpZiAobmV4dCkge1xuICAgKiAgICAgbmV4dC5yZW1vdmUoKVxuICAgKiAgIH1cbiAgICogfVxuICAgKi9cbiAgbmV4dCAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwcmV2aW91cyBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfHVuZGVmaW5lZH0gUHJldmlvdXMgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpXG4gICAqIGlmIChhbm5vdGF0aW9uLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgKiAgIHJlYWRBbm5vdGF0aW9uKGFubm90YXRpb24udGV4dClcbiAgICogfVxuICAgKi9cbiAgcHJldiAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYmVmb3JlIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBhZGQpYC5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5iZWZvcmUoJ2NvbnRlbnQ6IFwiXCInKVxuICAgKi9cbiAgYmVmb3JlIChhZGQpIHtcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEFmdGVyKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmFmdGVyKCdjb2xvcjogYmxhY2snKVxuICAgKi9cbiAgYWZ0ZXIgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGFkZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICBsZXQgZml4ZWQgPSB7IH1cblxuICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcykge1xuICAgICAgaWYgKCF0aGlzLmhhc093blByb3BlcnR5KG5hbWUpKSBjb250aW51ZVxuICAgICAgaWYgKG5hbWUgPT09ICdwYXJlbnQnKSBjb250aW51ZVxuICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXVxuXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLm1hcChpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIGkudG9KU09OKSB7XG4gICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50b0pTT04pIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZS50b0pTT04oKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaXhlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgKiB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSAoYmVjYXVzZSB0aGUgbm9kZSB3YXMgbWFudWFsbHkgYnVpbHQgb3IgY2xvbmVkKSxcbiAgICogUG9zdENTUyB3aWxsIHRyeSB0byBhdXRvZGV0ZWN0IHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IGJ5IGxvb2tpbmdcbiAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wICAgICAgICAgIE5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkZWZhdWx0VHlwZV0gTmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBwcm9wLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKVxuICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzFdLnJhdygnYmVmb3JlJykgLy89PiAnICdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb2RlIHN0eWxlIHZhbHVlLlxuICAgKi9cbiAgcmF3IChwcm9wLCBkZWZhdWx0VHlwZSkge1xuICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKVxuICAgIHJldHVybiBzdHIucmF3KHRoaXMsIHByb3AsIGRlZmF1bHRUeXBlKVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgKlxuICAgKiBAcmV0dXJuIHtSb290fSBSb290IHBhcmVudC5cbiAgICovXG4gIHJvb3QgKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzXG4gICAgd2hpbGUgKHJlc3VsdC5wYXJlbnQpIHJlc3VsdCA9IHJlc3VsdC5wYXJlbnRcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGNvZGUgc3R5bGUgcHJvcGVydGllcyBmb3IgdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBba2VlcEJldHdlZW5dIEtlZXAgdGhlIHJhd3MuYmV0d2VlbiBzeW1ib2xzLlxuICAgKlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIG5vZGUucmF3cy5iZWZvcmUgIC8vPT4gJyAnXG4gICAqIG5vZGUuY2xlYW5SYXdzKClcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiB1bmRlZmluZWRcbiAgICovXG4gIGNsZWFuUmF3cyAoa2VlcEJldHdlZW4pIHtcbiAgICBkZWxldGUgdGhpcy5yYXdzLmJlZm9yZVxuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXJcbiAgICBpZiAoIWtlZXBCZXR3ZWVuKSBkZWxldGUgdGhpcy5yYXdzLmJldHdlZW5cbiAgfVxuXG4gIHBvc2l0aW9uSW5zaWRlIChpbmRleCkge1xuICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKClcbiAgICBsZXQgY29sdW1uID0gdGhpcy5zb3VyY2Uuc3RhcnQuY29sdW1uXG4gICAgbGV0IGxpbmUgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgIGlmIChzdHJpbmdbaV0gPT09ICdcXG4nKSB7XG4gICAgICAgIGNvbHVtbiA9IDFcbiAgICAgICAgbGluZSArPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4gKz0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9XG4gIH1cblxuICBwb3NpdGlvbkJ5IChvcHRzKSB7XG4gICAgbGV0IHBvcyA9IHRoaXMuc291cmNlLnN0YXJ0XG4gICAgaWYgKG9wdHMuaW5kZXgpIHtcbiAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleClcbiAgICB9IGVsc2UgaWYgKG9wdHMud29yZCkge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy50b1N0cmluZygpLmluZGV4T2Yob3B0cy53b3JkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShpbmRleClcbiAgICB9XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHR5cGUgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlIHZhbHVlcyBhcmUgYHJvb3RgLCBgYXRydWxlYCwgYHJ1bGVgLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYGRlY2xgLCBvciBgY29tbWVudGAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pLnR5cGUgLy89PiAnZGVjbCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtDb250YWluZXJ9IHBhcmVudCBUaGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09PSByb290XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7c291cmNlfSBzb3VyY2UgVGhlIGlucHV0IHNvdXJjZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHByb3BlcnR5IGlzIHVzZWQgaW4gc291cmNlIG1hcCBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBJZiB5b3UgY3JlYXRlIGEgbm9kZSBtYW51YWxseSAoZS5nLiwgd2l0aCBgcG9zdGNzcy5kZWNsKClgKSxcbiAgICogdGhhdCBub2RlIHdpbGwgbm90IGhhdmUgYSBgc291cmNlYCBwcm9wZXJ0eSBhbmQgd2lsbCBiZSBhYnNlbnRcbiAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICogY29uc2lkZXIgY2xvbmluZyBub2RlcyB0byBjcmVhdGUgbmV3IG9uZXMgKGluIHdoaWNoIGNhc2UgdGhlIG5ldyBub2Rl4oCZc1xuICAgKiBzb3VyY2Ugd2lsbCByZWZlcmVuY2UgdGhlIG9yaWdpbmFsLCBjbG9uZWQgbm9kZSkgb3Igc2V0dGluZ1xuICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIC8vIEJhZFxuICAgKiBjb25zdCBwcmVmaXhlZCA9IHBvc3Rjc3MuZGVjbCh7XG4gICAqICAgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCxcbiAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgKiB9KVxuICAgKlxuICAgKiAvLyBHb29kXG4gICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICogYGBgXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ2FkZC1saW5rJykge1xuICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSlcbiAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuc291cmNlLmlucHV0LmZyb20gLy89PiAnL2hvbWUvYWkvYS5zYXNzJ1xuICAgKiBkZWNsLnNvdXJjZS5zdGFydCAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAyIH1cbiAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgdHJ1ZSBpZiB0aGUgbGFzdCBjaGlsZCBoYXNcbiAgICogICBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHRcbiAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBzZWxlY3RvcnMsIGRlY2xhcmF0aW9uIHZhbHVlcyBhbmQgYXQtcnVsZSBwYXJhbWV0ZXJzXG4gICAqIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcywgYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzXG4gICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnXFxuICAnLCBiZXR3ZWVuOiAnOicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgTm9kZVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIFNvdXJjZSBsaW5lIGluIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIFNvdXJjZSBjb2x1bW4gaW4gZmlsZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHNvdXJjZVxuICogQHByb3BlcnR5IHtJbnB1dH0gaW5wdXQgICAge0BsaW5rIElucHV0fSB3aXRoIGlucHV0IGZpbGVcbiAqIEBwcm9wZXJ0eSB7cG9zaXRpb259IHN0YXJ0IFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gZW5kICAgVGhlIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICovXG4iXSwiZmlsZSI6Im5vZGUuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n  var str = new _stringifier.default(builder);\n  str.stringify(node);\n}\n\nvar _default = stringify;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNqQyxNQUFJQyxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0JGLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7ZUFFY0QsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeVxuIl0sImZpbGUiOiJzdHJpbmdpZnkuanMifQ==\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nvar _input = _interopRequireDefault(require(\"./input\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n  var input = new _input.default(css, opts);\n  var parser = new _parser.default(input);\n\n  try {\n    parser.parse();\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (e.name === 'CssSyntaxError' && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n        } else if (/\\.sass/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n        } else if (/\\.less$/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n        }\n      }\n    }\n\n    throw e;\n  }\n\n  return parser.root;\n}\n\nvar _default = parse;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFKLENBQVVILEdBQVYsRUFBZUMsSUFBZixDQUFaO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQUlDLGVBQUosQ0FBV0gsS0FBWCxDQUFiOztBQUNBLE1BQUk7QUFDRkUsSUFBQUEsTUFBTSxDQUFDTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUlILENBQUMsQ0FBQ0ksSUFBRixLQUFXLGdCQUFYLElBQStCVCxJQUEvQixJQUF1Q0EsSUFBSSxDQUFDVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLElBQUksQ0FBQ1UsSUFBckIsQ0FBSixFQUFnQztBQUM5QkwsVUFBQUEsQ0FBQyxDQUFDTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSkQsTUFJTyxJQUFJLFVBQVVELElBQVYsQ0FBZVgsSUFBSSxDQUFDVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKTSxNQUlBLElBQUksV0FBV0QsSUFBWCxDQUFnQlgsSUFBSSxDQUFDVSxJQUFyQixDQUFKLEVBQWdDO0FBQ3JDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGOztBQUNELFVBQU1QLENBQU47QUFDRDs7QUFFRCxTQUFPRixNQUFNLENBQUNVLElBQWQ7QUFDRDs7ZUFFY2YsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9pbnB1dCdcblxuZnVuY3Rpb24gcGFyc2UgKGNzcywgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuICBsZXQgcGFyc2VyID0gbmV3IFBhcnNlcihpbnB1dClcbiAgdHJ5IHtcbiAgICBwYXJzZXIucGFyc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgb3B0cyAmJiBvcHRzLmZyb20pIHtcbiAgICAgICAgaWYgKC9cXC5zY3NzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNDU1Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNjc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5zYXNzL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgTGVzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3MtbGVzcyBwYXJzZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlXG4iXSwiZmlsZSI6InBhcnNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Comment, _Node);\n\n  function Comment(defaults) {\n    var _this;\n\n    _this = _Node.call(this, defaults) || this;\n    _this.type = 'comment';\n    return _this;\n  }\n  /**\n   * @memberof Comment#\n   * @member {string} text The comment’s text.\n   */\n\n  /**\n   * @memberof Comment#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text.\n   */\n\n\n  return Comment;\n}(_node.default);\n\nvar _default = Comment;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7SUFRTUEsTzs7O0FBQ0osbUJBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsNkJBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksU0FBWjtBQUZxQjtBQUd0QjtBQUVEOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7RUFYb0JDLGE7O2VBeUJQSCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tZW50IGJldHdlZW4gZGVjbGFyYXRpb25zIG9yIHN0YXRlbWVudHMgKHJ1bGUgYW5kIGF0LXJ1bGVzKS5cbiAqXG4gKiBDb21tZW50cyBpbnNpZGUgc2VsZWN0b3JzLCBhdC1ydWxlIHBhcmFtZXRlcnMsIG9yIGRlY2xhcmF0aW9uIHZhbHVlc1xuICogd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGByYXdzYCBwcm9wZXJ0aWVzIGV4cGxhaW5lZCBhYm92ZS5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKi9cbmNsYXNzIENvbW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2NvbW1lbnQnXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdGV4dCBUaGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDb21tZW50I1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLlxuICAgKiAqIGBsZWZ0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiBgLypgIGFuZCB0aGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICogKiBgcmlnaHRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tbWVudFxuIl0sImZpbGUiOiJjb21tZW50LmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type  //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes   //=> []\n */\nvar AtRule = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(AtRule, _Container);\n\n  function AtRule(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'atrule';\n    return _this;\n  }\n\n  var _proto = AtRule.prototype;\n\n  _proto.append = function append() {\n    var _Container$prototype$;\n\n    if (!this.nodes) this.nodes = [];\n\n    for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n      children[_key] = arguments[_key];\n    }\n\n    return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n  };\n\n  _proto.prepend = function prepend() {\n    var _Container$prototype$2;\n\n    if (!this.nodes) this.nodes = [];\n\n    for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      children[_key2] = arguments[_key2];\n    }\n\n    return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n  }\n  /**\n   * @memberof AtRule#\n   * @member {string} name The at-rule’s name immediately follows the `@`.\n   *\n   * @example\n   * const root  = postcss.parse('@media print {}')\n   * media.name //=> 'media'\n   * const media = root.first\n   */\n\n  /**\n   * @memberof AtRule#\n   * @member {string} params The at-rule’s parameters, the values\n   *                         that follow the at-rule’s name but precede\n   *                         any {} block.\n   *\n   * @example\n   * const root  = postcss.parse('@media print, screen {}')\n   * const media = root.first\n   * media.params //=> 'print, screen'\n   */\n\n  /**\n   * @memberof AtRule#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                        node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   *\n   * PostCSS cleans at-rule parameters from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('  @media\\nprint {\\n}')\n   * root.first.first.raws //=> { before: '  ',\n   *                       //     between: ' ',\n   *                       //     afterName: '\\n',\n   *                       //     after: '\\n' }\n   */\n  ;\n\n  return AtRule;\n}(_container.default);\n\nvar _default = AtRule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7QUFDSixrQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQixrQ0FBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxRQUFaO0FBRnFCO0FBR3RCOzs7O1NBRURDLE0sR0FBQSxrQkFBcUI7QUFBQTs7QUFDbkIsUUFBSSxDQUFDLEtBQUtDLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEVBQWI7O0FBREUsc0NBQVZDLFFBQVU7QUFBVkEsTUFBQUEsUUFBVTtBQUFBOztBQUVuQix5REFBYUYsTUFBYixrREFBdUJFLFFBQXZCO0FBQ0QsRzs7U0FFREMsTyxHQUFBLG1CQUFzQjtBQUFBOztBQUNwQixRQUFJLENBQUMsS0FBS0YsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERyx1Q0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRXBCLDBEQUFhQyxPQUFiLG1EQUF3QkQsUUFBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7OztBQVlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdENtQkUsa0I7O2VBdUVOUCxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0LXJ1bGUuXG4gKlxuICogSWYgaXTigJlzIGZvbGxvd2VkIGluIHRoZSBDU1MgYnkgYSB7fSBibG9jaywgdGhpcyBub2RlIHdpbGwgaGF2ZVxuICogYSBub2RlcyBwcm9wZXJ0eSByZXByZXNlbnRpbmcgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnQGNoYXJzZXQgXCJVVEYtOFwiOyBAbWVkaWEgcHJpbnQge30nKVxuICpcbiAqIGNvbnN0IGNoYXJzZXQgPSByb290LmZpcnN0XG4gKiBjaGFyc2V0LnR5cGUgIC8vPT4gJ2F0cnVsZSdcbiAqIGNoYXJzZXQubm9kZXMgLy89PiB1bmRlZmluZWRcbiAqXG4gKiBjb25zdCBtZWRpYSA9IHJvb3QubGFzdFxuICogbWVkaWEubm9kZXMgICAvLz0+IFtdXG4gKi9cbmNsYXNzIEF0UnVsZSBleHRlbmRzIENvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yIChkZWZhdWx0cykge1xuICAgIHN1cGVyKGRlZmF1bHRzKVxuICAgIHRoaXMudHlwZSA9ICdhdHJ1bGUnXG4gIH1cblxuICBhcHBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSB0aGlzLm5vZGVzID0gW11cbiAgICByZXR1cm4gc3VwZXIuYXBwZW5kKC4uLmNoaWxkcmVuKVxuICB9XG5cbiAgcHJlcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5wcmVwZW5kKC4uLmNoaWxkcmVuKVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gbmFtZSBUaGUgYXQtcnVsZeKAmXMgbmFtZSBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBgQGAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgID0gcG9zdGNzcy5wYXJzZSgnQG1lZGlhIHByaW50IHt9JylcbiAgICogbWVkaWEubmFtZSAvLz0+ICdtZWRpYSdcbiAgICogY29uc3QgbWVkaWEgPSByb290LmZpcnN0XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBhcmFtcyBUaGUgYXQtcnVsZeKAmXMgcGFyYW1ldGVycywgdGhlIHZhbHVlc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGZvbGxvdyB0aGUgYXQtcnVsZeKAmXMgbmFtZSBidXQgcHJlY2VkZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBhbnkge30gYmxvY2suXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgID0gcG9zdGNzcy5wYXJzZSgnQG1lZGlhIHByaW50LCBzY3JlZW4ge30nKVxuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICogbWVkaWEucGFyYW1zIC8vPT4gJ3ByaW50LCBzY3JlZW4nXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBhZnRlck5hbWVgOiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgYXQtcnVsZSBuYW1lIGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgYXQtcnVsZSBwYXJhbWV0ZXJzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCcgIEBtZWRpYVxcbnByaW50IHtcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICcgICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmV0d2VlbjogJyAnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFmdGVyTmFtZTogJ1xcbicsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXI6ICdcXG4nIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IEF0UnVsZVxuIl0sImZpbGUiOiJhdC1ydWxlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n  return nodes.map(function (i) {\n    if (i.nodes) i.nodes = cleanSource(i.nodes);\n    delete i.source;\n    return i;\n  });\n}\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\n\nvar Container = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Container, _Node);\n\n  function Container() {\n    return _Node.apply(this, arguments) || this;\n  }\n\n  var _proto = Container.prototype;\n\n  _proto.push = function push(child) {\n    child.parent = this;\n    this.nodes.push(child);\n    return this;\n  }\n  /**\n   * Iterates through the container’s immediate children,\n   * calling `callback` for each child.\n   *\n   * Returning `false` in the callback will break iteration.\n   *\n   * This method only iterates through the container’s immediate children.\n   * If you need to recursively iterate through all the container’s descendant\n   * nodes, use {@link Container#walk}.\n   *\n   * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n   * if you are mutating the array of child nodes during iteration.\n   * PostCSS will adjust the current index to match the mutations.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black; z-index: 1 }')\n   * const rule = root.first\n   *\n   * for (const decl of rule.nodes) {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Cycle will be infinite, because cloneBefore moves the current node\n   *   // to the next index\n   * }\n   *\n   * rule.each(decl => {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Will be executed only for color and z-index\n   * })\n   */\n  ;\n\n  _proto.each = function each(callback) {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    var id = this.lastEach;\n    this.indexes[id] = 0;\n    if (!this.nodes) return undefined;\n    var index, result;\n\n    while (this.indexes[id] < this.nodes.length) {\n      index = this.indexes[id];\n      result = callback(this.nodes[index], index);\n      if (result === false) break;\n      this.indexes[id] += 1;\n    }\n\n    delete this.indexes[id];\n    return result;\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each node.\n   *\n   * Like container.each(), this method is safe to use\n   * if you are mutating arrays during iteration.\n   *\n   * If you only need to iterate through the container’s immediate children,\n   * use {@link Container#each}.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walk(node => {\n   *   // Traverses all descendant nodes.\n   * })\n   */\n  ;\n\n  _proto.walk = function walk(callback) {\n    return this.each(function (child, i) {\n      var result;\n\n      try {\n        result = callback(child, i);\n      } catch (e) {\n        e.postcssNode = child;\n\n        if (e.stack && child.source && /\\n\\s{4}at /.test(e.stack)) {\n          var s = child.source;\n          e.stack = e.stack.replace(/\\n\\s{4}at /, \"$&\" + s.input.from + \":\" + s.start.line + \":\" + s.start.column + \"$&\");\n        }\n\n        throw e;\n      }\n\n      if (result !== false && child.walk) {\n        result = child.walk(callback);\n      }\n\n      return result;\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each declaration node.\n   *\n   * If you pass a filter, iteration will only happen over declarations\n   * with matching properties.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [prop]   String or regular expression\n   *                                 to filter declarations by property name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkDecls(decl => {\n   *   checkPropertySupport(decl.prop)\n   * })\n   *\n   * root.walkDecls('border-radius', decl => {\n   *   decl.remove()\n   * })\n   *\n   * root.walkDecls(/^background/, decl => {\n   *   decl.value = takeFirstColorFromGradient(decl.value)\n   * })\n   */\n  ;\n\n  _proto.walkDecls = function walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk(function (child, i) {\n        if (child.type === 'decl') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (prop instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each rule node.\n   *\n   * If you pass a filter, iteration will only happen over rules\n   * with matching selectors.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [selector] String or regular expression\n   *                                   to filter rules by selector.\n   * @param {childIterator} callback   Iterator receives each node and index.\n   *\n   * @return {false|undefined} returns `false` if iteration was broke.\n   *\n   * @example\n   * const selectors = []\n   * root.walkRules(rule => {\n   *   selectors.push(rule.selector)\n   * })\n   * console.log(`Your CSS uses ${ selectors.length } selectors`)\n   */\n  ;\n\n  _proto.walkRules = function walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk(function (child, i) {\n        if (child.type === 'rule') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (selector instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each at-rule node.\n   *\n   * If you pass a filter, iteration will only happen over at-rules\n   * that have matching names.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [name]   String or regular expression\n   *                                 to filter at-rules by name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkAtRules(rule => {\n   *   if (isOld(rule.name)) rule.remove()\n   * })\n   *\n   * let first = false\n   * root.walkAtRules('charset', rule => {\n   *   if (!first) {\n   *     first = true\n   *   } else {\n   *     rule.remove()\n   *   }\n   * })\n   */\n  ;\n\n  _proto.walkAtRules = function walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk(function (child, i) {\n        if (child.type === 'atrule') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (name instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each comment node.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkComments(comment => {\n   *   comment.remove()\n   * })\n   */\n  ;\n\n  _proto.walkComments = function walkComments(callback) {\n    return this.walk(function (child, i) {\n      if (child.type === 'comment') {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Inserts new nodes to the end of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.append(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */\n  ;\n\n  _proto.append = function append() {\n    for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n      children[_key] = arguments[_key];\n    }\n\n    for (var _i = 0, _children = children; _i < _children.length; _i++) {\n      var child = _children[_i];\n      var nodes = this.normalize(child, this.last);\n\n      for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {\n        var node = _step.value;\n        this.nodes.push(node);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Inserts new nodes to the start of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.prepend(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */\n  ;\n\n  _proto.prepend = function prepend() {\n    for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      children[_key2] = arguments[_key2];\n    }\n\n    children = children.reverse();\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {\n      var child = _step2.value;\n      var nodes = this.normalize(child, this.first, 'prepend').reverse();\n\n      for (var _iterator3 = _createForOfIteratorHelperLoose(nodes), _step3; !(_step3 = _iterator3()).done;) {\n        var node = _step3.value;\n        this.nodes.unshift(node);\n      }\n\n      for (var id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.cleanRaws = function cleanRaws(keepBetween) {\n    _Node.prototype.cleanRaws.call(this, keepBetween);\n\n    if (this.nodes) {\n      for (var _iterator4 = _createForOfIteratorHelperLoose(this.nodes), _step4; !(_step4 = _iterator4()).done;) {\n        var node = _step4.value;\n        node.cleanRaws(keepBetween);\n      }\n    }\n  }\n  /**\n   * Insert new node before old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n   */\n  ;\n\n  _proto.insertBefore = function insertBefore(exist, add) {\n    exist = this.index(exist);\n    var type = exist === 0 ? 'prepend' : false;\n    var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n\n    for (var _iterator5 = _createForOfIteratorHelperLoose(nodes), _step5; !(_step5 = _iterator5()).done;) {\n      var node = _step5.value;\n      this.nodes.splice(exist, 0, node);\n    }\n\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (exist <= index) {\n        this.indexes[id] = index + nodes.length;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Insert new node after old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   */\n  ;\n\n  _proto.insertAfter = function insertAfter(exist, add) {\n    exist = this.index(exist);\n    var nodes = this.normalize(add, this.nodes[exist]).reverse();\n\n    for (var _iterator6 = _createForOfIteratorHelperLoose(nodes), _step6; !(_step6 = _iterator6()).done;) {\n      var node = _step6.value;\n      this.nodes.splice(exist + 1, 0, node);\n    }\n\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (exist < index) {\n        this.indexes[id] = index + nodes.length;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Removes node from the container and cleans the parent properties\n   * from the node and its children.\n   *\n   * @param {Node|number} child Child or child’s index.\n   *\n   * @return {Node} This node for methods chain\n   *\n   * @example\n   * rule.nodes.length  //=> 5\n   * rule.removeChild(decl)\n   * rule.nodes.length  //=> 4\n   * decl.parent        //=> undefined\n   */\n  ;\n\n  _proto.removeChild = function removeChild(child) {\n    child = this.index(child);\n    this.nodes[child].parent = undefined;\n    this.nodes.splice(child, 1);\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index >= child) {\n        this.indexes[id] = index - 1;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Removes all children from the container\n   * and cleans their parent properties.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.removeAll()\n   * rule.nodes.length //=> 0\n   */\n  ;\n\n  _proto.removeAll = function removeAll() {\n    for (var _iterator7 = _createForOfIteratorHelperLoose(this.nodes), _step7; !(_step7 = _iterator7()).done;) {\n      var node = _step7.value;\n      node.parent = undefined;\n    }\n\n    this.nodes = [];\n    return this;\n  }\n  /**\n   * Passes all declaration values within the container that match pattern\n   * through callback, replacing those values with the returned result\n   * of callback.\n   *\n   * This method is useful if you are using a custom unit or function\n   * and need to iterate through all values.\n   *\n   * @param {string|RegExp} pattern      Replace pattern.\n   * @param {object} opts                Options to speed up the search.\n   * @param {string|string[]} opts.props An array of property names.\n   * @param {string} opts.fast           String that’s used to narrow down\n   *                                     values and speed up the regexp search.\n   * @param {function|string} callback   String to replace pattern or callback\n   *                                     that returns a new value. The callback\n   *                                     will receive the same arguments\n   *                                     as those passed to a function parameter\n   *                                     of `String#replace`.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n   *   return 15 * parseInt(string) + 'px'\n   * })\n   */\n  ;\n\n  _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n\n    this.walkDecls(function (decl) {\n      if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n      if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    return this;\n  }\n  /**\n   * Returns `true` if callback returns `true`\n   * for all of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is every child pass condition.\n   *\n   * @example\n   * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n   */\n  ;\n\n  _proto.every = function every(condition) {\n    return this.nodes.every(condition);\n  }\n  /**\n   * Returns `true` if callback returns `true` for (at least) one\n   * of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is some child pass condition.\n   *\n   * @example\n   * const hasPrefix = rule.some(i => i.prop[0] === '-')\n   */\n  ;\n\n  _proto.some = function some(condition) {\n    return this.nodes.some(condition);\n  }\n  /**\n   * Returns a `child`’s index within the {@link Container#nodes} array.\n   *\n   * @param {Node} child Child of the current container.\n   *\n   * @return {number} Child index.\n   *\n   * @example\n   * rule.index( rule.nodes[2] ) //=> 2\n   */\n  ;\n\n  _proto.index = function index(child) {\n    if (typeof child === 'number') {\n      return child;\n    }\n\n    return this.nodes.indexOf(child);\n  }\n  /**\n   * The container’s first child.\n   *\n   * @type {Node}\n   *\n   * @example\n   * rule.first === rules.nodes[0]\n   */\n  ;\n\n  _proto.normalize = function normalize(nodes, sample) {\n    var _this = this;\n\n    if (typeof nodes === 'string') {\n      var parse = require('./parse');\n\n      nodes = cleanSource(parse(nodes).nodes);\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n\n      for (var _iterator8 = _createForOfIteratorHelperLoose(nodes), _step8; !(_step8 = _iterator8()).done;) {\n        var i = _step8.value;\n        if (i.parent) i.parent.removeChild(i, 'ignore');\n      }\n    } else if (nodes.type === 'root') {\n      nodes = nodes.nodes.slice(0);\n\n      for (var _iterator9 = _createForOfIteratorHelperLoose(nodes), _step9; !(_step9 = _iterator9()).done;) {\n        var _i2 = _step9.value;\n        if (_i2.parent) _i2.parent.removeChild(_i2, 'ignore');\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation');\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value);\n      }\n\n      nodes = [new _declaration.default(nodes)];\n    } else if (nodes.selector) {\n      var Rule = require('./rule');\n\n      nodes = [new Rule(nodes)];\n    } else if (nodes.name) {\n      var AtRule = require('./at-rule');\n\n      nodes = [new AtRule(nodes)];\n    } else if (nodes.text) {\n      nodes = [new _comment.default(nodes)];\n    } else {\n      throw new Error('Unknown node type in node creation');\n    }\n\n    var processed = nodes.map(function (i) {\n      if (i.parent) i.parent.removeChild(i);\n\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n        }\n      }\n\n      i.parent = _this;\n      return i;\n    });\n    return processed;\n  }\n  /**\n   * @memberof Container#\n   * @member {Node[]} nodes An array containing the container’s children.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * root.nodes.length           //=> 1\n   * root.nodes[0].selector      //=> 'a'\n   * root.nodes[0].nodes[0].prop //=> 'color'\n   */\n  ;\n\n  _createClass(Container, [{\n    key: \"first\",\n    get: function get() {\n      if (!this.nodes) return undefined;\n      return this.nodes[0];\n    }\n    /**\n     * The container’s last child.\n     *\n     * @type {Node}\n     *\n     * @example\n     * rule.last === rule.nodes[rule.nodes.length - 1]\n     */\n\n  }, {\n    key: \"last\",\n    get: function get() {\n      if (!this.nodes) return undefined;\n      return this.nodes[this.nodes.length - 1];\n    }\n  }]);\n\n  return Container;\n}(_node.default);\n\nvar _default = Container;\n/**\n * @callback childCondition\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwiZGVjbCIsInByb3BzIiwiaW5kZXhPZiIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FB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LE1BQU4sRUFBY0wsQ0FBQyxDQUFDSyxNQUFGLENBQVMrQyxXQUFULENBQXFCcEQsQ0FBckI7O0FBQ2QsVUFBSSxPQUFPQSxDQUFDLENBQUMrRSxJQUFGLENBQU9DLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeEMsWUFBSWYsTUFBTSxJQUFJLE9BQU9BLE1BQU0sQ0FBQ2MsSUFBUCxDQUFZQyxNQUFuQixLQUE4QixXQUE1QyxFQUF5RDtBQUN2RGhGLFVBQUFBLENBQUMsQ0FBQytFLElBQUYsQ0FBT0MsTUFBUCxHQUFnQmYsTUFBTSxDQUFDYyxJQUFQLENBQVlDLE1BQVosQ0FBbUIzRCxPQUFuQixDQUEyQixRQUEzQixFQUFxQyxFQUFyQyxDQUFoQjtBQUNEO0FBQ0Y7O0FBQ0RyQixNQUFBQSxDQUFDLENBQUNLLE1BQUYsR0FBVyxLQUFYO0FBQ0EsYUFBT0wsQ0FBUDtBQUNELEtBVGUsQ0FBaEI7QUFXQSxXQUFPOEUsU0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O3dCQW5FYTtBQUNYLFVBQUksQ0FBQyxLQUFLaEYsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLENBQVgsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O3dCQVFZO0FBQ1YsVUFBSSxDQUFDLEtBQUtBLEtBQVYsRUFBaUIsT0FBT2EsU0FBUDtBQUNqQixhQUFPLEtBQUtiLEtBQUwsQ0FBVyxLQUFLQSxLQUFMLENBQVdnQixNQUFYLEdBQW9CLENBQS9CLENBQVA7QUFDRDs7OztFQWhqQnFCbUUsYTs7ZUErbUJUL0UsUztBQUVmOzs7Ozs7OztBQVFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nXG5pbXBvcnQgQ29tbWVudCBmcm9tICcuL2NvbW1lbnQnXG5pbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbmZ1bmN0aW9uIGNsZWFuU291cmNlIChub2Rlcykge1xuICByZXR1cm4gbm9kZXMubWFwKGkgPT4ge1xuICAgIGlmIChpLm5vZGVzKSBpLm5vZGVzID0gY2xlYW5Tb3VyY2UoaS5ub2RlcylcbiAgICBkZWxldGUgaS5zb3VyY2VcbiAgICByZXR1cm4gaVxuICB9KVxufVxuXG4vKipcbiAqIFRoZSB7QGxpbmsgUm9vdH0sIHtAbGluayBBdFJ1bGV9LCBhbmQge0BsaW5rIFJ1bGV9IGNvbnRhaW5lciBub2Rlc1xuICogaW5oZXJpdCBzb21lIGNvbW1vbiBtZXRob2RzIHRvIGhlbHAgd29yayB3aXRoIHRoZWlyIGNoaWxkcmVuLlxuICpcbiAqIE5vdGUgdGhhdCBhbGwgY29udGFpbmVycyBjYW4gc3RvcmUgYW55IGNvbnRlbnQuIElmIHlvdSB3cml0ZSBhIHJ1bGUgaW5zaWRlXG4gKiBhIHJ1bGUsIFBvc3RDU1Mgd2lsbCBwYXJzZSBpdC5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKiBAYWJzdHJhY3RcbiAqL1xuY2xhc3MgQ29udGFpbmVyIGV4dGVuZHMgTm9kZSB7XG4gIHB1c2ggKGNoaWxkKSB7XG4gICAgY2hpbGQucGFyZW50ID0gdGhpc1xuICAgIHRoaXMubm9kZXMucHVzaChjaGlsZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLFxuICAgKiBjYWxsaW5nIGBjYWxsYmFja2AgZm9yIGVhY2ggY2hpbGQuXG4gICAqXG4gICAqIFJldHVybmluZyBgZmFsc2VgIGluIHRoZSBjYWxsYmFjayB3aWxsIGJyZWFrIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgb25seSBpdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAgICogSWYgeW91IG5lZWQgdG8gcmVjdXJzaXZlbHkgaXRlcmF0ZSB0aHJvdWdoIGFsbCB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50XG4gICAqIG5vZGVzLCB1c2Uge0BsaW5rIENvbnRhaW5lciN3YWxrfS5cbiAgICpcbiAgICogVW5saWtlIHRoZSBmb3IgYHt9YC1jeWNsZSBvciBgQXJyYXkjZm9yRWFjaGAgdGhpcyBpdGVyYXRvciBpcyBzYWZlXG4gICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgdGhlIGFycmF5IG9mIGNoaWxkIG5vZGVzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqIFBvc3RDU1Mgd2lsbCBhZGp1c3QgdGhlIGN1cnJlbnQgaW5kZXggdG8gbWF0Y2ggdGhlIG11dGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjazsgei1pbmRleDogMSB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICpcbiAgICogZm9yIChjb25zdCBkZWNsIG9mIHJ1bGUubm9kZXMpIHtcbiAgICogICBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KVxuICAgKiAgIC8vIEN5Y2xlIHdpbGwgYmUgaW5maW5pdGUsIGJlY2F1c2UgY2xvbmVCZWZvcmUgbW92ZXMgdGhlIGN1cnJlbnQgbm9kZVxuICAgKiAgIC8vIHRvIHRoZSBuZXh0IGluZGV4XG4gICAqIH1cbiAgICpcbiAgICogcnVsZS5lYWNoKGRlY2wgPT4ge1xuICAgKiAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pXG4gICAqICAgLy8gV2lsbCBiZSBleGVjdXRlZCBvbmx5IGZvciBjb2xvciBhbmQgei1pbmRleFxuICAgKiB9KVxuICAgKi9cbiAgZWFjaCAoY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMubGFzdEVhY2gpIHRoaXMubGFzdEVhY2ggPSAwXG4gICAgaWYgKCF0aGlzLmluZGV4ZXMpIHRoaXMuaW5kZXhlcyA9IHsgfVxuXG4gICAgdGhpcy5sYXN0RWFjaCArPSAxXG4gICAgbGV0IGlkID0gdGhpcy5sYXN0RWFjaFxuICAgIHRoaXMuaW5kZXhlc1tpZF0gPSAwXG5cbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCBpbmRleCwgcmVzdWx0XG4gICAgd2hpbGUgKHRoaXMuaW5kZXhlc1tpZF0gPCB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLm5vZGVzW2luZGV4XSwgaW5kZXgpXG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgYnJlYWtcblxuICAgICAgdGhpcy5pbmRleGVzW2lkXSArPSAxXG4gICAgfVxuXG4gICAgZGVsZXRlIHRoaXMuaW5kZXhlc1tpZF1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBub2RlLlxuICAgKlxuICAgKiBMaWtlIGNvbnRhaW5lci5lYWNoKCksIHRoaXMgbWV0aG9kIGlzIHNhZmUgdG8gdXNlXG4gICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIElmIHlvdSBvbmx5IG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbixcbiAgICogdXNlIHtAbGluayBDb250YWluZXIjZWFjaH0uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrKG5vZGUgPT4ge1xuICAgKiAgIC8vIFRyYXZlcnNlcyBhbGwgZGVzY2VuZGFudCBub2Rlcy5cbiAgICogfSlcbiAgICovXG4gIHdhbGsgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgIGxldCByZXN1bHRcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlLnBvc3Rjc3NOb2RlID0gY2hpbGRcbiAgICAgICAgaWYgKGUuc3RhY2sgJiYgY2hpbGQuc291cmNlICYmIC9cXG5cXHN7NH1hdCAvLnRlc3QoZS5zdGFjaykpIHtcbiAgICAgICAgICBsZXQgcyA9IGNoaWxkLnNvdXJjZVxuICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnJlcGxhY2UoL1xcblxcc3s0fWF0IC8sXG4gICAgICAgICAgICBgJCYkeyBzLmlucHV0LmZyb20gfTokeyBzLnN0YXJ0LmxpbmUgfTokeyBzLnN0YXJ0LmNvbHVtbiB9JCZgKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlICYmIGNoaWxkLndhbGspIHtcbiAgICAgICAgcmVzdWx0ID0gY2hpbGQud2FsayhjYWxsYmFjaylcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIGRlY2xhcmF0aW9uIG5vZGUuXG4gICAqXG4gICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGRlY2xhcmF0aW9uc1xuICAgKiB3aXRoIG1hdGNoaW5nIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbcHJvcF0gICBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGRlY2xhcmF0aW9ucyBieSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICAgKiAgIGNoZWNrUHJvcGVydHlTdXBwb3J0KGRlY2wucHJvcClcbiAgICogfSlcbiAgICpcbiAgICogcm9vdC53YWxrRGVjbHMoJ2JvcmRlci1yYWRpdXMnLCBkZWNsID0+IHtcbiAgICogICBkZWNsLnJlbW92ZSgpXG4gICAqIH0pXG4gICAqXG4gICAqIHJvb3Qud2Fsa0RlY2xzKC9eYmFja2dyb3VuZC8sIGRlY2wgPT4ge1xuICAgKiAgIGRlY2wudmFsdWUgPSB0YWtlRmlyc3RDb2xvckZyb21HcmFkaWVudChkZWNsLnZhbHVlKVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0RlY2xzIChwcm9wLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gcHJvcFxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHByb3AgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnZGVjbCcgJiYgcHJvcC50ZXN0KGNoaWxkLnByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBjaGlsZC5wcm9wID09PSBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIHJ1bGUgbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgcnVsZXNcbiAgICogd2l0aCBtYXRjaGluZyBzZWxlY3RvcnMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbc2VsZWN0b3JdIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbHRlciBydWxlcyBieSBzZWxlY3Rvci5cbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAgIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHNlbGVjdG9ycyA9IFtdXG4gICAqIHJvb3Qud2Fsa1J1bGVzKHJ1bGUgPT4ge1xuICAgKiAgIHNlbGVjdG9ycy5wdXNoKHJ1bGUuc2VsZWN0b3IpXG4gICAqIH0pXG4gICAqIGNvbnNvbGUubG9nKGBZb3VyIENTUyB1c2VzICR7IHNlbGVjdG9ycy5sZW5ndGggfSBzZWxlY3RvcnNgKVxuICAgKi9cbiAgd2Fsa1J1bGVzIChzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IHNlbGVjdG9yXG5cbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBzZWxlY3Rvci50ZXN0KGNoaWxkLnNlbGVjdG9yKSkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScgJiYgY2hpbGQuc2VsZWN0b3IgPT09IHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIGF0LXJ1bGUgbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgYXQtcnVsZXNcbiAgICogdGhhdCBoYXZlIG1hdGNoaW5nIG5hbWVzLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW25hbWVdICAgU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbHRlciBhdC1ydWxlcyBieSBuYW1lLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsa0F0UnVsZXMocnVsZSA9PiB7XG4gICAqICAgaWYgKGlzT2xkKHJ1bGUubmFtZSkpIHJ1bGUucmVtb3ZlKClcbiAgICogfSlcbiAgICpcbiAgICogbGV0IGZpcnN0ID0gZmFsc2VcbiAgICogcm9vdC53YWxrQXRSdWxlcygnY2hhcnNldCcsIHJ1bGUgPT4ge1xuICAgKiAgIGlmICghZmlyc3QpIHtcbiAgICogICAgIGZpcnN0ID0gdHJ1ZVxuICAgKiAgIH0gZWxzZSB7XG4gICAqICAgICBydWxlLnJlbW92ZSgpXG4gICAqICAgfVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0F0UnVsZXMgKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBuYW1lXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChuYW1lIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScgJiYgbmFtZS50ZXN0KGNoaWxkLm5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggY29tbWVudCBub2RlLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrQ29tbWVudHMoY29tbWVudCA9PiB7XG4gICAqICAgY29tbWVudC5yZW1vdmUoKVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0NvbW1lbnRzIChjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oTm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXSl9IGNoaWxkcmVuIE5ldyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBkZWNsMSA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIGNvbnN0IGRlY2wyID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZTogJ3doaXRlJyB9KVxuICAgKiBydWxlLmFwcGVuZChkZWNsMSwgZGVjbDIpXG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKHsgbmFtZTogJ2NoYXJzZXQnLCBwYXJhbXM6ICdcIlVURi04XCInIH0pICAvLyBhdC1ydWxlXG4gICAqIHJvb3QuYXBwZW5kKHsgc2VsZWN0b3I6ICdhJyB9KSAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgKiBydWxlLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAqIHJ1bGUuYXBwZW5kKHsgdGV4dDogJ0NvbW1lbnQnIH0pICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgKlxuICAgKiByb290LmFwcGVuZCgnYSB7fScpXG4gICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKVxuICAgKi9cbiAgYXBwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShjaGlsZCwgdGhpcy5sYXN0KVxuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBuZXcgbm9kZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiBOZXcgbm9kZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgZGVjbDEgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KVxuICAgKiBjb25zdCBkZWNsMiA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdiYWNrZ3JvdW5kLWNvbG9yJywgdmFsdWU6ICd3aGl0ZScgfSlcbiAgICogcnVsZS5wcmVwZW5kKGRlY2wxLCBkZWNsMilcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSkgIC8vIGF0LXJ1bGVcbiAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKCdhIHt9JylcbiAgICogcm9vdC5maXJzdC5hcHBlbmQoJ2NvbG9yOiBibGFjazsgei1pbmRleDogMScpXG4gICAqL1xuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4ucmV2ZXJzZSgpXG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGNoaWxkLCB0aGlzLmZpcnN0LCAncHJlcGVuZCcpLnJldmVyc2UoKVxuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy51bnNoaWZ0KG5vZGUpXG4gICAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IHRoaXMuaW5kZXhlc1tpZF0gKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGNsZWFuUmF3cyAoa2VlcEJldHdlZW4pIHtcbiAgICBzdXBlci5jbGVhblJhd3Moa2VlcEJldHdlZW4pXG4gICAgaWYgKHRoaXMubm9kZXMpIHtcbiAgICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2Rlcykgbm9kZS5jbGVhblJhd3Moa2VlcEJldHdlZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBiZWZvcmUgb2xkIG5vZGUgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5pbnNlcnRCZWZvcmUoZGVjbCwgZGVjbC5jbG9uZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSkpXG4gICAqL1xuICBpbnNlcnRCZWZvcmUgKGV4aXN0LCBhZGQpIHtcbiAgICBleGlzdCA9IHRoaXMuaW5kZXgoZXhpc3QpXG5cbiAgICBsZXQgdHlwZSA9IGV4aXN0ID09PSAwID8gJ3ByZXBlbmQnIDogZmFsc2VcbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdLCB0eXBlKS5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnNwbGljZShleGlzdCwgMCwgbm9kZSlcblxuICAgIGxldCBpbmRleFxuICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICBpZiAoZXhpc3QgPD0gaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYWZ0ZXIgb2xkIG5vZGUgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIGluc2VydEFmdGVyIChleGlzdCwgYWRkKSB7XG4gICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KVxuXG4gICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSkucmV2ZXJzZSgpXG4gICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QgKyAxLCAwLCBub2RlKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChleGlzdCA8IGluZGV4KSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBub2RlIGZyb20gdGhlIGNvbnRhaW5lciBhbmQgY2xlYW5zIHRoZSBwYXJlbnQgcHJvcGVydGllc1xuICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGNoaWxkIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDVcbiAgICogcnVsZS5yZW1vdmVDaGlsZChkZWNsKVxuICAgKiBydWxlLm5vZGVzLmxlbmd0aCAgLy89PiA0XG4gICAqIGRlY2wucGFyZW50ICAgICAgICAvLz0+IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVtb3ZlQ2hpbGQgKGNoaWxkKSB7XG4gICAgY2hpbGQgPSB0aGlzLmluZGV4KGNoaWxkKVxuICAgIHRoaXMubm9kZXNbY2hpbGRdLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHRoaXMubm9kZXMuc3BsaWNlKGNoaWxkLCAxKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChpbmRleCA+PSBjaGlsZCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggLSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBjb250YWluZXJcbiAgICogYW5kIGNsZWFucyB0aGVpciBwYXJlbnQgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLnJlbW92ZUFsbCgpXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoIC8vPT4gMFxuICAgKi9cbiAgcmVtb3ZlQWxsICgpIHtcbiAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIG5vZGUucGFyZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYWxsIGRlY2xhcmF0aW9uIHZhbHVlcyB3aXRoaW4gdGhlIGNvbnRhaW5lciB0aGF0IG1hdGNoIHBhdHRlcm5cbiAgICogdGhyb3VnaCBjYWxsYmFjaywgcmVwbGFjaW5nIHRob3NlIHZhbHVlcyB3aXRoIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICogb2YgY2FsbGJhY2suXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIHVuaXQgb3IgZnVuY3Rpb25cbiAgICogYW5kIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIGFsbCB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcGF0dGVybiAgICAgIFJlcGxhY2UgcGF0dGVybi5cbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgICAgICAgICAgICAgICAgT3B0aW9ucyB0byBzcGVlZCB1cCB0aGUgc2VhcmNoLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0cy5wcm9wcyBBbiBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZmFzdCAgICAgICAgICAgU3RyaW5nIHRoYXTigJlzIHVzZWQgdG8gbmFycm93IGRvd25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGFuZCBzcGVlZCB1cCB0aGUgcmVnZXhwIHNlYXJjaC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbnxzdHJpbmd9IGNhbGxiYWNrICAgU3RyaW5nIHRvIHJlcGxhY2UgcGF0dGVybiBvciBjYWxsYmFja1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHJldHVybnMgYSBuZXcgdmFsdWUuIFRoZSBjYWxsYmFja1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHJlY2VpdmUgdGhlIHNhbWUgYXJndW1lbnRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRob3NlIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBgU3RyaW5nI3JlcGxhY2VgLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3QucmVwbGFjZVZhbHVlcygvXFxkK3JlbS8sIHsgZmFzdDogJ3JlbScgfSwgc3RyaW5nID0+IHtcbiAgICogICByZXR1cm4gMTUgKiBwYXJzZUludChzdHJpbmcpICsgJ3B4J1xuICAgKiB9KVxuICAgKi9cbiAgcmVwbGFjZVZhbHVlcyAocGF0dGVybiwgb3B0cywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdHNcbiAgICAgIG9wdHMgPSB7IH1cbiAgICB9XG5cbiAgICB0aGlzLndhbGtEZWNscyhkZWNsID0+IHtcbiAgICAgIGlmIChvcHRzLnByb3BzICYmIG9wdHMucHJvcHMuaW5kZXhPZihkZWNsLnByb3ApID09PSAtMSkgcmV0dXJuXG4gICAgICBpZiAob3B0cy5mYXN0ICYmIGRlY2wudmFsdWUuaW5kZXhPZihvcHRzLmZhc3QpID09PSAtMSkgcmV0dXJuXG5cbiAgICAgIGRlY2wudmFsdWUgPSBkZWNsLnZhbHVlLnJlcGxhY2UocGF0dGVybiwgY2FsbGJhY2spXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWBcbiAgICogZm9yIGFsbCBvZiB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIEl0ZXJhdG9yIHJldHVybnMgdHJ1ZSBvciBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gSXMgZXZlcnkgY2hpbGQgcGFzcyBjb25kaXRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG5vUHJlZml4ZXMgPSBydWxlLmV2ZXJ5KGkgPT4gaS5wcm9wWzBdICE9PSAnLScpXG4gICAqL1xuICBldmVyeSAoY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuZXZlcnkoY29uZGl0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGNhbGxiYWNrIHJldHVybnMgYHRydWVgIGZvciAoYXQgbGVhc3QpIG9uZVxuICAgKiBvZiB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIEl0ZXJhdG9yIHJldHVybnMgdHJ1ZSBvciBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gSXMgc29tZSBjaGlsZCBwYXNzIGNvbmRpdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgaGFzUHJlZml4ID0gcnVsZS5zb21lKGkgPT4gaS5wcm9wWzBdID09PSAnLScpXG4gICAqL1xuICBzb21lIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5zb21lKGNvbmRpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYGNoaWxkYOKAmXMgaW5kZXggd2l0aGluIHRoZSB7QGxpbmsgQ29udGFpbmVyI25vZGVzfSBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfSBjaGlsZCBDaGlsZCBvZiB0aGUgY3VycmVudCBjb250YWluZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge251bWJlcn0gQ2hpbGQgaW5kZXguXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUuaW5kZXgoIHJ1bGUubm9kZXNbMl0gKSAvLz0+IDJcbiAgICovXG4gIGluZGV4IChjaGlsZCkge1xuICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gY2hpbGRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZihjaGlsZClcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBmaXJzdCBjaGlsZC5cbiAgICpcbiAgICogQHR5cGUge05vZGV9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUuZmlyc3QgPT09IHJ1bGVzLm5vZGVzWzBdXG4gICAqL1xuICBnZXQgZmlyc3QgKCkge1xuICAgIGlmICghdGhpcy5ub2RlcykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLm5vZGVzWzBdXG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lcuKAmXMgbGFzdCBjaGlsZC5cbiAgICpcbiAgICogQHR5cGUge05vZGV9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUubGFzdCA9PT0gcnVsZS5ub2Rlc1tydWxlLm5vZGVzLmxlbmd0aCAtIDFdXG4gICAqL1xuICBnZXQgbGFzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbdGhpcy5ub2Rlcy5sZW5ndGggLSAxXVxuICB9XG5cbiAgbm9ybWFsaXplIChub2Rlcywgc2FtcGxlKSB7XG4gICAgaWYgKHR5cGVvZiBub2RlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuICAgICAgbm9kZXMgPSBjbGVhblNvdXJjZShwYXJzZShub2Rlcykubm9kZXMpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgbm9kZXMgPSBub2Rlcy5zbGljZSgwKVxuICAgICAgZm9yIChsZXQgaSBvZiBub2Rlcykge1xuICAgICAgICBpZiAoaS5wYXJlbnQpIGkucGFyZW50LnJlbW92ZUNoaWxkKGksICdpZ25vcmUnKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZXMudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLm5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlKSB7XG4gICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnByb3ApIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZXMudmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgZmllbGQgaXMgbWlzc2VkIGluIG5vZGUgY3JlYXRpb24nKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZXMudmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5vZGVzLnZhbHVlID0gU3RyaW5nKG5vZGVzLnZhbHVlKVxuICAgICAgfVxuICAgICAgbm9kZXMgPSBbbmV3IERlY2xhcmF0aW9uKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnNlbGVjdG9yKSB7XG4gICAgICBsZXQgUnVsZSA9IHJlcXVpcmUoJy4vcnVsZScpXG4gICAgICBub2RlcyA9IFtuZXcgUnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy5uYW1lKSB7XG4gICAgICBsZXQgQXRSdWxlID0gcmVxdWlyZSgnLi9hdC1ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBBdFJ1bGUobm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMudGV4dCkge1xuICAgICAgbm9kZXMgPSBbbmV3IENvbW1lbnQobm9kZXMpXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlIGluIG5vZGUgY3JlYXRpb24nKVxuICAgIH1cblxuICAgIGxldCBwcm9jZXNzZWQgPSBub2Rlcy5tYXAoaSA9PiB7XG4gICAgICBpZiAoaS5wYXJlbnQpIGkucGFyZW50LnJlbW92ZUNoaWxkKGkpXG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChzYW1wbGUgJiYgdHlwZW9mIHNhbXBsZS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaS5wYXJlbnQgPSB0aGlzXG4gICAgICByZXR1cm4gaVxuICAgIH0pXG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbnRhaW5lciNcbiAgICogQG1lbWJlciB7Tm9kZVtdfSBub2RlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAgICogcm9vdC5ub2Rlcy5sZW5ndGggICAgICAgICAgIC8vPT4gMVxuICAgKiByb290Lm5vZGVzWzBdLnNlbGVjdG9yICAgICAgLy89PiAnYSdcbiAgICogcm9vdC5ub2Rlc1swXS5ub2Rlc1swXS5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyXG5cbi8qKlxuICogQGNhbGxiYWNrIGNoaWxkQ29uZGl0aW9uXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgQ29udGFpbmVyIGNoaWxkLlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IENoaWxkIGluZGV4LlxuICogQHBhcmFtIHtOb2RlW119IG5vZGVzIEFsbCBjb250YWluZXIgY2hpbGRyZW4uXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIGNoaWxkSXRlcmF0b3JcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybmluZyBgZmFsc2VgIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICovXG4iXSwiZmlsZSI6ImNvbnRhaW5lci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type       //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Rule, _Container);\n\n  function Rule(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'rule';\n    if (!_this.nodes) _this.nodes = [];\n    return _this;\n  }\n  /**\n   * An array containing the rule’s individual selectors.\n   * Groups of selectors are split at commas.\n   *\n   * @type {string[]}\n   *\n   * @example\n   * const root = postcss.parse('a, b { }')\n   * const rule = root.first\n   *\n   * rule.selector  //=> 'a, b'\n   * rule.selectors //=> ['a', 'b']\n   *\n   * rule.selectors = ['a', 'strong']\n   * rule.selector //=> 'a, strong'\n   */\n\n\n  _createClass(Rule, [{\n    key: \"selectors\",\n    get: function get() {\n      return _list.default.comma(this.selector);\n    },\n    set: function set(values) {\n      var match = this.selector ? this.selector.match(/,\\s*/) : null;\n      var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n      this.selector = values.join(sep);\n    }\n    /**\n     * @memberof Rule#\n     * @member {string} selector The rule’s full selector represented\n     *                           as a string.\n     *\n     * @example\n     * const root = postcss.parse('a, b { }')\n     * const rule = root.first\n     * rule.selector //=> 'a, b'\n     */\n\n    /**\n     * @memberof Rule#\n     * @member {object} raws Information to generate byte-to-byte equal\n     *                       node string as it was in the origin input.\n     *\n     * Every parser saves its own properties,\n     * but the default CSS parser uses:\n     *\n     * * `before`: the space symbols before the node. It also stores `*`\n     *   and `_` symbols before the declaration (IE hack).\n     * * `after`: the space symbols after the last child of the node\n     *   to the end of the node.\n     * * `between`: the symbols between the property and value\n     *   for declarations, selector and `{` for rules, or last parameter\n     *   and `{` for at-rules.\n     * * `semicolon`: contains `true` if the last child has\n     *   an (optional) semicolon.\n     * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n     *\n     * PostCSS cleans selectors from comments and extra spaces,\n     * but it stores origin content in raws properties.\n     * As such, if you don’t change a declaration’s value,\n     * PostCSS will use the raw value with comments.\n     *\n     * @example\n     * const root = postcss.parse('a {\\n  color:black\\n}')\n     * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n     */\n\n  }]);\n\n  return Rule;\n}(_container.default);\n\nvar _default = Rule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLEk7OztBQUNKLGdCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFDQSxRQUFJLENBQUMsTUFBS0MsS0FBVixFQUFpQixNQUFLQSxLQUFMLEdBQWEsRUFBYjtBQUhJO0FBSXRCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQWdCaUI7QUFDZixhQUFPQyxjQUFLQyxLQUFMLENBQVcsS0FBS0MsUUFBaEIsQ0FBUDtBQUNELEs7c0JBRWNDLE0sRUFBUTtBQUNyQixVQUFJQyxLQUFLLEdBQUcsS0FBS0YsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNFLEtBQWQsQ0FBb0IsTUFBcEIsQ0FBaEIsR0FBOEMsSUFBMUQ7QUFDQSxVQUFJQyxHQUFHLEdBQUdELEtBQUssR0FBR0EsS0FBSyxDQUFDLENBQUQsQ0FBUixHQUFjLE1BQU0sS0FBS0UsR0FBTCxDQUFTLFNBQVQsRUFBb0IsWUFBcEIsQ0FBbkM7QUFDQSxXQUFLSixRQUFMLEdBQWdCQyxNQUFNLENBQUNJLElBQVAsQ0FBWUYsR0FBWixDQUFoQjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNUNpQkcsa0I7O2VBMEVKWixJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcbmltcG9ydCBsaXN0IGZyb20gJy4vbGlzdCdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIHJ1bGU6IGEgc2VsZWN0b3IgZm9sbG93ZWQgYnkgYSBkZWNsYXJhdGlvbiBibG9jay5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7fScpXG4gKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICogcnVsZS50eXBlICAgICAgIC8vPT4gJ3J1bGUnXG4gKiBydWxlLnRvU3RyaW5nKCkgLy89PiAnYXt9J1xuICovXG5jbGFzcyBSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ3J1bGUnXG4gICAgaWYgKCF0aGlzLm5vZGVzKSB0aGlzLm5vZGVzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBydWxl4oCZcyBpbmRpdmlkdWFsIHNlbGVjdG9ycy5cbiAgICogR3JvdXBzIG9mIHNlbGVjdG9ycyBhcmUgc3BsaXQgYXQgY29tbWFzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhLCBiIHsgfScpXG4gICAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3IgIC8vPT4gJ2EsIGInXG4gICAqIHJ1bGUuc2VsZWN0b3JzIC8vPT4gWydhJywgJ2InXVxuICAgKlxuICAgKiBydWxlLnNlbGVjdG9ycyA9IFsnYScsICdzdHJvbmcnXVxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIHN0cm9uZydcbiAgICovXG4gIGdldCBzZWxlY3RvcnMgKCkge1xuICAgIHJldHVybiBsaXN0LmNvbW1hKHRoaXMuc2VsZWN0b3IpXG4gIH1cblxuICBzZXQgc2VsZWN0b3JzICh2YWx1ZXMpIHtcbiAgICBsZXQgbWF0Y2ggPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3Rvci5tYXRjaCgvLFxccyovKSA6IG51bGxcbiAgICBsZXQgc2VwID0gbWF0Y2ggPyBtYXRjaFswXSA6ICcsJyArIHRoaXMucmF3KCdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuc2VsZWN0b3IgPSB2YWx1ZXMuam9pbihzZXApXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gc2VsZWN0b3IgVGhlIHJ1bGXigJlzIGZ1bGwgc2VsZWN0b3IgcmVwcmVzZW50ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHN0cmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICogcnVsZS5zZWxlY3RvciAvLz0+ICdhLCBiJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgYHRydWVgIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBvd25TZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlcmUgaXMgc2VtaWNvbG9uIGFmdGVyIHJ1bGUuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycyBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJycsIGJldHdlZW46ICcgJywgYWZ0ZXI6ICdcXG4nIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bGVcbiJdLCJmaWxlIjoicnVsZS5qcyJ9\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport Feature from 'constants/feature';\nimport { PRIORITY_ONE } from 'constants/actionPriority';\n\nconst features = [Feature.Download, Feature.Print, Feature.Search, Feature.NotesPanel];\nconst dataElements = [\n  'panToolButton',\n  'selectToolButton',\n  'outlinesPanelButton',\n  'bookmarksPanelButton',\n  'signaturePanelButton',\n  'toolbarGroup-Shapes',\n  'toolbarGroup-Insert',\n  'toolbarGroup-Edit',\n  'toolbarGroup-EditText',\n  'toolbarGroup-FillAndSign',\n  'toolbarGroup-Forms',\n  'stickyToolGroupButton',\n  'freeTextToolGroupButton',\n  'markInsertTextGroupButton',\n  'markReplaceTextGroupButton',\n  'shapeToolGroupButton',\n  'freeHandToolGroupButton',\n  'freeHandHighlightToolGroupButton',\n  'undoButton',\n  'redoButton',\n  'eraserToolButton'\n];\n\nexport const enterReaderMode = (store) => {\n  const state = store.getState();\n  const PDFNet = window.Core.PDFNet;\n  PDFNet.initialize().then(() => {\n    const main = async () => {\n      try {\n        const docViewer = core.getDocumentViewer();\n\n        // Sync text annotations\n        const pdfDoc = await docViewer.getDocument().getPDFDoc();\n        const xfdf = await core.getAnnotationManager().exportAnnotations({\n          widgets: false,\n          fields: false\n        });\n        const fdfDoc = await PDFNet.FDFDoc.createFromXFDF(xfdf);\n        await pdfDoc.fdfUpdate(fdfDoc);\n\n        // Enter Reader Mode\n        core.setDisplayMode('Single');\n        store.dispatch(actions.setReaderMode(true));\n        disableFeatures(store)(features, PRIORITY_ONE);\n        store.dispatch(actions.disableElements(dataElements, PRIORITY_ONE));\n        if (!selectors.isElementDisabled(state, 'toolbarGroup-Annotate')) {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-Annotate'));\n          store.dispatch(actions.setActiveToolGroup(''));\n        } else {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n        }\n        docViewer.setToolMode(docViewer.getTool(window.Core.Tools.ToolNames.EDIT));\n      } catch (err) {\n        console.warn(err);\n      }\n    };\n    PDFNet.runWithCleanup(main);\n  });\n};\n\nexport const exitReaderMode = async (store) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Exit Reader Mode\n  store.dispatch(actions.setReaderMode(false));\n  enableFeatures(store)(features, PRIORITY_ONE);\n  store.dispatch(actions.enableElements(dataElements, PRIORITY_ONE));\n\n  // Sync text annotations\n  const pdfDoc = await core.getDocumentViewer().getDocument().getPDFDoc();\n  const fdfDoc = await pdfDoc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);\n  const xfdf = await fdfDoc.saveAsXFDFAsString();\n  const annotManager = core.getAnnotationManager();\n  await annotManager.importAnnotations(xfdf, { replace: [window.Core.Annotations.TextMarkupAnnotation] });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './OverlayItem.scss';\nimport classNames from 'classnames';\n\nclass OverlayItem extends React.PureComponent {\n  static propTypes = {\n    onClick: PropTypes.func,\n    buttonName: PropTypes.string,\n    role: PropTypes.string,\n    selected: PropTypes.bool\n  }\n\n  render() {\n    const { buttonName, role, selected } = this.props;\n    return (\n      <button className={classNames({ OverlayItem: true, selected })} onClick={this.props.onClick} aria-label={buttonName} role={role}>\n        <div className=\"ButtonText\">\n          { buttonName }\n        </div>\n      </button>\n    );\n  }\n}\n\nexport default OverlayItem;\n","import OverlayItem from './OverlayItem';\n\nexport default OverlayItem;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport OverlayItem from '../OverlayItem';\nimport ToolButton from '../ToolButton';\nimport Button from 'components/Button';\nimport './ZoomOverlay.scss';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  zoomList: PropTypes.arrayOf(PropTypes.number).isRequired,\n  currentZoomLevel: PropTypes.number.isRequired,\n  isReaderMode: PropTypes.bool.isRequired,\n  isMarqueeZoomActive: PropTypes.bool.isRequired,\n  onClickZoomLevelOption: PropTypes.func.isRequired,\n  onClickMarqueeZoom: PropTypes.func.isRequired,\n  fitToWidth: PropTypes.func.isRequired,\n  fitToPage: PropTypes.func.isRequired,\n  isMarqueeToolButtonDisabled: PropTypes.bool\n};\n\nfunction ZoomOverlay(props) {\n  const [t] = useTranslation();\n\n  const { zoomList, currentZoomLevel, isReaderMode, isMarqueeZoomActive, fitToWidth, fitToPage, onClickZoomLevelOption, onClickMarqueeZoom, isMarqueeToolButtonDisabled } = props;\n\n  return (\n    <>\n      <Button\n        className=\"ZoomItem\"\n        img=\"icon-header-zoom-fit-to-width\"\n        label={t('action.fitToWidth')}\n        ariaLabel={t('action.fitToWidth')}\n        role=\"option\"\n        onClick={fitToWidth}\n      />\n      {!isReaderMode && (\n        <Button\n          className=\"ZoomItem\"\n          img=\"icon-header-zoom-fit-to-page\"\n          label={t('action.fitToPage')}\n          ariaLabel={t('action.fitToPage')}\n          role=\"option\"\n          onClick={fitToPage}\n        />\n      )}\n      <div className=\"divider\" />\n      {zoomList.map((zoomValue, i) => (\n        <OverlayItem key={i} onClick={() => onClickZoomLevelOption(zoomValue)} buttonName={`${zoomValue * 100}%`} selected={currentZoomLevel === zoomValue} role=\"option\" />\n      ))}\n      {!isReaderMode && (\n        <>\n          {!isMarqueeToolButtonDisabled && (\n            <div className=\"dividerSmall\" />\n          )}\n          <div onClick={() => onClickMarqueeZoom()}>\n            <ToolButton\n              className={classNames({ ZoomItem: true, selected: isMarqueeZoomActive })}\n              role=\"option\"\n              toolName=\"MarqueeZoomTool\"\n              label={t('tool.Marquee')}\n              img=\"icon-header-zoom-marquee\"\n            />\n          </div>\n        </>\n      )}\n    </>\n  );\n}\n\nZoomOverlay.propTypes = propTypes;\n\nexport default ZoomOverlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from 'components/Icon';\n\nimport './SignatureIcon.scss';\n\nconst propTypes = {\n  badge: PropTypes.string,\n  size: PropTypes.string,\n};\n\nconst SignatureIcon = ({ badge, size = 'medium' }) => (\n  <div className=\"signature-icon\">\n    {badge && <Icon glyph={badge} className={`badge ${size}`} />}\n  </div>\n);\n\nSignatureIcon.propTypes = propTypes;\n\nexport default SignatureIcon;\n","import SignatureIcon from './SignatureIcon';\n\nexport default SignatureIcon;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Icon from 'components/Icon';\nimport './Selector.scss';\n\nconst propTypes = {\n  className: PropTypes.string,\n  items: PropTypes.arrayOf(PropTypes.string).isRequired,\n  selectedItem: PropTypes.string,\n  onItemSelected: PropTypes.func.isRequired,\n  placeHolder: PropTypes.string,\n  selectedItemStyle: PropTypes.object,\n};\n\nconst Selector = ({ className, items = [], selectedItem = '', onItemSelected, placeHolder, selectedItemStyle }) => {\n  return (\n    <div className={classNames({\n      customSelector: true,\n      [className]: !!className,\n    })}>\n      <button className=\"customSelector__selectedItem\" style={selectedItemStyle}>\n        {!selectedItem && placeHolder ? placeHolder : selectedItem}\n        <Icon className=\"down-arrow\" glyph={'icon-chevron-down'} />\n      </button>\n      <ul>\n        <li>\n          <div style={selectedItemStyle}>{!selectedItem && placeHolder ? placeHolder : selectedItem}</div>\n          <Icon className=\"up-arrow\" glyph={'icon-chevron-up'} />\n        </li>\n        {items.map((value, i) => (\n          <li key={value + i}>\n            <button\n              className={classNames({\n                options: true,\n                optionSelected: selectedItem === value,\n              })}\n              onMouseDown={() => onItemSelected(value)}\n            >\n              {value}\n            </button>\n          </li>\n        ))}\n      </ul>\n    </div>\n  );\n};\n\nSelector.propTypes = propTypes;\n\nexport default Selector;\n","import Selector from './Selector';\n\nexport default Selector;","/**\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 */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","import { createContext } from 'react';\n/**\n * Create the React Context\n */\n\nexport var DndContext = createContext({\n  dragDropManager: undefined\n});","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return un$ToFixed(0.00008, 3) !== '0.000' ||\n    un$ToFixed(0.9, 0) !== '1' ||\n    un$ToFixed(1.255, 2) !== '1.25' ||\n    un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number != number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n","import { useContext } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../core';\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nexport function useDragDropManager() {\n  var _useContext = useContext(DndContext),\n      dragDropManager = _useContext.dragDropManager;\n\n  invariant(dragDropManager != null, 'Expected drag drop context');\n  return dragDropManager;\n}","import { useLayoutEffect, useEffect } from 'react'; // suppress the useLayoutEffect warning on server side.\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n","import React, { useState } from 'react';\nimport core from 'core';\nimport FilePicker from 'components/FilePicker';\n\nconst acceptFormats = window.Core.SupportedFileFormats.CLIENT.map((format) => `.${format}`,).join(', ');\n\nconst FilePickerPanel = ({ onFileProcessed, shouldShowIcon }) => {\n  const [errorMessage, setErrorMessage] = useState('');\n\n  const onChange = (files) => {\n    onFileProcessed(files[0]);\n  };\n\n  const onDrop = async (files) => {\n    let processedFile = files[0];\n\n    if (files.length > 1) {\n      processedFile = await mergeDocuments(files);\n    }\n\n    onFileProcessed(processedFile);\n  };\n\n  // recursive function with promise for merging files\n  // could maybe live in a helper file\n  async function mergeDocuments(sourceArray, nextCount = 1, document = null) {\n    // eslint-disable-next-line no-async-promise-executor\n    return new Promise(async (resolve) => {\n      if (!document) {\n        document = await core.createDocument(sourceArray[0]);\n      }\n      const newDocument = await core.createDocument(sourceArray[nextCount]);\n      const newDocumentPageCount = newDocument.getPageCount();\n      const pages = Array.from({ length: newDocumentPageCount }, (v, k) => k + 1);\n      const pageIndexToInsert = document.getPageCount() + 1;\n\n      document.insertPages(newDocument, pages, pageIndexToInsert).then(() => {\n        resolve({\n          next: sourceArray.length - 1 > nextCount,\n          document,\n        });\n      });\n    }).then((response) => {\n      return response.next ?\n        mergeDocuments(sourceArray, nextCount + 1, response.document) :\n        response.document;\n    }).catch((error) => {\n      setErrorMessage(error);\n    });\n  }\n\n  return (\n    <FilePicker\n      onChange={onChange}\n      onDrop={onDrop}\n      shouldShowIcon={shouldShowIcon}\n      acceptFormats={acceptFormats}\n      allowMultiple={false}\n      errorMessage={errorMessage}\n    />\n  );\n};\n\nexport default FilePickerPanel;\n","import FilePickerPanel from './FilePickerPanel';\n\nexport default FilePickerPanel;","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Header.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\n\nimport './NoteTextPreview.scss';\n\nfunction NoteTextPreview(props) {\n  /* This replace is to remove the break line that the React Quill component add into the text */\n  const text = props.children.replace(/\\n$/, '');\n  const {\n    panelWidth,\n    linesToBreak,\n    renderRichText,\n    richTextStyle,\n    resize,\n    style,\n    /* If text being previewed is a comment it gets a darker font color */\n    comment = false\n  } = props;\n  const [expanded, setExpand] = useState(false);\n  const [previewElementWidth, setPreviewWidth] = useState(null);\n  const [charsPerLine, setCharsperLine] = useState(null);\n  const [showPrompt, setShowPrompt] = useState(false);\n  const ref = React.useRef(null);// Must import this way in order to mock it properly\n  const { t } = useTranslation();\n\n  const onClickHandler = (event) => {\n    event.stopPropagation();\n    setExpand(!expanded);\n    resize && resize();\n  };\n\n  const textToDisplay = expanded ? text : text.substring(0, charsPerLine * linesToBreak);\n  const prompt = expanded ? t('action.showLess') : t('action.showMore');\n  const noteTextPreviewClass = classNames('note-text-preview', { 'preview-comment': comment });\n\n  useEffect(() => {\n    const textNodeWidth = ref.current.clientWidth;\n    setPreviewWidth(textNodeWidth);\n  }, [panelWidth]);\n\n  // useLayoutEffect to avoid a flicker before we get the final text prop\n  useLayoutEffect(() => {\n    function getTextWidth(text) {\n      const canvas = document.createElement('canvas');\n      const context = canvas.getContext('2d');\n      context.font = '13px sans-serif';\n\n      return context.measureText(text).width;\n    }\n\n    const textWidth = getTextWidth(text);\n    const averageCharWidth = textWidth / text.length;\n    const charsPerLine = Math.floor(previewElementWidth / averageCharWidth);\n    setCharsperLine(charsPerLine);\n\n    const totalLines = textWidth / previewElementWidth;\n    setShowPrompt(totalLines > linesToBreak);\n  }, [text, previewElementWidth]);\n\n  return (\n    <div className={noteTextPreviewClass} ref={ref} style={style}>\n      {renderRichText && richTextStyle ? renderRichText(textToDisplay, richTextStyle, 0) : textToDisplay} {showPrompt && <a className=\"note-text-preview-prompt\" onClick={onClickHandler}>{prompt}</a>}\n    </div>\n  );\n}\n\nexport default NoteTextPreview;","import fireEvent from './fireEvent';\nimport Events from 'constants/events';\nimport isFullscreen from './isFullscreen';\n\nexport default () => {\n  if (isFullscreen()) {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: false });\n  } else {\n    const docElm = document.documentElement;\n    if (docElm.requestFullscreen) {\n      docElm.requestFullscreen();\n    } else if (docElm.msRequestFullscreen) {\n      docElm.msRequestFullscreen();\n    } else if (docElm.mozRequestFullScreen) {\n      docElm.mozRequestFullScreen();\n    } else if (docElm.webkitRequestFullScreen) {\n      docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);\n      setTimeout(() => {\n        if (!document.webkitCurrentFullScreenElement) {\n          docElm.webkitRequestFullScreen();\n        }\n      }, 200);\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: true });\n  }\n};\n","import React from 'react';\nimport { NonceProvider } from 'react-select';\nimport createCache from '@emotion/cache';\nimport getRootNode from 'helpers/getRootNode';\n\nclass EmotionNonceProvider extends NonceProvider {\n  createEmotionCache = (nonce) => {\n    return createCache({ nonce, container: this.props.container });\n  };\n}\n\nconst ReactSelectWebComponentProvider = ({ children }) => (\n  window.isApryseWebViewerWebComponent ?\n    <EmotionNonceProvider container={getRootNode()}>\n      {children}\n    </EmotionNonceProvider>\n    : children\n);\n\nexport default ReactSelectWebComponentProvider;","import ReactSelectWebComponentProvider from './ReactSelectWebComponentProvider';\n\nexport default ReactSelectWebComponentProvider;","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (String(name).slice(0, 7) === 'Symbol(') {\n    name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    defineProperty(value, 'name', { value: name, configurable: true });\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  if (options && hasOwn(options, 'constructor') && options.constructor) {\n    if (DESCRIPTORS) try {\n      defineProperty(value, 'prototype', { writable: false });\n    } catch (error) { /* empty */ }\n  } else value.prototype = undefined;\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\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) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\n/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar 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;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\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') 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') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n  return MSIE ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n    return scheduler(boundArgs ? function () {\n      apply(fn, this, args);\n    } : fn, timeout);\n  } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n  // `setTimeout` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n  setTimeout: wrap(global.setTimeout),\n  // `setInterval` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n  setInterval: wrap(global.setInterval)\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, 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","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es-x/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n","import getRootNode from 'helpers/getRootNode';\n\nexport default () => {\n  getRootNode().querySelector('#file-picker')?.click();\n};\n","import core from 'core';\nimport getRootNode from 'helpers/getRootNode';\n\nexport default (activeDocumentViewerKey = 1) => {\n  // The copyText function should works for 2 cases:\n  // 1. User copies from the side panel (window.getSelection())\n  // 2. User copies text from the document (core.getSelectedText())\n  // We manually to clear the value of #copy-textarea, and this will reset window.getSelection().toString() to \"\"\n  getRootNode().querySelector('#copy-textarea').value = '';\n  if (window.getSelection()?.toString()) {\n    // if we are selecting some text in the UI (i.e. text in note panel) just let it do the normal behaviour\n    return;\n  }\n\n  if (window.clipboardData) {\n    // this is for IE\n    window.clipboardData.setData('Text', core.getSelectedText(activeDocumentViewerKey));\n  } else if (navigator?.clipboard?.writeText) {\n    navigator.clipboard.writeText(core.getSelectedText(activeDocumentViewerKey));\n  } else {\n    const textarea = getRootNode().querySelector('#copy-textarea');\n    textarea.value = core.getSelectedText(activeDocumentViewerKey);\n    textarea.select();\n    textarea.setSelectionRange(0, 99999); // this is necessary for iOS\n    textarea.focus();\n    try {\n      document.execCommand('copy');\n      textarea.blur();\n    } catch (e) {\n      console.error(`Copy is not supported by browser. ${e}`);\n    }\n  }\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = n$ParseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","// eslint-disable-next-line es-x/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) splice(entries, index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, noTargetGet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, noTargetGet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPalette.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import React, { useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport Icon from 'components/Icon';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport './ColorPalettePicker.scss';\r\nimport '../ColorPalette/ColorPalette.scss';\r\n\r\nconst ColorPalettePicker = ({\r\n  color,\r\n  customColors = [],\r\n  getHexColor,\r\n  openColorPicker,\r\n  handleColorOnClick,\r\n  openDeleteModal,\r\n  colorToBeDeleted,\r\n  setColorToBeDeleted,\r\n  enableEdit,\r\n  disableTitle = false,\r\n  colorsAreHex = false,\r\n  colorsToIgnore\r\n}) => {\r\n  useEffect(() => {\r\n    if (!customColors.includes(colorsAreHex ? color : getHexColor(color))) {\r\n      setColorToBeDeleted('');\r\n    } else {\r\n      setColorToBeDeleted(colorsAreHex ? color : getHexColor(color));\r\n    }\r\n  }, [color]);\r\n\r\n  const [t] = useTranslation();\r\n\r\n  const handleAddColor = () => {\r\n    if (openColorPicker) {\r\n      openColorPicker(true);\r\n    }\r\n  };\r\n\r\n  if (colorsToIgnore) {\r\n    customColors = customColors.filter((color) => !colorsToIgnore.includes(color));\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"colorPicker\">\r\n        {!disableTitle && <div className=\"colorPickerController\">\r\n          <span>{t('annotation.custom')}</span>\r\n        </div>}\r\n        <div className=\"colorPickerColors ColorPalette\">\r\n          {customColors.map((bg, i) => (\r\n            <button\r\n              key={bg}\r\n              className=\"cell-container\"\r\n              onClick={() => handleColorOnClick(bg)}\r\n              aria-label={`${t('option.colorPalette.colorLabel')} ${i + 1}`}\r\n            >\r\n              <div\r\n                className={classNames({\r\n                  'cell-outer': true,\r\n                  active: colorsAreHex ? color?.toLowerCase() === bg.toLowerCase() :\r\n                      color?.toHexString?.()?.toLowerCase() === bg.toLowerCase(),\r\n                })}\r\n              >\r\n                <div\r\n                  className={classNames({\r\n                    cell: true,\r\n                    border: bg.toLowerCase() === '#ffffff' || bg === 'transparency',\r\n                  })}\r\n                  style={{ backgroundColor: bg }}\r\n                >\r\n                  {bg === 'transparency' && undefined}\r\n                </div>\r\n              </div>\r\n            </button>\r\n          ),\r\n          )}\r\n          {enableEdit && (\r\n            <button className=\"cell-container\">\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\" id=\"addCustomColor\" onClick={handleAddColor}>\r\n                  <Icon glyph=\"icon-header-zoom-in-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n          {enableEdit && customColors.length > 0 && (\r\n            <button\r\n              className=\"cell-container\"\r\n              id=\"removeCustomColor\"\r\n              disabled={!colorToBeDeleted}\r\n              onClick={openDeleteModal}\r\n            >\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\">\r\n                  <Icon glyph=\"icon-delete-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default ColorPalettePicker;\r\n","var isArray = require('./isArray');\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 */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SignatureStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n  var bounds = draggable.props.bounds;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  var node = findDOMNode(draggable);\n\n  if (typeof bounds === 'string') {\n    var ownerDocument = node.ownerDocument;\n    var ownerWindow = ownerDocument.defaultView;\n    var boundNode;\n\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n\n    var boundNodeEl\n    /*: HTMLElement*/\n    = boundNode; // for Flow, can't seem to refine correctly\n\n    var nodeStyle = ownerWindow.getComputedStyle(node);\n    var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  } // Keep x and y below right and bottom limits...\n\n\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n  var x = Math.round(pendingX / grid[0]) * grid[0];\n  var y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n  var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n  var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n  var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by <DraggableCore>'s events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n  var state = draggable.state;\n  var isStart = !(0, _shims.isNum)(state.lastX);\n  var node = findDOMNode(draggable);\n\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node: node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x: x,\n      y: y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node: node,\n      deltaX: x - state.lastX,\n      deltaY: y - state.lastY,\n      lastX: state.lastX,\n      lastY: state.lastY,\n      x: x,\n      y: y\n    };\n  }\n} // Create an data exposed by <Draggable>'s events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n  var scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n  var node = draggable.findDOMNode();\n\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n  var _console;\n\n  if (undefined) (_console = console).log.apply(_console, arguments);\n}","var emptyImage;\nexport function getEmptyImage() {\n  if (!emptyImage) {\n    emptyImage = new Image();\n    emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n  }\n\n  return emptyImage;\n}","function _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\nimport equal from 'fast-deep-equal';\nimport { useState, useCallback } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nexport function useCollector(monitor, collect, onUpdate) {\n  var _useState = useState(function () {\n    return collect(monitor);\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      collected = _useState2[0],\n      setCollected = _useState2[1];\n\n  var updateCollected = useCallback(function () {\n    var nextValue = collect(monitor); // This needs to be a deep-equality check because some monitor-collected values\n    // include XYCoord objects that may be equivalent, but do not have instance equality.\n\n    if (!equal(collected, nextValue)) {\n      setCollected(nextValue);\n\n      if (onUpdate) {\n        onUpdate();\n      }\n    }\n  }, [collected, monitor, onUpdate]); // update the collected properties after react renders.\n  // Note that the \"Dustbin Stress Test\" fails if this is not\n  // done when the component updates\n\n  useIsomorphicLayoutEffect(updateCollected);\n  return [collected, updateCollected];\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      pna.nextTick(emitErrorNT, this, err);\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      pna.nextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}","var createRange = require('./_createRange');\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 */\nvar range = createRange();\n\nmodule.exports = range;\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport type { Task } from './types.js'\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n//     var channel = new MessageChannel();\n//     channel.port1.onmessage = callback;\n//     return function requestCall() {\n//         channel.port2.postMessage(0);\n//     };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n//     return function requestCall() {\n//         setImmediate(callback);\n//     };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import type { Task } from './types.js'\nimport { RawTask } from './RawTask.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import '@babel/runtime/helpers/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport '@babel/runtime/helpers/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 React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport '@babel/runtime/helpers/typeof';\nimport { C as cleanValue } from '../../dist/index-75b02bac.browser.esm.js';\nimport { S as Select } from '../../dist/Select-e1cf49ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from '../../dist/stateManager-2f2b6f5b.browser.esm.js';\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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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\nvar compareOption = function compareOption() {\n  var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var option = arguments.length > 1 ? arguments[1] : undefined;\n  var candidate = String(inputValue).toLowerCase();\n  var optionValue = String(option.value).toLowerCase();\n  var optionLabel = String(option.label).toLowerCase();\n  return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n  formatCreateLabel: function formatCreateLabel(inputValue) {\n    return \"Create \\\"\".concat(inputValue, \"\\\"\");\n  },\n  isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n    return !(!inputValue || selectValue.some(function (option) {\n      return compareOption(inputValue, option);\n    }) || selectOptions.some(function (option) {\n      return compareOption(inputValue, option);\n    }));\n  },\n  getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n    return {\n      label: optionLabel,\n      value: inputValue,\n      __isNew__: true\n    };\n  }\n};\nvar defaultProps = _objectSpread({\n  allowCreateWhileLoading: false,\n  createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(Creatable, _Component);\n\n    var _super = _createSuper(Creatable);\n\n    function Creatable(props) {\n      var _this;\n\n      _classCallCheck(this, Creatable);\n\n      _this = _super.call(this, props);\n      _this.select = void 0;\n\n      _this.onChange = function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            getNewOptionData = _this$props.getNewOptionData,\n            inputValue = _this$props.inputValue,\n            isMulti = _this$props.isMulti,\n            onChange = _this$props.onChange,\n            onCreateOption = _this$props.onCreateOption,\n            value = _this$props.value,\n            name = _this$props.name;\n\n        if (actionMeta.action !== 'select-option') {\n          return onChange(newValue, actionMeta);\n        }\n\n        var newOption = _this.state.newOption;\n        var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n        if (valueArray[valueArray.length - 1] === newOption) {\n          if (onCreateOption) onCreateOption(inputValue);else {\n            var newOptionData = getNewOptionData(inputValue, inputValue);\n            var newActionMeta = {\n              action: 'create-option',\n              name: name\n            };\n\n            if (isMulti) {\n              onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n            } else {\n              onChange(newOptionData, newActionMeta);\n            }\n          }\n          return;\n        }\n\n        onChange(newValue, actionMeta);\n      };\n\n      var options = props.options || [];\n      _this.state = {\n        newOption: undefined,\n        options: options\n      };\n      return _this;\n    }\n\n    _createClass(Creatable, [{\n      key: \"UNSAFE_componentWillReceiveProps\",\n      value: function UNSAFE_componentWillReceiveProps(nextProps) {\n        var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n            createOptionPosition = nextProps.createOptionPosition,\n            formatCreateLabel = nextProps.formatCreateLabel,\n            getNewOptionData = nextProps.getNewOptionData,\n            inputValue = nextProps.inputValue,\n            isLoading = nextProps.isLoading,\n            isValidNewOption = nextProps.isValidNewOption,\n            value = nextProps.value;\n        var options = nextProps.options || [];\n        var newOption = this.state.newOption;\n\n        if (isValidNewOption(inputValue, cleanValue(value), options)) {\n          newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n        } else {\n          newOption = undefined;\n        }\n\n        this.setState({\n          newOption: newOption,\n          options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n        });\n      }\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var options = this.state.options;\n        return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, this.props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          options: options,\n          onChange: this.onChange\n        }));\n      }\n    }]);\n\n    return Creatable;\n  }(Component), _class.defaultProps = defaultProps, _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nexport default Creatable;\nexport { defaultProps, makeCreatableSelect };\n","function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}\n\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentCropPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SnippingToolPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FormFieldIndicator.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./FloatingHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import core from 'core';\n\n// helper function to get all the link annotations that are grouped with the passed in annotation\nexport default (annotation) => {\n  const groupedLinks =\n    core.getAnnotationManager()\n      .getGroupAnnotations(annotation)\n      .filter((groupedAnnotation) => groupedAnnotation instanceof window.Core.Annotations.Link);\n  return groupedLinks;\n};\n","/**\n * Contains string enums for all layouts for WebViewer. They are used to dictate how pages are placed within the viewer.\n * @name UI.LayoutMode\n * @property {string} Single Only the current page will be visible.\n * @property {string} Continuous All pages are visible in one column.\n * @property {string} Facing Up to two pages will be visible.\n * @property {string} FacingContinuous All pages visible in two columns.\n * @property {string} FacingCover All pages visible in two columns, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @property {string} FacingCoverContinuous All pages visible, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const LayoutMode = instance.UI.LayoutMode;\n    instance.UI.setLayoutMode(LayoutMode.Single);\n  });\n */\n\nexport default {\n  Single: 'Single',\n  Continuous: 'Continuous',\n  Facing: 'Facing',\n  FacingContinuous: 'FacingContinuous',\n  FacingCover: 'CoverFacing',\n  FacingCoverContinuous: 'Cover',\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _picocolors = _interopRequireDefault(require(\"picocolors\"));\n\nvar _terminalHighlight = _interopRequireDefault(require(\"./terminal-highlight\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n *   postcss.parse('a{')\n * } catch (error) {\n *   if (error.name === 'CssSyntaxError') {\n *     error //=> CssSyntaxError\n *   }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */\nvar CssSyntaxError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(CssSyntaxError, _Error);\n\n  /**\n   * @param {string} message  Error message.\n   * @param {number} [line]   Source line of the error.\n   * @param {number} [column] Source column of the error.\n   * @param {string} [source] Source code of the broken file.\n   * @param {string} [file]   Absolute path to the broken file.\n   * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n   */\n  function CssSyntaxError(message, line, column, source, file, plugin) {\n    var _this;\n\n    _this = _Error.call(this, message) || this;\n    /**\n     * Always equal to `'CssSyntaxError'`. You should always check error type\n     * by `error.name === 'CssSyntaxError'`\n     * instead of `error instanceof CssSyntaxError`,\n     * because npm could have several PostCSS versions.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (error.name === 'CssSyntaxError') {\n     *   error //=> CssSyntaxError\n     * }\n     */\n\n    _this.name = 'CssSyntaxError';\n    /**\n     * Error message.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'Unclosed block'\n     */\n\n    _this.reason = message;\n\n    if (file) {\n      /**\n       * Absolute path to the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.file       //=> 'a.sass'\n       * error.input.file //=> 'a.css'\n       */\n      _this.file = file;\n    }\n\n    if (source) {\n      /**\n       * Source code of the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.source       //=> 'a { b {} }'\n       * error.input.column //=> 'a b { }'\n       */\n      _this.source = source;\n    }\n\n    if (plugin) {\n      /**\n       * Plugin name, if error came from plugin.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.plugin //=> 'postcss-vars'\n       */\n      _this.plugin = plugin;\n    }\n\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      /**\n       * Source line of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.line       //=> 2\n       * error.input.line //=> 4\n       */\n      _this.line = line;\n      /**\n       * Source column of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.column       //=> 1\n       * error.input.column //=> 4\n       */\n\n      _this.column = column;\n    }\n\n    _this.setMessage();\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(_assertThisInitialized(_this), CssSyntaxError);\n    }\n\n    return _this;\n  }\n\n  var _proto = CssSyntaxError.prototype;\n\n  _proto.setMessage = function setMessage() {\n    /**\n     * Full error text in the GNU error format\n     * with plugin, file, line and column.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'a.css:1:1: Unclosed block'\n     */\n    this.message = this.plugin ? this.plugin + ': ' : '';\n    this.message += this.file ? this.file : '<css input>';\n\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column;\n    }\n\n    this.message += ': ' + this.reason;\n  }\n  /**\n   * Returns a few lines of CSS source that caused the error.\n   *\n   * If the CSS has an input source map without `sourceContent`,\n   * this method will return an empty string.\n   *\n   * @param {boolean} [color] Whether arrow will be colored red by terminal\n   *                          color codes. By default, PostCSS will detect\n   *                          color support by `process.stdout.isTTY`\n   *                          and `process.env.NODE_DISABLE_COLORS`.\n   *\n   * @example\n   * error.showSourceCode() //=> \"  4 | }\n   *                        //      5 | a {\n   *                        //    > 6 |   bad\n   *                        //        |   ^\n   *                        //      7 | }\n   *                        //      8 | b {\"\n   *\n   * @return {string} Few lines of CSS source that caused the error.\n   */\n  ;\n\n  _proto.showSourceCode = function showSourceCode(color) {\n    var _this2 = this;\n\n    if (!this.source) return '';\n    var css = this.source;\n\n    if (_terminalHighlight.default) {\n      if (typeof color === 'undefined') color = _picocolors.default.isColorSupported;\n      if (color) css = (0, _terminalHighlight.default)(css);\n    }\n\n    var lines = css.split(/\\r?\\n/);\n    var start = Math.max(this.line - 3, 0);\n    var end = Math.min(this.line + 2, lines.length);\n    var maxWidth = String(end).length;\n\n    function mark(text) {\n      if (color && _picocolors.default.red) {\n        return _picocolors.default.red(_picocolors.default.bold(text));\n      }\n\n      return text;\n    }\n\n    function aside(text) {\n      if (color && _picocolors.default.gray) {\n        return _picocolors.default.gray(text);\n      }\n\n      return text;\n    }\n\n    return lines.slice(start, end).map(function (line, index) {\n      var number = start + 1 + index;\n      var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n\n      if (number === _this2.line) {\n        var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this2.column - 1).replace(/[^\\t]/g, ' ');\n        return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n      }\n\n      return ' ' + aside(gutter) + line;\n    }).join('\\n');\n  }\n  /**\n   * Returns error position, message and source code of the broken part.\n   *\n   * @example\n   * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n   *                  //    > 1 | a {\n   *                  //        | ^\"\n   *\n   * @return {string} Error position, message and source code.\n   */\n  ;\n\n  _proto.toString = function toString() {\n    var code = this.showSourceCode();\n\n    if (code) {\n      code = '\\n\\n' + code + '\\n';\n    }\n\n    return this.name + ': ' + this.message + code;\n  }\n  /**\n   * @memberof CssSyntaxError#\n   * @member {Input} input Input object with PostCSS internal information\n   *                       about input file. If input has source map\n   *                       from previous tool, PostCSS will use origin\n   *                       (for example, Sass) source. You can use this\n   *                       object to get PostCSS input source.\n   *\n   * @example\n   * error.input.file //=> 'a.css'\n   * error.file       //=> 'a.sass'\n   */\n  ;\n\n  return CssSyntaxError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar _default = CssSyntaxError;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0IiwicGljbyIsImlzQ29sb3JTdXBwb3J0ZWQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsInJlZCIsImJvbGQiLCJhc2lkZSIsImdyYXkiLCJzbGljZSIsIm1hcCIsImluZGV4IiwibnVtYmVyIiwiZ3V0dGVyIiwic3BhY2luZyIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEyQk1BLGM7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FB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QUNBLFVBQUlXLE1BQU0sS0FBSyxNQUFJLENBQUNuQyxJQUFwQixFQUEwQjtBQUN4QixZQUFJcUMsT0FBTyxHQUNUUCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBRCxDQUFMLEdBQ0F0QyxJQUFJLENBQUNnQyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQUksQ0FBQy9CLE1BQUwsR0FBYyxDQUE1QixFQUErQnFDLE9BQS9CLENBQXVDLFFBQXZDLEVBQWlELEdBQWpELENBRkY7QUFHQSxlQUFPWixJQUFJLENBQUMsR0FBRCxDQUFKLEdBQVlJLEtBQUssQ0FBQ00sTUFBRCxDQUFqQixHQUE0QnBDLElBQTVCLEdBQW1DLEtBQW5DLEdBQTJDcUMsT0FBM0MsR0FBcURYLElBQUksQ0FBQyxHQUFELENBQWhFO0FBQ0Q7O0FBQ0QsYUFBTyxNQUFNSSxLQUFLLENBQUNNLE1BQUQsQ0FBWCxHQUFzQnBDLElBQTdCO0FBQ0QsS0FaSSxFQWFKdUMsSUFiSSxDQWFDLElBYkQsQ0FBUDtBQWNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJQyxJQUFJLEdBQUcsS0FBSy9CLGNBQUwsRUFBWDs7QUFDQSxRQUFJK0IsSUFBSixFQUFVO0FBQ1JBLE1BQUFBLElBQUksR0FBRyxTQUFTQSxJQUFULEdBQWdCLElBQXZCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLcEMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MwQyxJQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztpQ0ExTTJCakMsSzs7ZUF3TmRWLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJ1xuXG5pbXBvcnQgdGVybWluYWxIaWdobGlnaHQgZnJvbSAnLi90ZXJtaW5hbC1oaWdobGlnaHQnXG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAqICAgICBlcnJvciAvLz0+IENzc1N5bnRheEVycm9yXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmFpc2luZyBlcnJvciBmcm9tIHBsdWdpblxuICogdGhyb3cgbm9kZS5lcnJvcignVW5rbm93biB2YXJpYWJsZScsIHsgcGx1Z2luOiAncG9zdGNzcy12YXJzJyB9KVxuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICBFcnJvciBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbmVdICAgU291cmNlIGxpbmUgb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2NvbHVtbl0gU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc291cmNlXSBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZV0gICBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwbHVnaW5dIFBvc3RDU1MgcGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAqL1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgbGluZSwgY29sdW1uLCBzb3VyY2UsIGZpbGUsIHBsdWdpbikge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG5cbiAgICAvKipcbiAgICAgKiBBbHdheXMgZXF1YWwgdG8gYCdDc3NTeW50YXhFcnJvcidgLiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayBlcnJvciB0eXBlXG4gICAgICogYnkgYGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcidgXG4gICAgICogaW5zdGVhZCBvZiBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsXG4gICAgICogYmVjYXVzZSBucG0gY291bGQgaGF2ZSBzZXZlcmFsIFBvc3RDU1MgdmVyc2lvbnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoZXJyb3IubmFtZSA9PT0gJ0Nzc1N5bnRheEVycm9yJykge1xuICAgICAqICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSAnQ3NzU3ludGF4RXJyb3InXG4gICAgLyoqXG4gICAgICogRXJyb3IgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlXG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgKi9cbiAgICAgIHRoaXMuZmlsZSA9IGZpbGVcbiAgICB9XG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3Iuc291cmNlICAgICAgIC8vPT4gJ2EgeyBiIHt9IH0nXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiAnYSBiIHsgfSdcbiAgICAgICAqL1xuICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2VcbiAgICB9XG4gICAgaWYgKHBsdWdpbikge1xuICAgICAgLyoqXG4gICAgICAgKiBQbHVnaW4gbmFtZSwgaWYgZXJyb3IgY2FtZSBmcm9tIHBsdWdpbi5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5wbHVnaW4gLy89PiAncG9zdGNzcy12YXJzJ1xuICAgICAgICovXG4gICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpblxuICAgIH1cbiAgICBpZiAodHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKipcbiAgICAgICAqIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gbGluZVxuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29sdW1uIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5jb2x1bW4gICAgICAgLy89PiAxXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uXG4gICAgfVxuXG4gICAgdGhpcy5zZXRNZXNzYWdlKClcblxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpXG4gICAgfVxuICB9XG5cbiAgc2V0TWVzc2FnZSAoKSB7XG4gICAgLyoqXG4gICAgICogRnVsbCBlcnJvciB0ZXh0IGluIHRoZSBHTlUgZXJyb3IgZm9ybWF0XG4gICAgICogd2l0aCBwbHVnaW4sIGZpbGUsIGxpbmUgYW5kIGNvbHVtbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnXG4gICAgdGhpcy5tZXNzYWdlICs9IHRoaXMuZmlsZSA/IHRoaXMuZmlsZSA6ICc8Y3NzIGlucHV0PidcbiAgICBpZiAodHlwZW9mIHRoaXMubGluZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtblxuICAgIH1cbiAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGZldyBsaW5lcyBvZiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvci5cbiAgICpcbiAgICogSWYgdGhlIENTUyBoYXMgYW4gaW5wdXQgc291cmNlIG1hcCB3aXRob3V0IGBzb3VyY2VDb250ZW50YCxcbiAgICogdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjb2xvcl0gV2hldGhlciBhcnJvdyB3aWxsIGJlIGNvbG9yZWQgcmVkIGJ5IHRlcm1pbmFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciBjb2Rlcy4gQnkgZGVmYXVsdCwgUG9zdENTUyB3aWxsIGRldGVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYHByb2Nlc3MuZW52Lk5PREVfRElTQUJMRV9DT0xPUlNgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBlcnJvci5zaG93U291cmNlQ29kZSgpIC8vPT4gXCIgIDQgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA1IHwgYSB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCAgIF5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIDcgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBGZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBzaG93U291cmNlQ29kZSAoY29sb3IpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlKSByZXR1cm4gJydcblxuICAgIGxldCBjc3MgPSB0aGlzLnNvdXJjZVxuICAgIGlmICh0ZXJtaW5hbEhpZ2hsaWdodCkge1xuICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcpIGNvbG9yID0gcGljby5pc0NvbG9yU3VwcG9ydGVkXG4gICAgICBpZiAoY29sb3IpIGNzcyA9IHRlcm1pbmFsSGlnaGxpZ2h0KGNzcylcbiAgICB9XG5cbiAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKVxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KHRoaXMubGluZSAtIDMsIDApXG4gICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aClcblxuICAgIGxldCBtYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aFxuXG4gICAgZnVuY3Rpb24gbWFyayAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIHBpY28ucmVkKSB7XG4gICAgICAgIHJldHVybiBwaWNvLnJlZChwaWNvLmJvbGQodGV4dCkpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dFxuICAgIH1cbiAgICBmdW5jdGlvbiBhc2lkZSAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIHBpY28uZ3JheSkge1xuICAgICAgICByZXR1cm4gcGljby5ncmF5KHRleHQpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dFxuICAgIH1cblxuICAgIHJldHVybiBsaW5lc1xuICAgICAgLnNsaWNlKHN0YXJ0LCBlbmQpXG4gICAgICAubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXhcbiAgICAgICAgbGV0IGd1dHRlciA9ICcgJyArICgnICcgKyBudW1iZXIpLnNsaWNlKC1tYXhXaWR0aCkgKyAnIHwgJ1xuICAgICAgICBpZiAobnVtYmVyID09PSB0aGlzLmxpbmUpIHtcbiAgICAgICAgICBsZXQgc3BhY2luZyA9XG4gICAgICAgICAgICBhc2lkZShndXR0ZXIucmVwbGFjZSgvXFxkL2csICcgJykpICtcbiAgICAgICAgICAgIGxpbmUuc2xpY2UoMCwgdGhpcy5jb2x1bW4gLSAxKS5yZXBsYWNlKC9bXlxcdF0vZywgJyAnKVxuICAgICAgICAgIHJldHVybiBtYXJrKCc+JykgKyBhc2lkZShndXR0ZXIpICsgbGluZSArICdcXG4gJyArIHNwYWNpbmcgKyBtYXJrKCdeJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyAnICsgYXNpZGUoZ3V0dGVyKSArIGxpbmVcbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuJylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICA+IDEgfCBhIHtcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCBeXCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBFcnJvciBwb3NpdGlvbiwgbWVzc2FnZSBhbmQgc291cmNlIGNvZGUuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgbGV0IGNvZGUgPSB0aGlzLnNob3dTb3VyY2VDb2RlKClcbiAgICBpZiAoY29kZSkge1xuICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDc3NTeW50YXhFcnJvciNcbiAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IElucHV0IG9iamVjdCB3aXRoIFBvc3RDU1MgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHByZXZpb3VzIHRvb2wsIFBvc3RDU1Mgd2lsbCB1c2Ugb3JpZ2luXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpIHNvdXJjZS4gWW91IGNhbiB1c2UgdGhpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvclxuIl0sImZpbGUiOiJjc3Mtc3ludGF4LWVycm9yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar DEFAULT_RAW = {\n  colon: ': ',\n  indent: '    ',\n  beforeDecl: '\\n',\n  beforeRule: '\\n',\n  beforeOpen: ' ',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  after: '\\n',\n  emptyBody: '',\n  commentLeft: ' ',\n  commentRight: ' ',\n  semicolon: false\n};\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = /*#__PURE__*/function () {\n  function Stringifier(builder) {\n    this.builder = builder;\n  }\n\n  var _proto = Stringifier.prototype;\n\n  _proto.stringify = function stringify(node, semicolon) {\n    this[node.type](node, semicolon);\n  };\n\n  _proto.root = function root(node) {\n    this.body(node);\n    if (node.raws.after) this.builder(node.raws.after);\n  };\n\n  _proto.comment = function comment(node) {\n    var left = this.raw(node, 'left', 'commentLeft');\n    var right = this.raw(node, 'right', 'commentRight');\n    this.builder('/*' + left + node.text + right + '*/', node);\n  };\n\n  _proto.decl = function decl(node, semicolon) {\n    var between = this.raw(node, 'between', 'colon');\n    var string = node.prop + between + this.rawValue(node, 'value');\n\n    if (node.important) {\n      string += node.raws.important || ' !important';\n    }\n\n    if (semicolon) string += ';';\n    this.builder(string, node);\n  };\n\n  _proto.rule = function rule(node) {\n    this.block(node, this.rawValue(node, 'selector'));\n\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end');\n    }\n  };\n\n  _proto.atrule = function atrule(node, semicolon) {\n    var name = '@' + node.name;\n    var params = node.params ? this.rawValue(node, 'params') : '';\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName;\n    } else if (params) {\n      name += ' ';\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params);\n    } else {\n      var end = (node.raws.between || '') + (semicolon ? ';' : '');\n      this.builder(name + params + end, node);\n    }\n  };\n\n  _proto.body = function body(node) {\n    var last = node.nodes.length - 1;\n\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break;\n      last -= 1;\n    }\n\n    var semicolon = this.raw(node, 'semicolon');\n\n    for (var i = 0; i < node.nodes.length; i++) {\n      var child = node.nodes[i];\n      var before = this.raw(child, 'before');\n      if (before) this.builder(before);\n      this.stringify(child, last !== i || semicolon);\n    }\n  };\n\n  _proto.block = function block(node, start) {\n    var between = this.raw(node, 'between', 'beforeOpen');\n    this.builder(start + between + '{', node, 'start');\n    var after;\n\n    if (node.nodes && node.nodes.length) {\n      this.body(node);\n      after = this.raw(node, 'after');\n    } else {\n      after = this.raw(node, 'after', 'emptyBody');\n    }\n\n    if (after) this.builder(after);\n    this.builder('}', node, 'end');\n  };\n\n  _proto.raw = function raw(node, own, detect) {\n    var value;\n    if (!detect) detect = own; // Already had\n\n    if (own) {\n      value = node.raws[own];\n      if (typeof value !== 'undefined') return value;\n    }\n\n    var parent = node.parent; // Hack for first rule in CSS\n\n    if (detect === 'before') {\n      if (!parent || parent.type === 'root' && parent.first === node) {\n        return '';\n      }\n    } // Floating child without parent\n\n\n    if (!parent) return DEFAULT_RAW[detect]; // Detect style by other nodes\n\n    var root = node.root();\n    if (!root.rawCache) root.rawCache = {};\n\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect];\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect);\n    } else {\n      var method = 'raw' + capitalize(detect);\n\n      if (this[method]) {\n        value = this[method](root, node);\n      } else {\n        root.walk(function (i) {\n          value = i.raws[own];\n          if (typeof value !== 'undefined') return false;\n        });\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect];\n    root.rawCache[detect] = value;\n    return value;\n  };\n\n  _proto.rawSemicolon = function rawSemicolon(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawEmptyBody = function rawEmptyBody(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawIndent = function rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent;\n    var value;\n    root.walk(function (i) {\n      var p = i.parent;\n\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          var parts = i.raws.before.split('\\n');\n          value = parts[parts.length - 1];\n          value = value.replace(/[^\\s]/g, '');\n          return false;\n        }\n      }\n    });\n    return value;\n  };\n\n  _proto.rawBeforeComment = function rawBeforeComment(root, node) {\n    var value;\n    root.walkComments(function (i) {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before;\n\n        if (value.indexOf('\\n') !== -1) {\n          value = value.replace(/[^\\n]+$/, '');\n        }\n\n        return false;\n      }\n    });\n\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl');\n    } else if (value) {\n      value = value.replace(/[^\\s]/g, '');\n    }\n\n    return value;\n  };\n\n  _proto.rawBeforeDecl = function rawBeforeDecl(root, node) {\n    var value;\n    root.walkDecls(function (i) {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before;\n\n        if (value.indexOf('\\n') !== -1) {\n          value = value.replace(/[^\\n]+$/, '');\n        }\n\n        return false;\n      }\n    });\n\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule');\n    } else if (value) {\n      value = value.replace(/[^\\s]/g, '');\n    }\n\n    return value;\n  };\n\n  _proto.rawBeforeRule = function rawBeforeRule(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before;\n\n          if (value.indexOf('\\n') !== -1) {\n            value = value.replace(/[^\\n]+$/, '');\n          }\n\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/[^\\s]/g, '');\n    return value;\n  };\n\n  _proto.rawBeforeClose = function rawBeforeClose(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after;\n\n          if (value.indexOf('\\n') !== -1) {\n            value = value.replace(/[^\\n]+$/, '');\n          }\n\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/[^\\s]/g, '');\n    return value;\n  };\n\n  _proto.rawBeforeOpen = function rawBeforeOpen(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.type !== 'decl') {\n        value = i.raws.between;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawColon = function rawColon(root) {\n    var value;\n    root.walkDecls(function (i) {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '');\n        return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.beforeAfter = function beforeAfter(node, detect) {\n    var value;\n\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl');\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment');\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule');\n    } else {\n      value = this.raw(node, null, 'beforeClose');\n    }\n\n    var buf = node.parent;\n    var depth = 0;\n\n    while (buf && buf.type !== 'root') {\n      depth += 1;\n      buf = buf.parent;\n    }\n\n    if (value.indexOf('\\n') !== -1) {\n      var indent = this.raw(node, null, 'indent');\n\n      if (indent.length) {\n        for (var step = 0; step < depth; step++) {\n          value += indent;\n        }\n      }\n    }\n\n    return value;\n  };\n\n  _proto.rawValue = function rawValue(node, prop) {\n    var value = node[prop];\n    var raw = node.raws[prop];\n\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n\n    return value;\n  };\n\n  return Stringifier;\n}();\n\nvar _default = Stringifier;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsInNlbWljb2xvbiIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHO0FBQ2xCQyxFQUFB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QUFDRDs7QUFFRCxRQUFJd0QsR0FBRyxHQUFHeEQsSUFBSSxDQUFDa0MsTUFBZjtBQUNBLFFBQUl1QixLQUFLLEdBQUcsQ0FBWjs7QUFDQSxXQUFPRCxHQUFHLElBQUlBLEdBQUcsQ0FBQ3ZELElBQUosS0FBYSxNQUEzQixFQUFtQztBQUNqQ3dELE1BQUFBLEtBQUssSUFBSSxDQUFUO0FBQ0FELE1BQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDdEIsTUFBVjtBQUNEOztBQUVELFFBQUlELEtBQUssQ0FBQ2dCLE9BQU4sQ0FBYyxJQUFkLE1BQXdCLENBQUMsQ0FBN0IsRUFBZ0M7QUFDOUIsVUFBSW5FLE1BQU0sR0FBRyxLQUFLeUIsR0FBTCxDQUFTUCxJQUFULEVBQWUsSUFBZixFQUFxQixRQUFyQixDQUFiOztBQUNBLFVBQUlsQixNQUFNLENBQUM0QyxNQUFYLEVBQW1CO0FBQ2pCLGFBQUssSUFBSWdDLElBQUksR0FBRyxDQUFoQixFQUFtQkEsSUFBSSxHQUFHRCxLQUExQixFQUFpQ0MsSUFBSSxFQUFyQztBQUF5Q3pCLFVBQUFBLEtBQUssSUFBSW5ELE1BQVQ7QUFBekM7QUFDRDtBQUNGOztBQUVELFdBQU9tRCxLQUFQO0FBQ0QsRzs7U0FFRG5CLFEsR0FBQSxrQkFBVWQsSUFBVixFQUFnQmEsSUFBaEIsRUFBc0I7QUFDcEIsUUFBSW9CLEtBQUssR0FBR2pDLElBQUksQ0FBQ2EsSUFBRCxDQUFoQjtBQUNBLFFBQUlOLEdBQUcsR0FBR1AsSUFBSSxDQUFDSSxJQUFMLENBQVVTLElBQVYsQ0FBVjs7QUFDQSxRQUFJTixHQUFHLElBQUlBLEdBQUcsQ0FBQzBCLEtBQUosS0FBY0EsS0FBekIsRUFBZ0M7QUFDOUIsYUFBTzFCLEdBQUcsQ0FBQ0EsR0FBWDtBQUNEOztBQUVELFdBQU8wQixLQUFQO0FBQ0QsRzs7Ozs7ZUFHWXBDLFciLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBERUZBVUxUX1JBVyA9IHtcbiAgY29sb246ICc6ICcsXG4gIGluZGVudDogJyAgICAnLFxuICBiZWZvcmVEZWNsOiAnXFxuJyxcbiAgYmVmb3JlUnVsZTogJ1xcbicsXG4gIGJlZm9yZU9wZW46ICcgJyxcbiAgYmVmb3JlQ2xvc2U6ICdcXG4nLFxuICBiZWZvcmVDb21tZW50OiAnXFxuJyxcbiAgYWZ0ZXI6ICdcXG4nLFxuICBlbXB0eUJvZHk6ICcnLFxuICBjb21tZW50TGVmdDogJyAnLFxuICBjb21tZW50UmlnaHQ6ICcgJyxcbiAgc2VtaWNvbG9uOiBmYWxzZVxufVxuXG5mdW5jdGlvbiBjYXBpdGFsaXplIChzdHIpIHtcbiAgcmV0dXJuIHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59XG5cbmNsYXNzIFN0cmluZ2lmaWVyIHtcbiAgY29uc3RydWN0b3IgKGJ1aWxkZXIpIHtcbiAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyXG4gIH1cblxuICBzdHJpbmdpZnkgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pXG4gIH1cblxuICByb290IChub2RlKSB7XG4gICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgaWYgKG5vZGUucmF3cy5hZnRlcikgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcilcbiAgfVxuXG4gIGNvbW1lbnQgKG5vZGUpIHtcbiAgICBsZXQgbGVmdCA9IHRoaXMucmF3KG5vZGUsICdsZWZ0JywgJ2NvbW1lbnRMZWZ0JylcbiAgICBsZXQgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0JylcbiAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpXG4gIH1cblxuICBkZWNsIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2NvbG9uJylcbiAgICBsZXQgc3RyaW5nID0gbm9kZS5wcm9wICsgYmV0d2VlbiArIHRoaXMucmF3VmFsdWUobm9kZSwgJ3ZhbHVlJylcblxuICAgIGlmIChub2RlLmltcG9ydGFudCkge1xuICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50J1xuICAgIH1cblxuICAgIGlmIChzZW1pY29sb24pIHN0cmluZyArPSAnOydcbiAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKVxuICB9XG5cbiAgcnVsZSAobm9kZSkge1xuICAgIHRoaXMuYmxvY2sobm9kZSwgdGhpcy5yYXdWYWx1ZShub2RlLCAnc2VsZWN0b3InKSlcbiAgICBpZiAobm9kZS5yYXdzLm93blNlbWljb2xvbikge1xuICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5vd25TZW1pY29sb24sIG5vZGUsICdlbmQnKVxuICAgIH1cbiAgfVxuXG4gIGF0cnVsZSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgbGV0IG5hbWUgPSAnQCcgKyBub2RlLm5hbWVcbiAgICBsZXQgcGFyYW1zID0gbm9kZS5wYXJhbXMgPyB0aGlzLnJhd1ZhbHVlKG5vZGUsICdwYXJhbXMnKSA6ICcnXG5cbiAgICBpZiAodHlwZW9mIG5vZGUucmF3cy5hZnRlck5hbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBuYW1lICs9IG5vZGUucmF3cy5hZnRlck5hbWVcbiAgICB9IGVsc2UgaWYgKHBhcmFtcykge1xuICAgICAgbmFtZSArPSAnICdcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgdGhpcy5ibG9jayhub2RlLCBuYW1lICsgcGFyYW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW5kID0gKG5vZGUucmF3cy5iZXR3ZWVuIHx8ICcnKSArIChzZW1pY29sb24gPyAnOycgOiAnJylcbiAgICAgIHRoaXMuYnVpbGRlcihuYW1lICsgcGFyYW1zICsgZW5kLCBub2RlKVxuICAgIH1cbiAgfVxuXG4gIGJvZHkgKG5vZGUpIHtcbiAgICBsZXQgbGFzdCA9IG5vZGUubm9kZXMubGVuZ3RoIC0gMVxuICAgIHdoaWxlIChsYXN0ID4gMCkge1xuICAgICAgaWYgKG5vZGUubm9kZXNbbGFzdF0udHlwZSAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgbGFzdCAtPSAxXG4gICAgfVxuXG4gICAgbGV0IHNlbWljb2xvbiA9IHRoaXMucmF3KG5vZGUsICdzZW1pY29sb24nKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNoaWxkID0gbm9kZS5ub2Rlc1tpXVxuICAgICAgbGV0IGJlZm9yZSA9IHRoaXMucmF3KGNoaWxkLCAnYmVmb3JlJylcbiAgICAgIGlmIChiZWZvcmUpIHRoaXMuYnVpbGRlcihiZWZvcmUpXG4gICAgICB0aGlzLnN0cmluZ2lmeShjaGlsZCwgbGFzdCAhPT0gaSB8fCBzZW1pY29sb24pXG4gICAgfVxuICB9XG5cbiAgYmxvY2sgKG5vZGUsIHN0YXJ0KSB7XG4gICAgbGV0IGJldHdlZW4gPSB0aGlzLnJhdyhub2RlLCAnYmV0d2VlbicsICdiZWZvcmVPcGVuJylcbiAgICB0aGlzLmJ1aWxkZXIoc3RhcnQgKyBiZXR3ZWVuICsgJ3snLCBub2RlLCAnc3RhcnQnKVxuXG4gICAgbGV0IGFmdGVyXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYm9keShub2RlKVxuICAgICAgYWZ0ZXIgPSB0aGlzLnJhdyhub2RlLCAnYWZ0ZXInKVxuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKVxuICAgIH1cblxuICAgIGlmIChhZnRlcikgdGhpcy5idWlsZGVyKGFmdGVyKVxuICAgIHRoaXMuYnVpbGRlcignfScsIG5vZGUsICdlbmQnKVxuICB9XG5cbiAgcmF3IChub2RlLCBvd24sIGRldGVjdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIGlmICghZGV0ZWN0KSBkZXRlY3QgPSBvd25cblxuICAgIC8vIEFscmVhZHkgaGFkXG4gICAgaWYgKG93bikge1xuICAgICAgdmFsdWUgPSBub2RlLnJhd3Nbb3duXVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudFxuXG4gICAgLy8gSGFjayBmb3IgZmlyc3QgcnVsZSBpbiBDU1NcbiAgICBpZiAoZGV0ZWN0ID09PSAnYmVmb3JlJykge1xuICAgICAgaWYgKCFwYXJlbnQgfHwgKHBhcmVudC50eXBlID09PSAncm9vdCcgJiYgcGFyZW50LmZpcnN0ID09PSBub2RlKSkge1xuICAgICAgICByZXR1cm4gJydcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGbG9hdGluZyBjaGlsZCB3aXRob3V0IHBhcmVudFxuICAgIGlmICghcGFyZW50KSByZXR1cm4gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgLy8gRGV0ZWN0IHN0eWxlIGJ5IG90aGVyIG5vZGVzXG4gICAgbGV0IHJvb3QgPSBub2RlLnJvb3QoKVxuICAgIGlmICghcm9vdC5yYXdDYWNoZSkgcm9vdC5yYXdDYWNoZSA9IHsgfVxuICAgIGlmICh0eXBlb2Ygcm9vdC5yYXdDYWNoZVtkZXRlY3RdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XVxuICAgIH1cblxuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnIHx8IGRldGVjdCA9PT0gJ2FmdGVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVmb3JlQWZ0ZXIobm9kZSwgZGV0ZWN0KVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWV0aG9kID0gJ3JhdycgKyBjYXBpdGFsaXplKGRldGVjdClcbiAgICAgIGlmICh0aGlzW21ldGhvZF0pIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzW21ldGhvZF0ocm9vdCwgbm9kZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgICAgICB2YWx1ZSA9IGkucmF3c1tvd25dXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB2YWx1ZSA9IERFRkFVTFRfUkFXW2RldGVjdF1cblxuICAgIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XSA9IHZhbHVlXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdTZW1pY29sb24gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS5ub2RlcyAmJiBpLm5vZGVzLmxlbmd0aCAmJiBpLmxhc3QudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLnNlbWljb2xvblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0VtcHR5Qm9keSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3SW5kZW50IChyb290KSB7XG4gICAgaWYgKHJvb3QucmF3cy5pbmRlbnQpIHJldHVybiByb290LnJhd3MuaW5kZW50XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgbGV0IHAgPSBpLnBhcmVudFxuICAgICAgaWYgKHAgJiYgcCAhPT0gcm9vdCAmJiBwLnBhcmVudCAmJiBwLnBhcmVudCA9PT0gcm9vdCkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgbGV0IHBhcnRzID0gaS5yYXdzLmJlZm9yZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICB2YWx1ZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlQ29tbWVudCAocm9vdCwgbm9kZSkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2Fsa0NvbW1lbnRzKGkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZWZvcmVcbiAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVEZWNsIChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZVJ1bGUgKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS5ub2RlcyAmJiAoaS5wYXJlbnQgIT09IHJvb3QgfHwgcm9vdC5maXJzdCAhPT0gaSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh2YWx1ZSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDbG9zZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5hZnRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5hZnRlclxuICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh2YWx1ZSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVPcGVuIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkudHlwZSAhPT0gJ2RlY2wnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJldHdlZW5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdDb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2Fsa0RlY2xzKGkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmV0d2VlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2Vlbi5yZXBsYWNlKC9bXlxcczpdL2csICcnKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgYmVmb3JlQWZ0ZXIgKG5vZGUsIGRldGVjdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWNsJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlRGVjbCcpXG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ29tbWVudCcpXG4gICAgfSBlbHNlIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVSdWxlJylcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ2xvc2UnKVxuICAgIH1cblxuICAgIGxldCBidWYgPSBub2RlLnBhcmVudFxuICAgIGxldCBkZXB0aCA9IDBcbiAgICB3aGlsZSAoYnVmICYmIGJ1Zi50eXBlICE9PSAncm9vdCcpIHtcbiAgICAgIGRlcHRoICs9IDFcbiAgICAgIGJ1ZiA9IGJ1Zi5wYXJlbnRcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICBsZXQgaW5kZW50ID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2luZGVudCcpXG4gICAgICBpZiAoaW5kZW50Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBzdGVwID0gMDsgc3RlcCA8IGRlcHRoOyBzdGVwKyspIHZhbHVlICs9IGluZGVudFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3VmFsdWUgKG5vZGUsIHByb3ApIHtcbiAgICBsZXQgdmFsdWUgPSBub2RlW3Byb3BdXG4gICAgbGV0IHJhdyA9IG5vZGUucmF3c1twcm9wXVxuICAgIGlmIChyYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHJhdy5yYXdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdpZmllclxuIl0sImZpbGUiOiJzdHJpbmdpZmllci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _lazyResult = _interopRequireDefault(require(\"./lazy-result\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */\nvar Processor = /*#__PURE__*/function () {\n  /**\n   * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n   *        See {@link Processor#use} for plugin format.\n   */\n  function Processor(plugins) {\n    if (plugins === void 0) {\n      plugins = [];\n    }\n\n    /**\n     * Current PostCSS version.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (result.processor.version.split('.')[0] !== '6') {\n     *   throw new Error('This plugin works only with PostCSS 6')\n     * }\n     */\n    this.version = '7.0.39';\n    /**\n     * Plugins added to this processor.\n     *\n     * @type {pluginFunction[]}\n     *\n     * @example\n     * const processor = postcss([autoprefixer, precss])\n     * processor.plugins.length //=> 2\n     */\n\n    this.plugins = this.normalize(plugins);\n  }\n  /**\n   * Adds a plugin to be used as a CSS processor.\n   *\n   * PostCSS plugin can be in 4 formats:\n   * * A plugin created by {@link postcss.plugin} method.\n   * * A function. PostCSS will pass the function a @{link Root}\n   *   as the first argument and current {@link Result} instance\n   *   as the second.\n   * * An object with a `postcss` method. PostCSS will use that method\n   *   as described in #2.\n   * * Another {@link Processor} instance. PostCSS will copy plugins\n   *   from that instance into this one.\n   *\n   * Plugins can also be added by passing them as arguments when creating\n   * a `postcss` instance (see [`postcss(plugins)`]).\n   *\n   * Asynchronous plugins should return a `Promise` instance.\n   *\n   * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n   *                                                 or {@link Processor}\n   *                                                 with plugins.\n   *\n   * @example\n   * const processor = postcss()\n   *   .use(autoprefixer)\n   *   .use(precss)\n   *\n   * @return {Processes} Current processor to make methods chain.\n   */\n\n\n  var _proto = Processor.prototype;\n\n  _proto.use = function use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]));\n    return this;\n  }\n  /**\n   * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n   * Because some plugins can be asynchronous it doesn’t make\n   * any transformations. Transformations will be applied\n   * in the {@link LazyResult} methods.\n   *\n   * @param {string|toString|Result} css String with input CSS or any object\n   *                                     with a `toString()` method,\n   *                                     like a Buffer. Optionally, send\n   *                                     a {@link Result} instance\n   *                                     and the processor will take\n   *                                     the {@link Root} from it.\n   * @param {processOptions} [opts]      Options.\n   *\n   * @return {LazyResult} Promise proxy.\n   *\n   * @example\n   * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n   *   .then(result => {\n   *      console.log(result.css)\n   *   })\n   */\n  ;\n\n  _proto.process = function (_process) {\n    function process(_x) {\n      return _process.apply(this, arguments);\n    }\n\n    process.toString = function () {\n      return _process.toString();\n    };\n\n    return process;\n  }(function (css, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (this.plugins.length === 0 && opts.parser === opts.stringifier) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now, PostCSS does nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');\n        }\n      }\n    }\n\n    return new _lazyResult.default(this, css, opts);\n  });\n\n  _proto.normalize = function normalize(plugins) {\n    var normalized = [];\n\n    for (var _iterator = _createForOfIteratorHelperLoose(plugins), _step; !(_step = _iterator()).done;) {\n      var i = _step.value;\n\n      if (i.postcss === true) {\n        var plugin = i();\n        throw new Error('PostCSS plugin ' + plugin.postcssPlugin + ' requires PostCSS 8.\\n' + 'Migration guide for end-users:\\n' + 'https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users');\n      }\n\n      if (i.postcss) i = i.postcss;\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins);\n      } else if (typeof i === 'function') {\n        normalized.push(i);\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');\n        }\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        throw new Error('PostCSS plugin ' + i.postcssPlugin + ' requires PostCSS 8.\\n' + 'Migration guide for end-users:\\n' + 'https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users');\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin');\n      }\n    }\n\n    return normalized;\n  };\n\n  return Processor;\n}();\n\nvar _default = Processor;\n/**\n * @callback builder\n * @param {string} part          Part of generated CSS connected to this node.\n * @param {Node}   node          AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse          Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root     Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from             The path of the CSS source file.\n *                                     You should always set `from`,\n *                                     because it is used in source map\n *                                     generation and syntax error messages.\n * @property {string} to               The path where you’ll put the output\n *                                     CSS file. You should always set `to`\n *                                     to generate correct source maps.\n * @property {parser} parser           Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax           Object with `parse` and `stringify`.\n * @property {object} map              Source map options.\n * @property {boolean} map.inline                    Does source map should\n *                                                   be embedded in the output\n *                                                   CSS as a base64-encoded\n *                                                   comment.\n * @property {string|object|false|function} map.prev Source map content\n *                                                   from a previous\n *                                                   processing step\n *                                                   (for example, Sass).\n *                                                   PostCSS will try to find\n *                                                   previous map automatically,\n *                                                   so you could disable it by\n *                                                   `false` value.\n * @property {boolean} map.sourcesContent            Does PostCSS should set\n *                                                   the origin content to map.\n * @property {string|false} map.annotation           Does PostCSS should set\n *                                                   annotation comment to map.\n * @property {string} map.from                       Override `from` in map’s\n *                                                   sources`.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJFcnJvciIsInBvc3Rjc3NQbHVnaW4iLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7O0lBU01BLFM7QUFDSjs7OztBQUlBLHFCQUFhQyxPQUFiLEVBQTJCO0FBQUEsUUFBZEEsT0FBYztBQUFkQSxNQUFBQSxPQUFjLEdBQUosRUFBSTtBQUFBOztBQUN6Qjs7Ozs7Ozs7OztBQVVBLFNBQUtDLE9BQUwsR0FBZSxRQUFmO0FBQ0E7Ozs7Ozs7Ozs7QUFTQSxTQUFLRCxPQUFMLEdBQWUsS0FBS0UsU0FBTCxDQUFlRixPQUFmLENBQWY7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E2QkFHLEcsR0FBQSxhQUFLQyxNQUFMLEVBQWE7QUFDWCxTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXNCQUUsTzs7Ozs7Ozs7OztJQUFBLFVBQVNDLEdBQVQsRUFBY0MsSUFBZCxFQUEwQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDeEIsUUFBSSxLQUFLUixPQUFMLENBQWFTLE1BQWIsS0FBd0IsQ0FBeEIsSUFBNkJELElBQUksQ0FBQ0UsTUFBTCxLQUFnQkYsSUFBSSxDQUFDRyxXQUF0RCxFQUFtRTtBQUNqRSxVQUFJTCxPQUFPLENBQUNNLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxZQUFJLE9BQU9DLE9BQVAsS0FBbUIsV0FBbkIsSUFBa0NBLE9BQU8sQ0FBQ0MsSUFBOUMsRUFBb0Q7QUFDbERELFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLDBEQUNBLDhEQURBLEdBRUEsa0VBSEY7QUFLRDtBQUNGO0FBQ0Y7O0FBQ0QsV0FBTyxJQUFJQyxtQkFBSixDQUFlLElBQWYsRUFBcUJULEdBQXJCLEVBQTBCQyxJQUExQixDQUFQO0FBQ0QsRzs7U0FFRE4sUyxHQUFBLG1CQUFXRixPQUFYLEVBQW9CO0FBQ2xCLFFBQUlpQixVQUFVLEdBQUcsRUFBakI7O0FBQ0EseURBQWNqQixPQUFkLHdDQUF1QjtBQUFBLFVBQWRrQixDQUFjOztBQUNyQixVQUFJQSxDQUFDLENBQUNDLE9BQUYsS0FBYyxJQUFsQixFQUF3QjtBQUN0QixZQUFJZixNQUFNLEdBQUdjLENBQUMsRUFBZDtBQUNBLGNBQU0sSUFBSUUsS0FBSixDQUNKLG9CQUFvQmhCLE1BQU0sQ0FBQ2lCLGFBQTNCLEdBQTJDLHdCQUEzQyxHQUNBLGtDQURBLEdBRUEsaUVBSEksQ0FBTjtBQUtEOztBQUVELFVBQUlILENBQUMsQ0FBQ0MsT0FBTixFQUFlRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTjs7QUFFZixVQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFiLElBQXlCSSxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsQ0FBQyxDQUFDbEIsT0FBaEIsQ0FBN0IsRUFBdUQ7QUFDckRpQixRQUFBQSxVQUFVLEdBQUdBLFVBQVUsQ0FBQ1osTUFBWCxDQUFrQmEsQ0FBQyxDQUFDbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELFFBQUFBLFVBQVUsQ0FBQ08sSUFBWCxDQUFnQk4sQ0FBaEI7QUFDRCxPQUZNLE1BRUEsSUFBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixLQUEwQkEsQ0FBQyxDQUFDTyxLQUFGLElBQVdQLENBQUMsQ0FBQ1EsU0FBdkMsQ0FBSixFQUF1RDtBQUM1RCxZQUFJcEIsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsZ0JBQU0sSUFBSU8sS0FBSixDQUNKLHFFQUNBLDJEQURBLEdBRUEsdUNBSEksQ0FBTjtBQUtEO0FBQ0YsT0FSTSxNQVFBLElBQUksT0FBT0YsQ0FBUCxLQUFhLFFBQWIsSUFBeUJBLENBQUMsQ0FBQ0csYUFBL0IsRUFBOEM7QUFDbkQsY0FBTSxJQUFJRCxLQUFKLENBQ0osb0JBQW9CRixDQUFDLENBQUNHLGFBQXRCLEdBQXNDLHdCQUF0QyxHQUNBLGtDQURBLEdBRUEsaUVBSEksQ0FBTjtBQUtELE9BTk0sTUFNQTtBQUNMLGNBQU0sSUFBSUQsS0FBSixDQUFVRixDQUFDLEdBQUcsMEJBQWQsQ0FBTjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsVUFBUDtBQUNELEc7Ozs7O2VBR1lsQixTO0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMYXp5UmVzdWx0IGZyb20gJy4vbGF6eS1yZXN1bHQnXG5cbi8qKlxuICogQ29udGFpbnMgcGx1Z2lucyB0byBwcm9jZXNzIENTUy4gQ3JlYXRlIG9uZSBgUHJvY2Vzc29yYCBpbnN0YW5jZSxcbiAqIGluaXRpYWxpemUgaXRzIHBsdWdpbnMsIGFuZCB0aGVuIHVzZSB0aGF0IGluc3RhbmNlIG9uIG51bWVyb3VzIENTUyBmaWxlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyLCBwcmVjc3NdKVxuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMSkudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpXG4gKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MyKS50aGVuKHJlc3VsdCA9PiBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKSlcbiAqL1xuY2xhc3MgUHJvY2Vzc29yIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAgICogICAgICAgIFNlZSB7QGxpbmsgUHJvY2Vzc29yI3VzZX0gZm9yIHBsdWdpbiBmb3JtYXQuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAocGx1Z2lucyA9IFtdKSB7XG4gICAgLyoqXG4gICAgICogQ3VycmVudCBQb3N0Q1NTIHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAocmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uLnNwbGl0KCcuJylbMF0gIT09ICc2Jykge1xuICAgICAqICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIHBsdWdpbiB3b3JrcyBvbmx5IHdpdGggUG9zdENTUyA2JylcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy52ZXJzaW9uID0gJzcuMC4zOSdcbiAgICAvKipcbiAgICAgKiBQbHVnaW5zIGFkZGVkIHRvIHRoaXMgcHJvY2Vzc29yLlxuICAgICAqXG4gICAgICogQHR5cGUge3BsdWdpbkZ1bmN0aW9uW119XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSlcbiAgICAgKiBwcm9jZXNzb3IucGx1Z2lucy5sZW5ndGggLy89PiAyXG4gICAgICovXG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5ub3JtYWxpemUocGx1Z2lucylcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGx1Z2luIHRvIGJlIHVzZWQgYXMgYSBDU1MgcHJvY2Vzc29yLlxuICAgKlxuICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgKiAqIEEgcGx1Z2luIGNyZWF0ZWQgYnkge0BsaW5rIHBvc3Rjc3MucGx1Z2lufSBtZXRob2QuXG4gICAqICogQSBmdW5jdGlvbi4gUG9zdENTUyB3aWxsIHBhc3MgdGhlIGZ1bmN0aW9uIGEgQHtsaW5rIFJvb3R9XG4gICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgYXMgdGhlIHNlY29uZC5cbiAgICogKiBBbiBvYmplY3Qgd2l0aCBhIGBwb3N0Y3NzYCBtZXRob2QuIFBvc3RDU1Mgd2lsbCB1c2UgdGhhdCBtZXRob2RcbiAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAqICogQW5vdGhlciB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZS4gUG9zdENTUyB3aWxsIGNvcHkgcGx1Z2luc1xuICAgKiAgIGZyb20gdGhhdCBpbnN0YW5jZSBpbnRvIHRoaXMgb25lLlxuICAgKlxuICAgKiBQbHVnaW5zIGNhbiBhbHNvIGJlIGFkZGVkIGJ5IHBhc3NpbmcgdGhlbSBhcyBhcmd1bWVudHMgd2hlbiBjcmVhdGluZ1xuICAgKiBhIGBwb3N0Y3NzYCBpbnN0YW5jZSAoc2VlIFtgcG9zdGNzcyhwbHVnaW5zKWBdKS5cbiAgICpcbiAgICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gUG9zdENTUyBwbHVnaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwbHVnaW5zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICogICAudXNlKGF1dG9wcmVmaXhlcilcbiAgICogICAudXNlKHByZWNzcylcbiAgICpcbiAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBDdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW4uXG4gICAqL1xuICB1c2UgKHBsdWdpbikge1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICogQmVjYXVzZSBzb21lIHBsdWdpbnMgY2FuIGJlIGFzeW5jaHJvbm91cyBpdCBkb2VzbuKAmXQgbWFrZVxuICAgKiBhbnkgdHJhbnNmb3JtYXRpb25zLiBUcmFuc2Zvcm1hdGlvbnMgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd8UmVzdWx0fSBjc3MgU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yIGFueSBvYmplY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGB0b1N0cmluZygpYCBtZXRob2QsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgYSBCdWZmZXIuIE9wdGlvbmFsbHksIHNlbmRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHByb2Nlc3NvciB3aWxsIHRha2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHtAbGluayBSb290fSBmcm9tIGl0LlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gICAgICBPcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MsIHsgZnJvbTogJ2EuY3NzJywgdG86ICdhLm91dC5jc3MnIH0pXG4gICAqICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiAgIH0pXG4gICAqL1xuICBwcm9jZXNzIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAodGhpcy5wbHVnaW5zLmxlbmd0aCA9PT0gMCAmJiBvcHRzLnBhcnNlciA9PT0gb3B0cy5zdHJpbmdpZmllcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAnWW91IGRpZCBub3Qgc2V0IGFueSBwbHVnaW5zLCBwYXJzZXIsIG9yIHN0cmluZ2lmaWVyLiAnICtcbiAgICAgICAgICAgICdSaWdodCBub3csIFBvc3RDU1MgZG9lcyBub3RoaW5nLiBQaWNrIHBsdWdpbnMgZm9yIHlvdXIgY2FzZSAnICtcbiAgICAgICAgICAgICdvbiBodHRwczovL3d3dy5wb3N0Y3NzLnBhcnRzLyBhbmQgdXNlIHRoZW0gaW4gcG9zdGNzcy5jb25maWcuanMuJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IExhenlSZXN1bHQodGhpcywgY3NzLCBvcHRzKVxuICB9XG5cbiAgbm9ybWFsaXplIChwbHVnaW5zKSB7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBbXVxuICAgIGZvciAobGV0IGkgb2YgcGx1Z2lucykge1xuICAgICAgaWYgKGkucG9zdGNzcyA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgcGx1Z2luID0gaSgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnUG9zdENTUyBwbHVnaW4gJyArIHBsdWdpbi5wb3N0Y3NzUGx1Z2luICsgJyByZXF1aXJlcyBQb3N0Q1NTIDguXFxuJyArXG4gICAgICAgICAgJ01pZ3JhdGlvbiBndWlkZSBmb3IgZW5kLXVzZXJzOlxcbicgK1xuICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9wb3N0Y3NzL3dpa2kvUG9zdENTUy04LWZvci1lbmQtdXNlcnMnXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKGkucG9zdGNzcykgaSA9IGkucG9zdGNzc1xuXG4gICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSkge1xuICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBub3JtYWxpemVkLnB1c2goaSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIChpLnBhcnNlIHx8IGkuc3RyaW5naWZ5KSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuIEluc3RlYWQsIHBsZWFzZSB1c2UgJyArXG4gICAgICAgICAgICAnb25lIG9mIHRoZSBzeW50YXgvcGFyc2VyL3N0cmluZ2lmaWVyIG9wdGlvbnMgYXMgb3V0bGluZWQgJyArXG4gICAgICAgICAgICAnaW4geW91ciBQb3N0Q1NTIHJ1bm5lciBkb2N1bWVudGF0aW9uLidcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIGkucG9zdGNzc1BsdWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1MgcGx1Z2luICcgKyBpLnBvc3Rjc3NQbHVnaW4gKyAnIHJlcXVpcmVzIFBvc3RDU1MgOC5cXG4nICtcbiAgICAgICAgICAnTWlncmF0aW9uIGd1aWRlIGZvciBlbmQtdXNlcnM6XFxuJyArXG4gICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL3Bvc3Rjc3Mvd2lraS9Qb3N0Q1NTLTgtZm9yLWVuZC11c2VycydcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkgKyAnIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3JcblxuLyoqXG4gKiBAY2FsbGJhY2sgYnVpbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgICAgICAgICAgUGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9ICAgbm9kZSAgICAgICAgICBBU1Qgbm9kZS5cbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSBOb2Rl4oCZcyBwYXJ0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgcGFyc2VyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd9IGNzcyAgIFN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBzdHJpbmdpZmllclxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHN5bnRheFxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZnkgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIFBhcnNlZCBpbnB1dCBDU1MuXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0IFJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBsdWdpblxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcG9zdGNzcyBQb3N0Q1NTIHBsdWdpbiBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgQ1NTIHNvdXJjZSBmaWxlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc2V0IGBmcm9tYCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGFuZCBzeW50YXggZXJyb3IgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gICAgICAgICAgICAgICBUaGUgcGF0aCB3aGVyZSB5b3XigJlsbCBwdXQgdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBjb3JyZWN0IHNvdXJjZSBtYXBzLlxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlciAgICAgICAgICAgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgQVNUIGJ5IHN0cmluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIENsYXNzIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKiBAcHJvcGVydHkge3N5bnRheH0gc3ludGF4ICAgICAgICAgICBPYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YC5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBtYXAgICAgICAgICAgICAgIFNvdXJjZSBtYXAgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgRG9lcyBzb3VyY2UgbWFwIHNob3VsZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xvYmplY3R8ZmFsc2V8ZnVuY3Rpb259IG1hcC5wcmV2IFNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgcHJldmlvdXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBzdGVwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCB0cnkgdG8gZmluZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBtYXAgYXV0b21hdGljYWxseSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28geW91IGNvdWxkIGRpc2FibGUgaXQgYnlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZhbHNlYCB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLnNvdXJjZXNDb250ZW50ICAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbiBjb250ZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGZhbHNlfSBtYXAuYW5ub3RhdGlvbiAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiBjb21tZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXAuZnJvbSAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc2AuXG4gKi9cbiJdLCJmaWxlIjoicHJvY2Vzc29yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mapGenerator = _interopRequireDefault(require(\"./map-generator\"));\n\nvar _stringify2 = _interopRequireDefault(require(\"./stringify\"));\n\nvar _warnOnce = _interopRequireDefault(require(\"./warn-once\"));\n\nvar _result = _interopRequireDefault(require(\"./result\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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 isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function';\n}\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([autoprefixer]).process(css)\n */\n\n\nvar LazyResult = /*#__PURE__*/function () {\n  function LazyResult(processor, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    var root;\n\n    if (typeof css === 'object' && css !== null && css.type === 'root') {\n      root = css;\n    } else if (css instanceof LazyResult || css instanceof _result.default) {\n      root = css.root;\n\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      var parser = _parse.default;\n      if (opts.syntax) parser = opts.syntax.parse;\n      if (opts.parser) parser = opts.parser;\n      if (parser.parse) parser = parser.parse;\n\n      try {\n        root = parser(css, opts);\n      } catch (error) {\n        this.error = error;\n      }\n    }\n\n    this.result = new _result.default(processor, root, opts);\n  }\n  /**\n   * Returns a {@link Processor} instance, which will be used\n   * for CSS transformations.\n   *\n   * @type {Processor}\n   */\n\n\n  var _proto = LazyResult.prototype;\n\n  /**\n   * Processes input CSS through synchronous plugins\n   * and calls {@link Result#warnings()}.\n   *\n   * @return {Warning[]} Warnings from plugins.\n   */\n  _proto.warnings = function warnings() {\n    return this.sync().warnings();\n  }\n  /**\n   * Alias for the {@link LazyResult#css} property.\n   *\n   * @example\n   * lazy + '' === lazy.css\n   *\n   * @return {string} Output CSS.\n   */\n  ;\n\n  _proto.toString = function toString() {\n    return this.css;\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls `onFulfilled` with a Result instance. If a plugin throws\n   * an error, the `onRejected` callback will be executed.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFulfilled} onFulfilled Callback will be executed\n   *                                  when all plugins will finish work.\n   * @param {onRejected}  onRejected  Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {\n   *   console.log(result.css)\n   * })\n   */\n  ;\n\n  _proto.then = function then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this.opts)) {\n        (0, _warnOnce.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');\n      }\n    }\n\n    return this.async().then(onFulfilled, onRejected);\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onRejected for each error thrown in any plugin.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onRejected} onRejected Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).then(result => {\n   *   console.log(result.css)\n   * }).catch(error => {\n   *   console.error(error)\n   * })\n   */\n  ;\n\n  _proto.catch = function _catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onFinally on any error or when all plugins will finish work.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFinally} onFinally Callback will be executed on any error or\n   *                              when all plugins will finish work.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).finally(() => {\n   *   console.log('processing ended')\n   * })\n   */\n  ;\n\n  _proto.finally = function _finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  };\n\n  _proto.handleError = function handleError(error, plugin) {\n    try {\n      this.error = error;\n\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin;\n        error.setMessage();\n      } else if (plugin.postcssVersion) {\n        if (process.env.NODE_ENV !== 'production') {\n          var pluginName = plugin.postcssPlugin;\n          var pluginVer = plugin.postcssVersion;\n          var runtimeVer = this.result.processor.version;\n          var a = pluginVer.split('.');\n          var b = runtimeVer.split('.');\n\n          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n            console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n  };\n\n  _proto.asyncTick = function asyncTick(resolve, reject) {\n    var _this = this;\n\n    if (this.plugin >= this.processor.plugins.length) {\n      this.processed = true;\n      return resolve();\n    }\n\n    try {\n      var plugin = this.processor.plugins[this.plugin];\n      var promise = this.run(plugin);\n      this.plugin += 1;\n\n      if (isPromise(promise)) {\n        promise.then(function () {\n          _this.asyncTick(resolve, reject);\n        }).catch(function (error) {\n          _this.handleError(error, plugin);\n\n          _this.processed = true;\n          reject(error);\n        });\n      } else {\n        this.asyncTick(resolve, reject);\n      }\n    } catch (error) {\n      this.processed = true;\n      reject(error);\n    }\n  };\n\n  _proto.async = function async() {\n    var _this2 = this;\n\n    if (this.processed) {\n      return new Promise(function (resolve, reject) {\n        if (_this2.error) {\n          reject(_this2.error);\n        } else {\n          resolve(_this2.stringify());\n        }\n      });\n    }\n\n    if (this.processing) {\n      return this.processing;\n    }\n\n    this.processing = new Promise(function (resolve, reject) {\n      if (_this2.error) return reject(_this2.error);\n      _this2.plugin = 0;\n\n      _this2.asyncTick(resolve, reject);\n    }).then(function () {\n      _this2.processed = true;\n      return _this2.stringify();\n    });\n    return this.processing;\n  };\n\n  _proto.sync = function sync() {\n    if (this.processed) return this.result;\n    this.processed = true;\n\n    if (this.processing) {\n      throw new Error('Use process(css).then(cb) to work with async plugins');\n    }\n\n    if (this.error) throw this.error;\n\n    for (var _iterator = _createForOfIteratorHelperLoose(this.result.processor.plugins), _step; !(_step = _iterator()).done;) {\n      var plugin = _step.value;\n      var promise = this.run(plugin);\n\n      if (isPromise(promise)) {\n        throw new Error('Use process(css).then(cb) to work with async plugins');\n      }\n    }\n\n    return this.result;\n  };\n\n  _proto.run = function run(plugin) {\n    this.result.lastPlugin = plugin;\n\n    try {\n      return plugin(this.result.root, this.result);\n    } catch (error) {\n      this.handleError(error, plugin);\n      throw error;\n    }\n  };\n\n  _proto.stringify = function stringify() {\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    var opts = this.result.opts;\n    var str = _stringify2.default;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    var map = new _mapGenerator.default(str, this.result.root, this.result.opts);\n    var data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  };\n\n  _createClass(LazyResult, [{\n    key: \"processor\",\n    get: function get() {\n      return this.result.processor;\n    }\n    /**\n     * Options from the {@link Processor#process} call.\n     *\n     * @type {processOptions}\n     */\n\n  }, {\n    key: \"opts\",\n    get: function get() {\n      return this.result.opts;\n    }\n    /**\n     * Processes input CSS through synchronous plugins, converts `Root`\n     * to a CSS string and returns {@link Result#css}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#css\n     */\n\n  }, {\n    key: \"css\",\n    get: function get() {\n      return this.stringify().css;\n    }\n    /**\n     * An alias for the `css` property. Use it with syntaxes\n     * that generate non-CSS output.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#content\n     */\n\n  }, {\n    key: \"content\",\n    get: function get() {\n      return this.stringify().content;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#map}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {SourceMapGenerator}\n     * @see Result#map\n     */\n\n  }, {\n    key: \"map\",\n    get: function get() {\n      return this.stringify().map;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#root}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Root}\n     * @see Result#root\n     */\n\n  }, {\n    key: \"root\",\n    get: function get() {\n      return this.sync().root;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#messages}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Message[]}\n     * @see Result#messages\n     */\n\n  }, {\n    key: \"messages\",\n    get: function get() {\n      return this.sync().messages;\n    }\n  }]);\n\n  return LazyResult;\n}();\n\nvar _default = LazyResult;\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztJ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SUFBSWtELHFCQUFKLENBQWlCRixHQUFqQixFQUFzQixLQUFLekMsTUFBTCxDQUFZVixJQUFsQyxFQUF3QyxLQUFLVSxNQUFMLENBQVliLElBQXBELENBQVY7QUFDQSxRQUFJeUQsSUFBSSxHQUFHbkQsR0FBRyxDQUFDb0QsUUFBSixFQUFYO0FBQ0EsU0FBSzdDLE1BQUwsQ0FBWWQsR0FBWixHQUFrQjBELElBQUksQ0FBQyxDQUFELENBQXRCO0FBQ0EsU0FBSzVDLE1BQUwsQ0FBWVAsR0FBWixHQUFrQm1ELElBQUksQ0FBQyxDQUFELENBQXRCO0FBRUEsV0FBTyxLQUFLNUMsTUFBWjtBQUNELEc7Ozs7d0JBalVnQjtBQUNmLGFBQU8sS0FBS0EsTUFBTCxDQUFZZixTQUFuQjtBQUNEO0FBRUQ7Ozs7Ozs7O3dCQUtZO0FBQ1YsYUFBTyxLQUFLZSxNQUFMLENBQVliLElBQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVlXO0FBQ1QsYUFBTyxLQUFLa0QsU0FBTCxHQUFpQm5ELEdBQXhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVllO0FBQ2IsYUFBTyxLQUFLbUQsU0FBTCxHQUFpQlMsT0FBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7d0JBWVc7QUFDVCxhQUFPLEtBQUtULFNBQUwsR0FBaUI1QyxHQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYVk7QUFDVixhQUFPLEtBQUtTLElBQUwsR0FBWVosSUFBbkI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFnQjtBQUNkLGFBQU8sS0FBS1ksSUFBTCxHQUFZNkMsUUFBbkI7QUFDRDs7Ozs7O2VBdU9ZL0QsVTtBQUVmOzs7OztBQUtBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcEdlbmVyYXRvciBmcm9tICcuL21hcC1nZW5lcmF0b3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IHdhcm5PbmNlIGZyb20gJy4vd2Fybi1vbmNlJ1xuaW1wb3J0IFJlc3VsdCBmcm9tICcuL3Jlc3VsdCdcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlJ1xuXG5mdW5jdGlvbiBpc1Byb21pc2UgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbi8qKlxuICogQSBQcm9taXNlIHByb3h5IGZvciB0aGUgcmVzdWx0IG9mIFBvc3RDU1MgdHJhbnNmb3JtYXRpb25zLlxuICpcbiAqIEEgYExhenlSZXN1bHRgIGluc3RhbmNlIGlzIHJldHVybmVkIGJ5IHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30uXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGxhenkgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcylcbiAqL1xuY2xhc3MgTGF6eVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yIChwcm9jZXNzb3IsIGNzcywgb3B0cykge1xuICAgIHRoaXMuc3RyaW5naWZpZWQgPSBmYWxzZVxuICAgIHRoaXMucHJvY2Vzc2VkID0gZmFsc2VcblxuICAgIGxldCByb290XG4gICAgaWYgKHR5cGVvZiBjc3MgPT09ICdvYmplY3QnICYmIGNzcyAhPT0gbnVsbCAmJiBjc3MudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICByb290ID0gY3NzXG4gICAgfSBlbHNlIGlmIChjc3MgaW5zdGFuY2VvZiBMYXp5UmVzdWx0IHx8IGNzcyBpbnN0YW5jZW9mIFJlc3VsdCkge1xuICAgICAgcm9vdCA9IGNzcy5yb290XG4gICAgICBpZiAoY3NzLm1hcCkge1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMubWFwID09PSAndW5kZWZpbmVkJykgb3B0cy5tYXAgPSB7IH1cbiAgICAgICAgaWYgKCFvcHRzLm1hcC5pbmxpbmUpIG9wdHMubWFwLmlubGluZSA9IGZhbHNlXG4gICAgICAgIG9wdHMubWFwLnByZXYgPSBjc3MubWFwXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXJzZXIgPSBwYXJzZVxuICAgICAgaWYgKG9wdHMuc3ludGF4KSBwYXJzZXIgPSBvcHRzLnN5bnRheC5wYXJzZVxuICAgICAgaWYgKG9wdHMucGFyc2VyKSBwYXJzZXIgPSBvcHRzLnBhcnNlclxuICAgICAgaWYgKHBhcnNlci5wYXJzZSkgcGFyc2VyID0gcGFyc2VyLnBhcnNlXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJvb3QgPSBwYXJzZXIoY3NzLCBvcHRzKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQgPSBuZXcgUmVzdWx0KHByb2Nlc3Nvciwgcm9vdCwgb3B0cylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAgKiBmb3IgQ1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge1Byb2Nlc3Nvcn1cbiAgICovXG4gIGdldCBwcm9jZXNzb3IgKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdC5wcm9jZXNzb3JcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gY2FsbC5cbiAgICpcbiAgICogQHR5cGUge3Byb2Nlc3NPcHRpb25zfVxuICAgKi9cbiAgZ2V0IG9wdHMgKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdC5vcHRzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnMsIGNvbnZlcnRzIGBSb290YFxuICAgKiB0byBhIENTUyBzdHJpbmcgYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNjc3N9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAc2VlIFJlc3VsdCNjc3NcbiAgICovXG4gIGdldCBjc3MgKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLmNzc1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFsaWFzIGZvciB0aGUgYGNzc2AgcHJvcGVydHkuIFVzZSBpdCB3aXRoIHN5bnRheGVzXG4gICAqIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgKiBJZiB0aGUgcHJvY2Vzc29yIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBzZWUgUmVzdWx0I2NvbnRlbnRcbiAgICovXG4gIGdldCBjb250ZW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jb250ZW50XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtYXB9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgKiBAc2VlIFJlc3VsdCNtYXBcbiAgICovXG4gIGdldCBtYXAgKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLiBJZiB0aGUgcHJvY2Vzc29yXG4gICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLFxuICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtSb290fVxuICAgKiBAc2VlIFJlc3VsdCNyb290XG4gICAqL1xuICBnZXQgcm9vdCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luYygpLnJvb3RcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuIElmIHRoZSBwcm9jZXNzb3JcbiAgICogY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAqXG4gICAqIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHkgZm9yIGRlYnVnIHB1cnBvc2UsXG4gICAqIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge01lc3NhZ2VbXX1cbiAgICogQHNlZSBSZXN1bHQjbWVzc2FnZXNcbiAgICovXG4gIGdldCBtZXNzYWdlcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luYygpLm1lc3NhZ2VzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIHtAbGluayBSZXN1bHQjd2FybmluZ3MoKX0uXG4gICAqXG4gICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gV2FybmluZ3MgZnJvbSBwbHVnaW5zLlxuICAgKi9cbiAgd2FybmluZ3MgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS53YXJuaW5ncygpXG4gIH1cblxuICAvKipcbiAgICogQWxpYXMgZm9yIHRoZSB7QGxpbmsgTGF6eVJlc3VsdCNjc3N9IHByb3BlcnR5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBsYXp5ICsgJycgPT09IGxhenkuY3NzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gT3V0cHV0IENTUy5cbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBgb25GdWxmaWxsZWRgIHdpdGggYSBSZXN1bHQgaW5zdGFuY2UuIElmIGEgcGx1Z2luIHRocm93c1xuICAgKiBhbiBlcnJvciwgdGhlIGBvblJlamVjdGVkYCBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge29uRnVsZmlsbGVkfSBvbkZ1bGZpbGxlZCBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICogQHBhcmFtIHtvblJlamVjdGVkfSAgb25SZWplY3RlZCAgQ2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbiBhbnkgZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IFByb21pc2UgQVBJIHRvIG1ha2UgcXVldWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MoW2F1dG9wcmVmaXhlcl0pLnByb2Nlc3MoY3NzLCB7IGZyb206IGNzc1BhdGggfSkudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqIH0pXG4gICAqL1xuICB0aGVuIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoISgnZnJvbScgaW4gdGhpcy5vcHRzKSkge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAnV2l0aG91dCBgZnJvbWAgb3B0aW9uIFBvc3RDU1MgY291bGQgZ2VuZXJhdGUgd3Jvbmcgc291cmNlIG1hcCAnICtcbiAgICAgICAgICAnYW5kIHdpbGwgbm90IGZpbmQgQnJvd3NlcnNsaXN0IGNvbmZpZy4gU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggJyArXG4gICAgICAgICAgJ29yIHRvIGB1bmRlZmluZWRgIHRvIHByZXZlbnQgdGhpcyB3YXJuaW5nLidcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3luYygpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgb25SZWplY3RlZCBmb3IgZWFjaCBlcnJvciB0aHJvd24gaW4gYW55IHBsdWdpbi5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICogICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgKiB9KVxuICAgKi9cbiAgY2F0Y2ggKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy5hc3luYygpLmNhdGNoKG9uUmVqZWN0ZWQpXG4gIH1cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIG9uRmluYWxseSBvbiBhbnkgZXJyb3Igb3Igd2hlbiBhbGwgcGx1Z2lucyB3aWxsIGZpbmlzaCB3b3JrLlxuICAgKlxuICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge29uRmluYWxseX0gb25GaW5hbGx5IENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yIG9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBhbGwgcGx1Z2lucyB3aWxsIGZpbmlzaCB3b3JrLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykuZmluYWxseSgoKSA9PiB7XG4gICAqICAgY29uc29sZS5sb2coJ3Byb2Nlc3NpbmcgZW5kZWQnKVxuICAgKiB9KVxuICAgKi9cbiAgZmluYWxseSAob25GaW5hbGx5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRmluYWxseSwgb25GaW5hbGx5KVxuICB9XG5cbiAgaGFuZGxlRXJyb3IgKGVycm9yLCBwbHVnaW4pIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0Nzc1N5bnRheEVycm9yJyAmJiAhZXJyb3IucGx1Z2luKSB7XG4gICAgICAgIGVycm9yLnBsdWdpbiA9IHBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICAgIGVycm9yLnNldE1lc3NhZ2UoKVxuICAgICAgfSBlbHNlIGlmIChwbHVnaW4ucG9zdGNzc1ZlcnNpb24pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBsZXQgcGx1Z2luTmFtZSA9IHBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICAgICAgbGV0IHBsdWdpblZlciA9IHBsdWdpbi5wb3N0Y3NzVmVyc2lvblxuICAgICAgICAgIGxldCBydW50aW1lVmVyID0gdGhpcy5yZXN1bHQucHJvY2Vzc29yLnZlcnNpb25cbiAgICAgICAgICBsZXQgYSA9IHBsdWdpblZlci5zcGxpdCgnLicpXG4gICAgICAgICAgbGV0IGIgPSBydW50aW1lVmVyLnNwbGl0KCcuJylcblxuICAgICAgICAgIGlmIChhWzBdICE9PSBiWzBdIHx8IHBhcnNlSW50KGFbMV0pID4gcGFyc2VJbnQoYlsxXSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdVbmtub3duIGVycm9yIGZyb20gUG9zdENTUyBwbHVnaW4uIFlvdXIgY3VycmVudCBQb3N0Q1NTICcgK1xuICAgICAgICAgICAgICAndmVyc2lvbiBpcyAnICsgcnVudGltZVZlciArICcsIGJ1dCAnICsgcGx1Z2luTmFtZSArICcgdXNlcyAnICtcbiAgICAgICAgICAgICAgcGx1Z2luVmVyICsgJy4gUGVyaGFwcyB0aGlzIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGJlbG93LidcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jVGljayAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHRoaXMucGx1Z2luID49IHRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJldHVybiByZXNvbHZlKClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBsdWdpbiA9IHRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dXG4gICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbilcbiAgICAgIHRoaXMucGx1Z2luICs9IDFcblxuICAgICAgaWYgKGlzUHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbilcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jICgpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KHRoaXMuZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLnN0cmluZ2lmeSgpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzaW5nXG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzaW5nID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZXJyb3IpIHJldHVybiByZWplY3QodGhpcy5lcnJvcilcbiAgICAgIHRoaXMucGx1Z2luID0gMFxuICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKVxuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzaW5nXG4gIH1cblxuICBzeW5jICgpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHJldHVybiB0aGlzLnJlc3VsdFxuICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVXNlIHByb2Nlc3MoY3NzKS50aGVuKGNiKSB0byB3b3JrIHdpdGggYXN5bmMgcGx1Z2lucycpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHRocm93IHRoaXMuZXJyb3JcblxuICAgIGZvciAobGV0IHBsdWdpbiBvZiB0aGlzLnJlc3VsdC5wcm9jZXNzb3IucGx1Z2lucykge1xuICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pXG4gICAgICBpZiAoaXNQcm9taXNlKHByb21pc2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVXNlIHByb2Nlc3MoY3NzKS50aGVuKGNiKSB0byB3b3JrIHdpdGggYXN5bmMgcGx1Z2lucycpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzdWx0XG4gIH1cblxuICBydW4gKHBsdWdpbikge1xuICAgIHRoaXMucmVzdWx0Lmxhc3RQbHVnaW4gPSBwbHVnaW5cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcGx1Z2luKHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBwbHVnaW4pXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHN0cmluZ2lmeSAoKSB7XG4gICAgaWYgKHRoaXMuc3RyaW5naWZpZWQpIHJldHVybiB0aGlzLnJlc3VsdFxuICAgIHRoaXMuc3RyaW5naWZpZWQgPSB0cnVlXG5cbiAgICB0aGlzLnN5bmMoKVxuXG4gICAgbGV0IG9wdHMgPSB0aGlzLnJlc3VsdC5vcHRzXG4gICAgbGV0IHN0ciA9IHN0cmluZ2lmeVxuICAgIGlmIChvcHRzLnN5bnRheCkgc3RyID0gb3B0cy5zeW50YXguc3RyaW5naWZ5XG4gICAgaWYgKG9wdHMuc3RyaW5naWZpZXIpIHN0ciA9IG9wdHMuc3RyaW5naWZpZXJcbiAgICBpZiAoc3RyLnN0cmluZ2lmeSkgc3RyID0gc3RyLnN0cmluZ2lmeVxuXG4gICAgbGV0IG1hcCA9IG5ldyBNYXBHZW5lcmF0b3Ioc3RyLCB0aGlzLnJlc3VsdC5yb290LCB0aGlzLnJlc3VsdC5vcHRzKVxuICAgIGxldCBkYXRhID0gbWFwLmdlbmVyYXRlKClcbiAgICB0aGlzLnJlc3VsdC5jc3MgPSBkYXRhWzBdXG4gICAgdGhpcy5yZXN1bHQubWFwID0gZGF0YVsxXVxuXG4gICAgcmV0dXJuIHRoaXMucmVzdWx0XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF6eVJlc3VsdFxuXG4vKipcbiAqIEBjYWxsYmFjayBvbkZ1bGZpbGxlZFxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIG9uUmVqZWN0ZWRcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbiJdLCJmaWxlIjoibGF6eS1yZXN1bHQuanMifQ==\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n        throw new Error(\n            'original.line and original.column are not numbers -- you probably meant to omit ' +\n            'the original mapping entirely and only map the generated position. If so, pass ' +\n            'null for the original mapping instead of an object with empty or null values.'\n        );\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      throw new Error('Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      }));\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */\nvar list = {\n  split: function split(string, separators, last) {\n    var array = [];\n    var current = '';\n    var split = false;\n    var func = 0;\n    var quote = false;\n    var escape = false;\n\n    for (var i = 0; i < string.length; i++) {\n      var letter = string[i];\n\n      if (quote) {\n        if (escape) {\n          escape = false;\n        } else if (letter === '\\\\') {\n          escape = true;\n        } else if (letter === quote) {\n          quote = false;\n        }\n      } else if (letter === '\"' || letter === '\\'') {\n        quote = letter;\n      } else if (letter === '(') {\n        func += 1;\n      } else if (letter === ')') {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.indexOf(letter) !== -1) split = true;\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim());\n        current = '';\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim());\n    return array;\n  },\n\n  /**\n   * Safely splits space-separated values (such as those for `background`,\n   * `border-radius`, and other shorthand properties).\n   *\n   * @param {string} string Space-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n   */\n  space: function space(string) {\n    var spaces = [' ', '\\n', '\\t'];\n    return list.split(string, spaces);\n  },\n\n  /**\n   * Safely splits comma-separated values (such as those for `transition-*`\n   * and `background` properties).\n   *\n   * @param {string} string Comma-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.comma('black, linear-gradient(white, black)')\n   * //=> ['black', 'linear-gradient(white, black)']\n   */\n  comma: function comma(string) {\n    return list.split(string, [','], true);\n  }\n};\nvar _default = list;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7OztBQVNBLElBQUlBLElBQUksR0FBRztBQUVUQyxFQUFBQSxLQUZTLGlCQUVGQyxNQUZFLEVBRU1DLFVBRk4sRUFFa0JDLElBRmxCLEVBRXdCO0FBQy9CLFFBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxRQUFJTCxLQUFLLEdBQUcsS0FBWjtBQUVBLFFBQUlNLElBQUksR0FBRyxDQUFYO0FBQ0EsUUFBSUMsS0FBSyxHQUFHLEtBQVo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBYjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ1MsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsVUFBSUUsTUFBTSxHQUFHVixNQUFNLENBQUNRLENBQUQsQ0FBbkI7O0FBRUEsVUFBSUYsS0FBSixFQUFXO0FBQ1QsWUFBSUMsTUFBSixFQUFZO0FBQ1ZBLFVBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0QsU0FGRCxNQUVPLElBQUlHLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQzFCSCxVQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNELFNBRk0sTUFFQSxJQUFJRyxNQUFNLEtBQUtKLEtBQWYsRUFBc0I7QUFDM0JBLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSUksTUFBTSxLQUFLLEdBQVgsSUFBa0JBLE1BQU0sS0FBSyxJQUFqQyxFQUF1QztBQUM1Q0osUUFBQUEsS0FBSyxHQUFHSSxNQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlBLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ3pCTCxRQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNELE9BRk0sTUFFQSxJQUFJSyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUN6QixZQUFJTCxJQUFJLEdBQUcsQ0FBWCxFQUFjQSxJQUFJLElBQUksQ0FBUjtBQUNmLE9BRk0sTUFFQSxJQUFJQSxJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNyQixZQUFJSixVQUFVLENBQUNVLE9BQVgsQ0FBbUJELE1BQW5CLE1BQStCLENBQUMsQ0FBcEMsRUFBdUNYLEtBQUssR0FBRyxJQUFSO0FBQ3hDOztBQUVELFVBQUlBLEtBQUosRUFBVztBQUNULFlBQUlLLE9BQU8sS0FBSyxFQUFoQixFQUFvQkQsS0FBSyxDQUFDUyxJQUFOLENBQVdSLE9BQU8sQ0FBQ1MsSUFBUixFQUFYO0FBQ3BCVCxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBTCxRQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxRQUFBQSxPQUFPLElBQUlNLE1BQVg7QUFDRDtBQUNGOztBQUVELFFBQUlSLElBQUksSUFBSUUsT0FBTyxLQUFLLEVBQXhCLEVBQTRCRCxLQUFLLENBQUNTLElBQU4sQ0FBV1IsT0FBTyxDQUFDUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROztBQTZDVDs7Ozs7Ozs7Ozs7QUFXQVcsRUFBQUEsS0F4RFMsaUJBd0RGZCxNQXhERSxFQXdETTtBQUNiLFFBQUllLE1BQU0sR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVksSUFBWixDQUFiO0FBQ0EsV0FBT2pCLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7O0FBNkRUOzs7Ozs7Ozs7Ozs7QUFZQUMsRUFBQUEsS0F6RVMsaUJBeUVGaEIsTUF6RUUsRUF5RU07QUFDYixXQUFPRixJQUFJLENBQUNDLEtBQUwsQ0FBV0MsTUFBWCxFQUFtQixDQUFDLEdBQUQsQ0FBbkIsRUFBMEIsSUFBMUIsQ0FBUDtBQUNEO0FBM0VRLENBQVg7ZUErRWVGLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdLCJmaWxlIjoibGlzdC5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type         //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Root, _Container);\n\n  function Root(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'root';\n    if (!_this.nodes) _this.nodes = [];\n    return _this;\n  }\n\n  var _proto = Root.prototype;\n\n  _proto.removeChild = function removeChild(child, ignore) {\n    var index = this.index(child);\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before;\n    }\n\n    return _Container.prototype.removeChild.call(this, child);\n  };\n\n  _proto.normalize = function normalize(child, sample, type) {\n    var nodes = _Container.prototype.normalize.call(this, child);\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {\n          var node = _step.value;\n          node.raws.before = sample.raws.before;\n        }\n      }\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a {@link Result} instance representing the root’s CSS.\n   *\n   * @param {processOptions} [opts] Options with only `to` and `map` keys.\n   *\n   * @return {Result} Result with current root’s CSS.\n   *\n   * @example\n   * const root1 = postcss.parse(css1, { from: 'a.css' })\n   * const root2 = postcss.parse(css2, { from: 'b.css' })\n   * root1.append(root2)\n   * const result = root1.toResult({ to: 'all.css', map: true })\n   */\n  ;\n\n  _proto.toResult = function toResult(opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    var LazyResult = require('./lazy-result');\n\n    var Processor = require('./processor');\n\n    var lazy = new LazyResult(new Processor(), this, opts);\n    return lazy.stringify();\n  }\n  /**\n   * @memberof Root#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `after`: the space symbols after the last child to the end of file.\n   * * `semicolon`: is the last child has an (optional) semicolon.\n   *\n   * @example\n   * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n   * postcss.parse('a {}').raws   //=> { after: '' }\n   */\n  ;\n\n  return Root;\n}(_container.default);\n\nvar _default = Root;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7O0lBVU1BLEk7OztBQUNKLGdCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFDQSxRQUFJLENBQUMsTUFBS0MsS0FBVixFQUFpQixNQUFLQSxLQUFMLEdBQWEsRUFBYjtBQUhJO0FBSXRCOzs7O1NBRURDLFcsR0FBQSxxQkFBYUMsS0FBYixFQUFvQkMsTUFBcEIsRUFBNEI7QUFDMUIsUUFBSUMsS0FBSyxHQUFHLEtBQUtBLEtBQUwsQ0FBV0YsS0FBWCxDQUFaOztBQUVBLFFBQUksQ0FBQ0MsTUFBRCxJQUFXQyxLQUFLLEtBQUssQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQWxELEVBQXFEO0FBQ25ELFdBQUtMLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQW5CLEdBQTRCLEtBQUtQLEtBQUwsQ0FBV0ksS0FBWCxFQUFrQkUsSUFBbEIsQ0FBdUJDLE1BQW5EO0FBQ0Q7O0FBRUQsZ0NBQWFOLFdBQWIsWUFBeUJDLEtBQXpCO0FBQ0QsRzs7U0FFRE0sUyxHQUFBLG1CQUFXTixLQUFYLEVBQWtCTyxNQUFsQixFQUEwQlYsSUFBMUIsRUFBZ0M7QUFDOUIsUUFBSUMsS0FBSyx3QkFBU1EsU0FBVCxZQUFtQk4sS0FBbkIsQ0FBVDs7QUFFQSxRQUFJTyxNQUFKLEVBQVk7QUFDVixVQUFJVixJQUFJLEtBQUssU0FBYixFQUF3QjtBQUN0QixZQUFJLEtBQUtDLEtBQUwsQ0FBV0ssTUFBWCxHQUFvQixDQUF4QixFQUEyQjtBQUN6QkksVUFBQUEsTUFBTSxDQUFDSCxJQUFQLENBQVlDLE1BQVosR0FBcUIsS0FBS1AsS0FBTCxDQUFXLENBQVgsRUFBY00sSUFBZCxDQUFtQkMsTUFBeEM7QUFDRCxTQUZELE1BRU87QUFDTCxpQkFBT0UsTUFBTSxDQUFDSCxJQUFQLENBQVlDLE1BQW5CO0FBQ0Q7QUFDRixPQU5ELE1BTU8sSUFBSSxLQUFLRyxLQUFMLEtBQWVELE1BQW5CLEVBQTJCO0FBQ2hDLDZEQUFpQlQsS0FBakIsd0NBQXdCO0FBQUEsY0FBZlcsSUFBZTtBQUN0QkEsVUFBQUEsSUFBSSxDQUFDTCxJQUFMLENBQVVDLE1BQVYsR0FBbUJFLE1BQU0sQ0FBQ0gsSUFBUCxDQUFZQyxNQUEvQjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxXQUFPUCxLQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O1NBYUFZLFEsR0FBQSxrQkFBVUMsSUFBVixFQUFzQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDcEIsUUFBSUMsVUFBVSxHQUFHQyxPQUFPLENBQUMsZUFBRCxDQUF4Qjs7QUFDQSxRQUFJQyxTQUFTLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQXZCOztBQUVBLFFBQUlFLElBQUksR0FBRyxJQUFJSCxVQUFKLENBQWUsSUFBSUUsU0FBSixFQUFmLEVBQWdDLElBQWhDLEVBQXNDSCxJQUF0QyxDQUFYO0FBQ0EsV0FBT0ksSUFBSSxDQUFDQyxTQUFMLEVBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUExRGlCQyxrQjs7ZUEyRUp0QixJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGZpbGUgYW5kIGNvbnRhaW5zIGFsbCBpdHMgcGFyc2VkIG5vZGVzLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXtjb2xvcjpibGFja30gYnt6LWluZGV4OjJ9JylcbiAqIHJvb3QudHlwZSAgICAgICAgIC8vPT4gJ3Jvb3QnXG4gKiByb290Lm5vZGVzLmxlbmd0aCAvLz0+IDJcbiAqL1xuY2xhc3MgUm9vdCBleHRlbmRzIENvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yIChkZWZhdWx0cykge1xuICAgIHN1cGVyKGRlZmF1bHRzKVxuICAgIHRoaXMudHlwZSA9ICdyb290J1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gIH1cblxuICByZW1vdmVDaGlsZCAoY2hpbGQsIGlnbm9yZSkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuaW5kZXgoY2hpbGQpXG5cbiAgICBpZiAoIWlnbm9yZSAmJiBpbmRleCA9PT0gMCAmJiB0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzW2luZGV4XS5yYXdzLmJlZm9yZVxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5yZW1vdmVDaGlsZChjaGlsZClcbiAgfVxuXG4gIG5vcm1hbGl6ZSAoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgIGxldCBub2RlcyA9IHN1cGVyLm5vcm1hbGl6ZShjaGlsZClcblxuICAgIGlmIChzYW1wbGUpIHtcbiAgICAgIGlmICh0eXBlID09PSAncHJlcGVuZCcpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdCAhPT0gc2FtcGxlKSB7XG4gICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSByb2904oCZcyBDU1MuXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgdG9gIGFuZCBgbWFwYCBrZXlzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IFJlc3VsdCB3aXRoIGN1cnJlbnQgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206ICdiLmNzcycgfSlcbiAgICogcm9vdDEuYXBwZW5kKHJvb3QyKVxuICAgKiBjb25zdCByZXN1bHQgPSByb290MS50b1Jlc3VsdCh7IHRvOiAnYWxsLmNzcycsIG1hcDogdHJ1ZSB9KVxuICAgKi9cbiAgdG9SZXN1bHQgKG9wdHMgPSB7IH0pIHtcbiAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKVxuICAgIGxldCBQcm9jZXNzb3IgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpXG5cbiAgICBsZXQgbGF6eSA9IG5ldyBMYXp5UmVzdWx0KG5ldyBQcm9jZXNzb3IoKSwgdGhpcywgb3B0cylcbiAgICByZXR1cm4gbGF6eS5zdHJpbmdpZnkoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBSb290I1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCB0byB0aGUgZW5kIG9mIGZpbGUuXG4gICAqICogYHNlbWljb2xvbmA6IGlzIHRoZSBsYXN0IGNoaWxkIGhhcyBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5wYXJzZSgnYSB7fVxcbicpLnJhd3MgLy89PiB7IGFmdGVyOiAnXFxuJyB9XG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBSb290XG4iXSwiZmlsZSI6InJvb3QuanMifQ==\n","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n  var cellCount = _ref.cellCount,\n      cellSize = _ref.cellSize,\n      computeMetadataCallback = _ref.computeMetadataCallback,\n      computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n      nextCellsCount = _ref.nextCellsCount,\n      nextCellSize = _ref.nextCellSize,\n      nextScrollToIndex = _ref.nextScrollToIndex,\n      scrollToIndex = _ref.scrollToIndex,\n      updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n  // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n  // In that event users should use the manual recompute methods to inform of changes.\n  if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n    computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n    // In this case we should also update the scrollTop to ensure it stays visible.\n\n    if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n      updateScrollOffsetForScrollToIndex();\n    }\n  }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  // Cache of size and position data for cells, mapped by cell index.\n  // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n  // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n  // Used in deferred mode to track which cells have been queued for measurement.\n  function CellSizeAndPositionManager(_ref) {\n    var cellCount = _ref.cellCount,\n        cellSizeGetter = _ref.cellSizeGetter,\n        estimatedCellSize = _ref.estimatedCellSize;\n\n    _classCallCheck(this, CellSizeAndPositionManager);\n\n    _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n    _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n    _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n    _defineProperty(this, \"_cellCount\", void 0);\n\n    _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n    _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n    this._cellSizeGetter = cellSizeGetter;\n    this._cellCount = cellCount;\n    this._estimatedCellSize = estimatedCellSize;\n  }\n\n  _createClass(CellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return false;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(_ref2) {\n      var cellCount = _ref2.cellCount,\n          estimatedCellSize = _ref2.estimatedCellSize,\n          cellSizeGetter = _ref2.cellSizeGetter;\n      this._cellCount = cellCount;\n      this._estimatedCellSize = estimatedCellSize;\n      this._cellSizeGetter = cellSizeGetter;\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellCount;\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._estimatedCellSize;\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._lastMeasuredIndex;\n    }\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment() {\n      return 0;\n    }\n    /**\n     * This method returns the size and position for the cell at the specified index.\n     * It just-in-time calculates (or used cached values) for cells leading up to the index.\n     */\n\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      if (index < 0 || index >= this._cellCount) {\n        throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n      }\n\n      if (index > this._lastMeasuredIndex) {\n        var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n        var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n        for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n          var size = this._cellSizeGetter({\n            index: i\n          }); // undefined or NaN probably means a logic error in the size getter.\n          // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n          if (size === undefined || isNaN(size)) {\n            throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n          } else if (size === null) {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: 0\n            };\n            this._lastBatchedIndex = index;\n          } else {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: size\n            };\n            offset += size;\n            this._lastMeasuredIndex = index;\n          }\n        }\n      }\n\n      return this._cellSizeAndPositionData[index];\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n        offset: 0,\n        size: 0\n      };\n    }\n    /**\n     * Total size of all cells being measured.\n     * This value will be completely estimated initially.\n     * As cells are measured, the estimate will be updated.\n     */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n      var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n      var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n      return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n    }\n    /**\n     * Determines a new offset that ensures a certain cell is visible, given the current offset.\n     * If the cell is already visible then the current offset will be returned.\n     * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n     *\n     * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n     * @param containerSize Size (width or height) of the container viewport\n     * @param currentOffset Container's current (x or y) offset\n     * @param totalSize Total size (width or height) of all cells\n     * @return Offset to use to ensure the specified cell is visible\n     */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n\n      if (containerSize <= 0) {\n        return 0;\n      }\n\n      var datum = this.getSizeAndPositionOfCell(targetIndex);\n      var maxOffset = datum.offset;\n      var minOffset = maxOffset - containerSize + datum.size;\n      var idealOffset;\n\n      switch (align) {\n        case 'start':\n          idealOffset = maxOffset;\n          break;\n\n        case 'end':\n          idealOffset = minOffset;\n          break;\n\n        case 'center':\n          idealOffset = maxOffset - (containerSize - datum.size) / 2;\n          break;\n\n        default:\n          idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n          break;\n      }\n\n      var totalSize = this.getTotalSize();\n      return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n    }\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(params) {\n      var containerSize = params.containerSize,\n          offset = params.offset;\n      var totalSize = this.getTotalSize();\n\n      if (totalSize === 0) {\n        return {};\n      }\n\n      var maxOffset = offset + containerSize;\n\n      var start = this._findNearestCell(offset);\n\n      var datum = this.getSizeAndPositionOfCell(start);\n      offset = datum.offset + datum.size;\n      var stop = start;\n\n      while (offset < maxOffset && stop < this._cellCount - 1) {\n        stop++;\n        offset += this.getSizeAndPositionOfCell(stop).size;\n      }\n\n      return {\n        start: start,\n        stop: stop\n      };\n    }\n    /**\n     * Clear all cached values for cells after the specified index.\n     * This method should be called for any cell that has changed its size.\n     * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n     */\n\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n    }\n  }, {\n    key: \"_binarySearch\",\n    value: function _binarySearch(high, low, offset) {\n      while (low <= high) {\n        var middle = low + Math.floor((high - low) / 2);\n        var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n        if (currentOffset === offset) {\n          return middle;\n        } else if (currentOffset < offset) {\n          low = middle + 1;\n        } else if (currentOffset > offset) {\n          high = middle - 1;\n        }\n      }\n\n      if (low > 0) {\n        return low - 1;\n      } else {\n        return 0;\n      }\n    }\n  }, {\n    key: \"_exponentialSearch\",\n    value: function _exponentialSearch(index, offset) {\n      var interval = 1;\n\n      while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n        index += interval;\n        interval *= 2;\n      }\n\n      return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n    }\n    /**\n     * Searches for the cell (index) nearest the specified offset.\n     *\n     * If no exact match is found the next lowest cell index will be returned.\n     * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n     */\n\n  }, {\n    key: \"_findNearestCell\",\n    value: function _findNearestCell(offset) {\n      if (isNaN(offset)) {\n        throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n      } // Our search algorithms find the nearest match at or below the specified offset.\n      // So make sure the offset is at least 0 or no match will be found.\n\n\n      offset = Math.max(0, offset);\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n      if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n        // If we've already measured cells within this range just use a binary search as it's faster.\n        return this._binarySearch(lastMeasuredIndex, 0, offset);\n      } else {\n        // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n        // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n        // The overall complexity for this approach is O(log n).\n        return this._exponentialSearch(lastMeasuredIndex, offset);\n      }\n    }\n  }]);\n\n  return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n  return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n  return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n  if (isBrowser()) {\n    if (isChrome()) {\n      return CHROME_MAX_ELEMENT_SIZE;\n    }\n  }\n\n  return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  function ScalingCellSizeAndPositionManager(_ref) {\n    var _ref$maxScrollSize = _ref.maxScrollSize,\n        maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n        params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n    _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n    _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n    _defineProperty(this, \"_maxScrollSize\", void 0);\n\n    // Favor composition over inheritance to simplify IE10 support\n    this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n    this._maxScrollSize = maxScrollSize;\n  }\n\n  _createClass(ScalingCellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(params) {\n      this._cellSizeAndPositionManager.configure(params);\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellSizeAndPositionManager.getCellCount();\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._cellSizeAndPositionManager.getEstimatedCellSize();\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n    }\n    /**\n     * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n     * The offset passed to this function is scaled (safe) as well.\n     */\n\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment(_ref2) {\n      var containerSize = _ref2.containerSize,\n          offset = _ref2.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      var offsetPercentage = this._getOffsetPercentage({\n        containerSize: containerSize,\n        offset: offset,\n        totalSize: safeTotalSize\n      });\n\n      return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n    }\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n    }\n    /** See CellSizeAndPositionManager#getTotalSize */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n    }\n    /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n      currentOffset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: currentOffset\n      });\n\n      var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n        align: align,\n        containerSize: containerSize,\n        currentOffset: currentOffset,\n        targetIndex: targetIndex\n      });\n\n      return this._offsetToSafeOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n    /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(_ref4) {\n      var containerSize = _ref4.containerSize,\n          offset = _ref4.offset;\n      offset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n      return this._cellSizeAndPositionManager.getVisibleCellRange({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._cellSizeAndPositionManager.resetCell(index);\n    }\n  }, {\n    key: \"_getOffsetPercentage\",\n    value: function _getOffsetPercentage(_ref5) {\n      var containerSize = _ref5.containerSize,\n          offset = _ref5.offset,\n          totalSize = _ref5.totalSize;\n      return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n    }\n  }, {\n    key: \"_offsetToSafeOffset\",\n    value: function _offsetToSafeOffset(_ref6) {\n      var containerSize = _ref6.containerSize,\n          offset = _ref6.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: totalSize\n        });\n\n        return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n      }\n    }\n  }, {\n    key: \"_safeOffsetToOffset\",\n    value: function _safeOffsetToOffset(_ref7) {\n      var containerSize = _ref7.containerSize,\n          offset = _ref7.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: safeTotalSize\n        });\n\n        return Math.round(offsetPercentage * (totalSize - containerSize));\n      }\n    }\n  }]);\n\n  return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n  var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var cachedIndices = {};\n  return function (_ref) {\n    var callback = _ref.callback,\n        indices = _ref.indices;\n    var keys = Object.keys(indices);\n    var allInitialized = !requireAllKeys || keys.every(function (key) {\n      var value = indices[key];\n      return Array.isArray(value) ? value.length > 0 : value >= 0;\n    });\n    var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n      var cachedValue = cachedIndices[key];\n      var value = indices[key];\n      return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n    });\n    cachedIndices = indices;\n\n    if (allInitialized && indexChanged) {\n      callback(indices);\n    }\n  };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n  var cellSize = _ref.cellSize,\n      cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n      previousCellsCount = _ref.previousCellsCount,\n      previousCellSize = _ref.previousCellSize,\n      previousScrollToAlignment = _ref.previousScrollToAlignment,\n      previousScrollToIndex = _ref.previousScrollToIndex,\n      previousSize = _ref.previousSize,\n      scrollOffset = _ref.scrollOffset,\n      scrollToAlignment = _ref.scrollToAlignment,\n      scrollToIndex = _ref.scrollToIndex,\n      size = _ref.size,\n      sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n      updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n  var cellCount = cellSizeAndPositionManager.getCellCount();\n  var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n  var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n  // We should ensure that the scroll target is visible.\n\n  if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n    updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n    // Make sure we aren't scrolled too far past the current content.\n  } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n    // We need to ensure that the current scroll offset is still within the collection's range.\n    // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n    // Just check to make sure we're still okay.\n    // Only adjust the scroll position if we've scrolled below the last set of rows.\n    if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n      updateScrollIndexCallback(cellCount - 1);\n    }\n  }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n  win = window;\n} else if (typeof self !== 'undefined') {\n  win = self;\n} else {\n  win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n  return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n  win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n  OBSERVED: 'observed',\n  REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n  return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Grid, _React$PureComponent);\n\n  // Invokes onSectionRendered callback only when start/stop row or column indices change\n  function Grid(props) {\n    var _this;\n\n    _classCallCheck(this, Grid);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n    _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n      _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n      _this.setState({\n        isScrolling: false,\n        needToResetStyleCache: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n      var onSectionRendered = _this.props.onSectionRendered;\n\n      _this._onGridRenderedMemoizer({\n        callback: onSectionRendered,\n        indices: {\n          columnOverscanStartIndex: _this._columnStartIndex,\n          columnOverscanStopIndex: _this._columnStopIndex,\n          columnStartIndex: _this._renderedColumnStartIndex,\n          columnStopIndex: _this._renderedColumnStopIndex,\n          rowOverscanStartIndex: _this._rowStartIndex,\n          rowOverscanStopIndex: _this._rowStopIndex,\n          rowStartIndex: _this._renderedRowStartIndex,\n          rowStopIndex: _this._renderedRowStopIndex\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n      // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n      // See issue #404 for more information.\n      if (event.target === _this._scrollingContainer) {\n        _this.handleScrollEvent(event.target);\n      }\n    });\n\n    var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n      cellCount: props.columnCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.columnWidth)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedColumnSize(props)\n    });\n    var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n      cellCount: props.rowCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.rowHeight)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedRowSize(props)\n    });\n    _this.state = {\n      instanceProps: {\n        columnSizeAndPositionManager: columnSizeAndPositionManager,\n        rowSizeAndPositionManager: rowSizeAndPositionManager,\n        prevColumnWidth: props.columnWidth,\n        prevRowHeight: props.rowHeight,\n        prevColumnCount: props.columnCount,\n        prevRowCount: props.rowCount,\n        prevIsScrolling: props.isScrolling === true,\n        prevScrollToColumn: props.scrollToColumn,\n        prevScrollToRow: props.scrollToRow,\n        scrollbarSize: 0,\n        scrollbarSizeMeasured: false\n      },\n      isScrolling: false,\n      scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n      scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollPositionChangeReason: null,\n      needToResetStyleCache: false\n    };\n\n    if (props.scrollToRow > 0) {\n      _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n    }\n\n    if (props.scrollToColumn > 0) {\n      _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n    }\n\n    return _this;\n  }\n  /**\n   * Gets offsets for a given cell and alignment.\n   */\n\n\n  _createClass(Grid, [{\n    key: \"getOffsetForCell\",\n    value: function getOffsetForCell() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref$alignment = _ref.alignment,\n          alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n          _ref$columnIndex = _ref.columnIndex,\n          columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n          _ref$rowIndex = _ref.rowIndex,\n          rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n      var offsetProps = _objectSpread({}, this.props, {\n        scrollToAlignment: alignment,\n        scrollToColumn: columnIndex,\n        scrollToRow: rowIndex\n      });\n\n      return {\n        scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n        scrollTop: this._getCalculatedScrollTop(offsetProps)\n      };\n    }\n    /**\n     * Gets estimated total rows' height.\n     */\n\n  }, {\n    key: \"getTotalRowsHeight\",\n    value: function getTotalRowsHeight() {\n      return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * Gets estimated total columns' width.\n     */\n\n  }, {\n    key: \"getTotalColumnsWidth\",\n    value: function getTotalColumnsWidth() {\n      return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * This method handles a scroll event originating from an external scroll control.\n     * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n     */\n\n  }, {\n    key: \"handleScrollEvent\",\n    value: function handleScrollEvent(_ref2) {\n      var _ref2$scrollLeft = _ref2.scrollLeft,\n          scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n          _ref2$scrollTop = _ref2.scrollTop,\n          scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n      // On iOS, we can arrive at negative offsets by swiping past the start.\n      // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n      if (scrollTopParam < 0) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      this._debounceScrollEnded();\n\n      var _this$props = this.props,\n          autoHeight = _this$props.autoHeight,\n          autoWidth = _this$props.autoWidth,\n          height = _this$props.height,\n          width = _this$props.width;\n      var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n      var scrollbarSize = instanceProps.scrollbarSize;\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n      var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n      if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n        // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n        // Don't change direction for an axis unless scroll offset has changed.\n        var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n        var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n        var newState = {\n          isScrolling: true,\n          scrollDirectionHorizontal: scrollDirectionHorizontal,\n          scrollDirectionVertical: scrollDirectionVertical,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n        };\n\n        if (!autoHeight) {\n          newState.scrollTop = scrollTop;\n        }\n\n        if (!autoWidth) {\n          newState.scrollLeft = scrollLeft;\n        }\n\n        newState.needToResetStyleCache = false;\n        this.setState(newState);\n      }\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        totalColumnsWidth: totalColumnsWidth,\n        totalRowsHeight: totalRowsHeight\n      });\n    }\n    /**\n     * Invalidate Grid size and recompute visible cells.\n     * This is a deferred wrapper for recomputeGridSize().\n     * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n     * This method is intended for advanced use-cases like CellMeasurer.\n     */\n    // @TODO (bvaughn) Add automated test coverage for this.\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref3) {\n      var columnIndex = _ref3.columnIndex,\n          rowIndex = _ref3.rowIndex;\n      this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n      this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n    }\n    /**\n     * Pre-measure all columns and rows in a Grid.\n     * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n     * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n     */\n\n  }, {\n    key: \"measureAllCells\",\n    value: function measureAllCells() {\n      var _this$props2 = this.props,\n          columnCount = _this$props2.columnCount,\n          rowCount = _this$props2.rowCount;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n      instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n    }\n    /**\n     * Forced recompute of row heights and column widths.\n     * This function should be called if dynamic column or row sizes have changed but nothing else has.\n     * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n     */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref4$columnIndex = _ref4.columnIndex,\n          columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n          _ref4$rowIndex = _ref4.rowIndex,\n          rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n      var _this$props3 = this.props,\n          scrollToColumn = _this$props3.scrollToColumn,\n          scrollToRow = _this$props3.scrollToRow;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n      instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n      // In this case the cDU handler can't know if they changed.\n      // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n      this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n      this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n      // Invalid row heights likely mean invalid cached content as well.\n\n      this._styleCache = {};\n      this._cellCache = {};\n      this.forceUpdate();\n    }\n    /**\n     * Ensure column and row are visible.\n     */\n\n  }, {\n    key: \"scrollToCell\",\n    value: function scrollToCell(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n      var columnCount = this.props.columnCount;\n      var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n      // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n      if (columnCount > 1 && columnIndex !== undefined) {\n        this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n          scrollToColumn: columnIndex\n        }));\n      }\n\n      if (rowIndex !== undefined) {\n        this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n          scrollToRow: rowIndex\n        }));\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props4 = this.props,\n          getScrollbarSize = _this$props4.getScrollbarSize,\n          height = _this$props4.height,\n          scrollLeft = _this$props4.scrollLeft,\n          scrollToColumn = _this$props4.scrollToColumn,\n          scrollTop = _this$props4.scrollTop,\n          scrollToRow = _this$props4.scrollToRow,\n          width = _this$props4.width;\n      var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n      this._initialScrollTop = 0;\n      this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n      // In that event we need to remeasure.\n\n\n      if (!instanceProps.scrollbarSizeMeasured) {\n        this.setState(function (prevState) {\n          var stateUpdate = _objectSpread({}, prevState, {\n            needToResetStyleCache: false\n          });\n\n          stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n          stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n          return stateUpdate;\n        });\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n        var stateUpdate = Grid._getScrollToPositionStateUpdate({\n          prevState: this.state,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n\n        if (stateUpdate) {\n          stateUpdate.needToResetStyleCache = false;\n          this.setState(stateUpdate);\n        }\n      } // refs don't work in `react-test-renderer`\n\n\n      if (this._scrollingContainer) {\n        // setting the ref's scrollLeft and scrollTop.\n        // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n        if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n          this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n        }\n\n        if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n          this._scrollingContainer.scrollTop = this.state.scrollTop;\n        }\n      } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n      // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n      var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n      if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollLeftForScrollToColumn();\n      }\n\n      if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollTopForScrollToRow();\n      } // Update onRowsRendered callback\n\n\n      this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft || 0,\n        scrollTop: scrollTop || 0,\n        totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n        totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n      });\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n    /**\n     * @private\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) New scroll-to-cell props have been set\n     */\n\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this2 = this;\n\n      var _this$props5 = this.props,\n          autoHeight = _this$props5.autoHeight,\n          autoWidth = _this$props5.autoWidth,\n          columnCount = _this$props5.columnCount,\n          height = _this$props5.height,\n          rowCount = _this$props5.rowCount,\n          scrollToAlignment = _this$props5.scrollToAlignment,\n          scrollToColumn = _this$props5.scrollToColumn,\n          scrollToRow = _this$props5.scrollToRow,\n          width = _this$props5.width;\n      var _this$state = this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n          scrollTop = _this$state.scrollTop,\n          instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n      // In this case we may have to restore a previously-specified scroll offset.\n      // For more info see bvaughn/react-virtualized/issues/218\n\n\n      var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n      // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n      // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n      // So we only set these when we require an adjustment of the scroll position.\n      // See issue #2 for more information.\n\n      if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n        // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n        // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n        if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollLeft = scrollLeft;\n        }\n\n        if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollTop = scrollTop;\n        }\n      } // Special case where the previous size was 0:\n      // In this case we don't show any windowed cells at all.\n      // So we should always recalculate offset afterwards.\n\n\n      var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n      // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n      if (this._recomputeScrollLeftFlag) {\n        this._recomputeScrollLeftFlag = false;\n\n        this._updateScrollLeftForScrollToColumn(this.props);\n      } else {\n        updateScrollIndexHelper({\n          cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          previousCellsCount: prevProps.columnCount,\n          previousCellSize: prevProps.columnWidth,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToColumn,\n          previousSize: prevProps.width,\n          scrollOffset: scrollLeft,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToColumn,\n          size: width,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n          }\n        });\n      }\n\n      if (this._recomputeScrollTopFlag) {\n        this._recomputeScrollTopFlag = false;\n\n        this._updateScrollTopForScrollToRow(this.props);\n      } else {\n        updateScrollIndexHelper({\n          cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          previousCellsCount: prevProps.rowCount,\n          previousCellSize: prevProps.rowHeight,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToRow,\n          previousSize: prevProps.height,\n          scrollOffset: scrollTop,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToRow,\n          size: height,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollTopForScrollToRow(_this2.props);\n          }\n        });\n      } // Update onRowsRendered callback if start/stop indices have changed\n\n\n      this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n      if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n        this._invokeOnScrollMemoizer({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          totalColumnsWidth: totalColumnsWidth,\n          totalRowsHeight: totalRowsHeight\n        });\n      }\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._disablePointerEventsTimeoutId) {\n        cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n      }\n    }\n    /**\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) Empty content (0 rows or columns)\n     * 2) New scroll props overriding the current state\n     * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          autoContainerWidth = _this$props6.autoContainerWidth,\n          autoHeight = _this$props6.autoHeight,\n          autoWidth = _this$props6.autoWidth,\n          className = _this$props6.className,\n          containerProps = _this$props6.containerProps,\n          containerRole = _this$props6.containerRole,\n          containerStyle = _this$props6.containerStyle,\n          height = _this$props6.height,\n          id = _this$props6.id,\n          noContentRenderer = _this$props6.noContentRenderer,\n          role = _this$props6.role,\n          style = _this$props6.style,\n          tabIndex = _this$props6.tabIndex,\n          width = _this$props6.width;\n      var _this$state2 = this.state,\n          instanceProps = _this$state2.instanceProps,\n          needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n      var isScrolling = this._isScrolling();\n\n      var gridStyle = {\n        boxSizing: 'border-box',\n        direction: 'ltr',\n        height: autoHeight ? 'auto' : height,\n        position: 'relative',\n        width: autoWidth ? 'auto' : width,\n        WebkitOverflowScrolling: 'touch',\n        willChange: 'transform'\n      };\n\n      if (needToResetStyleCache) {\n        this._styleCache = {};\n      } // calculate _styleCache here\n      // if state.isScrolling (not from _isScrolling) then reset\n\n\n      if (!this.state.isScrolling) {\n        this._resetStyleCache();\n      } // calculate children to render here\n\n\n      this._calculateChildrenToRender(this.props, this.state);\n\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n      // Otherwise once scrollbars appear they may not disappear again.\n      // For more info see issue #116\n\n      var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n      var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n      if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n        this._horizontalScrollBarSize = horizontalScrollBarSize;\n        this._verticalScrollBarSize = verticalScrollBarSize;\n        this._scrollbarPresenceChanged = true;\n      } // Also explicitly init styles to 'auto' if scrollbars are required.\n      // This works around an obscure edge case where external CSS styles have not yet been loaded,\n      // But an initial scroll index of offset is set as an external prop.\n      // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n      // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n      gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n      gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n      var childrenToDisplay = this._childrenToDisplay;\n      var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n      return React.createElement(\"div\", _extends({\n        ref: this._setScrollingContainerRef\n      }, containerProps, {\n        \"aria-label\": this.props['aria-label'],\n        \"aria-readonly\": this.props['aria-readonly'],\n        className: clsx('ReactVirtualized__Grid', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: role,\n        style: _objectSpread({}, gridStyle, {}, style),\n        tabIndex: tabIndex\n      }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n        className: \"ReactVirtualized__Grid__innerScrollContainer\",\n        role: containerRole,\n        style: _objectSpread({\n          width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n          height: totalRowsHeight,\n          maxWidth: totalColumnsWidth,\n          maxHeight: totalRowsHeight,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          position: 'relative'\n        }, containerStyle)\n      }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n    }\n    /* ---------------------------- Helper methods ---------------------------- */\n\n  }, {\n    key: \"_calculateChildrenToRender\",\n    value: function _calculateChildrenToRender() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      var cellRenderer = props.cellRenderer,\n          cellRangeRenderer = props.cellRangeRenderer,\n          columnCount = props.columnCount,\n          deferredMeasurementCache = props.deferredMeasurementCache,\n          height = props.height,\n          overscanColumnCount = props.overscanColumnCount,\n          overscanIndicesGetter = props.overscanIndicesGetter,\n          overscanRowCount = props.overscanRowCount,\n          rowCount = props.rowCount,\n          width = props.width,\n          isScrollingOptOut = props.isScrollingOptOut;\n      var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n          scrollDirectionVertical = state.scrollDirectionVertical,\n          instanceProps = state.instanceProps;\n      var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n      var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n      var isScrolling = this._isScrolling(props, state);\n\n      this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n      if (height > 0 && width > 0) {\n        var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n          containerSize: height,\n          offset: scrollTop\n        });\n        var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: height,\n          offset: scrollTop\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        this._renderedColumnStartIndex = visibleColumnIndices.start;\n        this._renderedColumnStopIndex = visibleColumnIndices.stop;\n        this._renderedRowStartIndex = visibleRowIndices.start;\n        this._renderedRowStopIndex = visibleRowIndices.stop;\n        var overscanColumnIndices = overscanIndicesGetter({\n          direction: 'horizontal',\n          cellCount: columnCount,\n          overscanCellsCount: overscanColumnCount,\n          scrollDirection: scrollDirectionHorizontal,\n          startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n          stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n        });\n        var overscanRowIndices = overscanIndicesGetter({\n          direction: 'vertical',\n          cellCount: rowCount,\n          overscanCellsCount: overscanRowCount,\n          scrollDirection: scrollDirectionVertical,\n          startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n          stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n        var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n        var rowStartIndex = overscanRowIndices.overscanStartIndex;\n        var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n        if (deferredMeasurementCache) {\n          // If rows have a dynamic height, scan the rows we are about to render.\n          // If any have not yet been measured, then we need to render all columns initially,\n          // Because the height of the row is equal to the tallest cell within that row,\n          // (And so we can't know the height without measuring all column-cells first).\n          if (!deferredMeasurementCache.hasFixedHeight()) {\n            for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n              if (!deferredMeasurementCache.has(rowIndex, 0)) {\n                columnStartIndex = 0;\n                columnStopIndex = columnCount - 1;\n                break;\n              }\n            }\n          } // If columns have a dynamic width, scan the columns we are about to render.\n          // If any have not yet been measured, then we need to render all rows initially,\n          // Because the width of the column is equal to the widest cell within that column,\n          // (And so we can't know the width without measuring all row-cells first).\n\n\n          if (!deferredMeasurementCache.hasFixedWidth()) {\n            for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n              if (!deferredMeasurementCache.has(0, columnIndex)) {\n                rowStartIndex = 0;\n                rowStopIndex = rowCount - 1;\n                break;\n              }\n            }\n          }\n        }\n\n        this._childrenToDisplay = cellRangeRenderer({\n          cellCache: this._cellCache,\n          cellRenderer: cellRenderer,\n          columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          columnStartIndex: columnStartIndex,\n          columnStopIndex: columnStopIndex,\n          deferredMeasurementCache: deferredMeasurementCache,\n          horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n          isScrolling: isScrolling,\n          isScrollingOptOut: isScrollingOptOut,\n          parent: this,\n          rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          rowStartIndex: rowStartIndex,\n          rowStopIndex: rowStopIndex,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          styleCache: this._styleCache,\n          verticalOffsetAdjustment: verticalOffsetAdjustment,\n          visibleColumnIndices: visibleColumnIndices,\n          visibleRowIndices: visibleRowIndices\n        }); // update the indices\n\n        this._columnStartIndex = columnStartIndex;\n        this._columnStopIndex = columnStopIndex;\n        this._rowStartIndex = rowStartIndex;\n        this._rowStopIndex = rowStopIndex;\n      }\n    }\n    /**\n     * Sets an :isScrolling flag for a small window of time.\n     * This flag is used to disable pointer events on the scrollable portion of the Grid.\n     * This prevents jerky/stuttery mouse-wheel scrolling.\n     */\n\n  }, {\n    key: \"_debounceScrollEnded\",\n    value: function _debounceScrollEnded() {\n      var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n      if (this._disablePointerEventsTimeoutId) {\n        cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n      }\n\n      this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n    }\n  }, {\n    key: \"_handleInvalidatedGridSize\",\n\n    /**\n     * Check for batched CellMeasurer size invalidations.\n     * This will occur the first time one or more previously unmeasured cells are rendered.\n     */\n    value: function _handleInvalidatedGridSize() {\n      if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n        var columnIndex = this._deferredInvalidateColumnIndex;\n        var rowIndex = this._deferredInvalidateRowIndex;\n        this._deferredInvalidateColumnIndex = null;\n        this._deferredInvalidateRowIndex = null;\n        this.recomputeGridSize({\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        });\n      }\n    }\n  }, {\n    key: \"_invokeOnScrollMemoizer\",\n    value: function _invokeOnScrollMemoizer(_ref6) {\n      var _this3 = this;\n\n      var scrollLeft = _ref6.scrollLeft,\n          scrollTop = _ref6.scrollTop,\n          totalColumnsWidth = _ref6.totalColumnsWidth,\n          totalRowsHeight = _ref6.totalRowsHeight;\n\n      this._onScrollMemoizer({\n        callback: function callback(_ref7) {\n          var scrollLeft = _ref7.scrollLeft,\n              scrollTop = _ref7.scrollTop;\n          var _this3$props = _this3.props,\n              height = _this3$props.height,\n              onScroll = _this3$props.onScroll,\n              width = _this3$props.width;\n          onScroll({\n            clientHeight: height,\n            clientWidth: width,\n            scrollHeight: totalRowsHeight,\n            scrollLeft: scrollLeft,\n            scrollTop: scrollTop,\n            scrollWidth: totalColumnsWidth\n          });\n        },\n        indices: {\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        }\n      });\n    }\n  }, {\n    key: \"_isScrolling\",\n    value: function _isScrolling() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      // If isScrolling is defined in props, use it to override the value in state\n      // This is a performance optimization for WindowScroller + Grid\n      return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n    }\n  }, {\n    key: \"_maybeCallOnScrollbarPresenceChange\",\n    value: function _maybeCallOnScrollbarPresenceChange() {\n      if (this._scrollbarPresenceChanged) {\n        var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n        this._scrollbarPresenceChanged = false;\n        onScrollbarPresenceChange({\n          horizontal: this._horizontalScrollBarSize > 0,\n          size: this.state.instanceProps.scrollbarSize,\n          vertical: this._verticalScrollBarSize > 0\n        });\n      }\n    }\n  }, {\n    key: \"scrollToPosition\",\n\n    /**\n     * Scroll to the specified offset(s).\n     * Useful for animating position changes.\n     */\n    value: function scrollToPosition(_ref8) {\n      var scrollLeft = _ref8.scrollLeft,\n          scrollTop = _ref8.scrollTop;\n\n      var stateUpdate = Grid._getScrollToPositionStateUpdate({\n        prevState: this.state,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      });\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollLeft(props, state);\n    }\n  }, {\n    key: \"_updateScrollLeftForScrollToColumn\",\n    value: function _updateScrollLeftForScrollToColumn() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollTop(props, state);\n    }\n  }, {\n    key: \"_resetStyleCache\",\n    value: function _resetStyleCache() {\n      var styleCache = this._styleCache;\n      var cellCache = this._cellCache;\n      var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n      // This makes Grid simpler to use (since cells commonly change).\n      // And it keeps the caches from growing too large.\n      // Performance is most sensitive when a user is scrolling.\n      // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n      // This keeps the cellCache to a resonable size.\n\n      this._cellCache = {};\n      this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n      for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n        for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n          var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n          this._styleCache[key] = styleCache[key];\n\n          if (isScrollingOptOut) {\n            this._cellCache[key] = cellCache[key];\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_updateScrollTopForScrollToRow\",\n    value: function _updateScrollTopForScrollToRow() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var newState = {};\n\n      if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n        newState.scrollLeft = 0;\n        newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n        // scrollTo{Column,Row} should override scroll{Left,Top}\n      } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n        Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: nextProps.scrollLeft,\n          scrollTop: nextProps.scrollTop\n        }));\n      }\n\n      var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n      newState.needToResetStyleCache = false;\n\n      if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n        // Reset cache. set it to {} in render\n        newState.needToResetStyleCache = true;\n      }\n\n      instanceProps.columnSizeAndPositionManager.configure({\n        cellCount: nextProps.columnCount,\n        estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n      });\n      instanceProps.rowSizeAndPositionManager.configure({\n        cellCount: nextProps.rowCount,\n        estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n      });\n\n      if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n        instanceProps.prevColumnCount = 0;\n        instanceProps.prevRowCount = 0;\n      } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n      if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n        Object.assign(newState, {\n          isScrolling: false\n        });\n      }\n\n      var maybeStateA;\n      var maybeStateB;\n      calculateSizeAndPositionDataAndUpdateScrollOffset({\n        cellCount: instanceProps.prevColumnCount,\n        cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.columnSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.columnCount,\n        nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n        nextScrollToIndex: nextProps.scrollToColumn,\n        scrollToIndex: instanceProps.prevScrollToColumn,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n        }\n      });\n      calculateSizeAndPositionDataAndUpdateScrollOffset({\n        cellCount: instanceProps.prevRowCount,\n        cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.rowSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.rowCount,\n        nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n        nextScrollToIndex: nextProps.scrollToRow,\n        scrollToIndex: instanceProps.prevScrollToRow,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n        }\n      });\n      instanceProps.prevColumnCount = nextProps.columnCount;\n      instanceProps.prevColumnWidth = nextProps.columnWidth;\n      instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n      instanceProps.prevRowCount = nextProps.rowCount;\n      instanceProps.prevRowHeight = nextProps.rowHeight;\n      instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n      instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n      instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n      if (instanceProps.scrollbarSize === undefined) {\n        instanceProps.scrollbarSizeMeasured = false;\n        instanceProps.scrollbarSize = 0;\n      } else {\n        instanceProps.scrollbarSizeMeasured = true;\n      }\n\n      newState.instanceProps = instanceProps;\n      return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n    }\n  }, {\n    key: \"_getEstimatedColumnSize\",\n    value: function _getEstimatedColumnSize(props) {\n      return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n    }\n  }, {\n    key: \"_getEstimatedRowSize\",\n    value: function _getEstimatedRowSize(props) {\n      return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n    }\n  }, {\n    key: \"_getScrollToPositionStateUpdate\",\n\n    /**\n     * Get the updated state after scrolling to\n     * scrollLeft and scrollTop\n     */\n    value: function _getScrollToPositionStateUpdate(_ref9) {\n      var prevState = _ref9.prevState,\n          scrollLeft = _ref9.scrollLeft,\n          scrollTop = _ref9.scrollTop;\n      var newState = {\n        scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n      };\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n        newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n        newState.scrollLeft = scrollLeft;\n      }\n\n      if (typeof scrollTop === 'number' && scrollTop >= 0) {\n        newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n        newState.scrollTop = scrollTop;\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n        return newState;\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_wrapSizeGetter\",\n    value: function _wrapSizeGetter(value) {\n      return typeof value === 'function' ? value : function () {\n        return value;\n      };\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft(nextProps, prevState) {\n      var columnCount = nextProps.columnCount,\n          height = nextProps.height,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToColumn = nextProps.scrollToColumn,\n          width = nextProps.width;\n      var scrollLeft = prevState.scrollLeft,\n          instanceProps = prevState.instanceProps;\n\n      if (columnCount > 0) {\n        var finalColumn = columnCount - 1;\n        var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n        return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: width - scrollBarSize,\n          currentOffset: scrollLeft,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n    value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n      var scrollLeft = prevState.scrollLeft;\n\n      var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n      if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: calculatedScrollLeft,\n          scrollTop: -1\n        });\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop(nextProps, prevState) {\n      var height = nextProps.height,\n          rowCount = nextProps.rowCount,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToRow = nextProps.scrollToRow,\n          width = nextProps.width;\n      var scrollTop = prevState.scrollTop,\n          instanceProps = prevState.instanceProps;\n\n      if (rowCount > 0) {\n        var finalRow = rowCount - 1;\n        var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n        return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: height - scrollBarSize,\n          currentOffset: scrollTop,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollTopForScrollToRowStateUpdate\",\n    value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n      var scrollTop = prevState.scrollTop;\n\n      var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n      if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: -1,\n          scrollTop: calculatedScrollTop\n        });\n      }\n\n      return {};\n    }\n  }]);\n\n  return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": PropTypes.string.isRequired,\n  \"aria-readonly\": PropTypes.bool,\n\n  /**\n   * Set the width of the inner scrollable container to 'auto'.\n   * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n   */\n  \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoHeight\": PropTypes.bool.isRequired,\n\n  /**\n   * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoWidth\": PropTypes.bool.isRequired,\n\n  /** Responsible for rendering a cell given an row and column index.  */\n  \"cellRenderer\": function cellRenderer() {\n    return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a group of cells given their index ranges.  */\n  \"cellRangeRenderer\": function cellRangeRenderer() {\n    return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Optional custom CSS class name to attach to root Grid element.  */\n  \"className\": PropTypes.string,\n\n  /** Number of columns in grid.  */\n  \"columnCount\": PropTypes.number.isRequired,\n\n  /** Either a fixed column width (number) or a function that returns the width of a column given its index.  */\n  \"columnWidth\": function columnWidth() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Unfiltered props for the Grid container. */\n  \"containerProps\": PropTypes.object,\n\n  /** ARIA role for the cell-container.  */\n  \"containerRole\": PropTypes.string.isRequired,\n\n  /** Optional inline style applied to inner cell-container */\n  \"containerStyle\": PropTypes.object.isRequired,\n\n  /**\n   * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n   * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n   */\n  \"deferredMeasurementCache\": PropTypes.object,\n\n  /**\n   * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n   * The estimated total width is adjusted as columns are rendered.\n   */\n  \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n  /**\n   * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": PropTypes.number.isRequired,\n\n  /** Exposed for testing purposes only.  */\n  \"getScrollbarSize\": PropTypes.func.isRequired,\n\n  /** Height of Grid; this property determines the number of visible (vs virtualized) rows.  */\n  \"height\": PropTypes.number.isRequired,\n\n  /** Optional custom id to attach to root Grid element.  */\n  \"id\": PropTypes.string,\n\n  /**\n   * Override internal is-scrolling state tracking.\n   * This property is primarily intended for use with the WindowScroller component.\n   */\n  \"isScrolling\": PropTypes.bool,\n\n  /**\n   * Opt-out of isScrolling param passed to cellRangeRenderer.\n   * To avoid the extra render when scroll stops.\n   */\n  \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n  /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0.  */\n  \"noContentRenderer\": function noContentRenderer() {\n    return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /**\n   * Called whenever a horizontal or vertical scrollbar is added or removed.\n   * This prop is not intended for end-user use;\n   * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n   */\n  \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n  /** Callback invoked with information about the section of the Grid that was just rendered.  */\n  \"onSectionRendered\": PropTypes.func.isRequired,\n\n  /**\n   * Number of columns to render before/after the visible section of the grid.\n   * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanColumnCount\": PropTypes.number.isRequired,\n\n  /**\n   * Calculates the number of cells to overscan before and after a specified range.\n   * This function ensures that overscanning doesn't exceed the available cells.\n   */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible section of the grid.\n   * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanRowCount\": PropTypes.number.isRequired,\n\n  /** ARIA role for the grid element.  */\n  \"role\": PropTypes.string.isRequired,\n\n  /**\n   * Either a fixed row height (number) or a function that returns the height of a row given its index.\n   * Should implement the following interface: ({ index: number }): number\n   */\n  \"rowHeight\": function rowHeight() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in grid.  */\n  \"rowCount\": PropTypes.number.isRequired,\n\n  /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n  /** Horizontal offset. */\n  \"scrollLeft\": PropTypes.number,\n\n  /**\n   * Controls scroll-to-cell behavior of the Grid.\n   * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n   * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n   */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Column index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToColumn\": PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": PropTypes.number,\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToRow\": PropTypes.number.isRequired,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": PropTypes.number,\n\n  /** Width of Grid; this property determines the number of visible (vs virtualized) columns.  */\n  \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n  'aria-label': 'grid',\n  'aria-readonly': true,\n  autoContainerWidth: false,\n  autoHeight: false,\n  autoWidth: false,\n  cellRangeRenderer: defaultCellRangeRenderer,\n  containerRole: 'rowgroup',\n  containerStyle: {},\n  estimatedColumnSize: 100,\n  estimatedRowSize: 30,\n  getScrollbarSize: scrollbarSize,\n  noContentRenderer: renderNull,\n  onScroll: function onScroll() {},\n  onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n  onSectionRendered: function onSectionRendered() {},\n  overscanColumnCount: 0,\n  overscanIndicesGetter: defaultOverscanIndicesGetter,\n  overscanRowCount: 10,\n  role: 'grid',\n  scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n  scrollToAlignment: 'auto',\n  scrollToColumn: -1,\n  scrollToRow: -1,\n  style: {},\n  tabIndex: 0,\n  isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n  \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n  return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n  var start; // wait for end of processing current event handler, because event handler may be long\n\n  Promise.resolve().then(function () {\n    start = Date.now();\n  });\n\n  var timeout = function timeout() {\n    if (Date.now() - start >= delay) {\n      callback.call();\n    } else {\n      frame.id = raf(timeout);\n    }\n  };\n\n  var frame = {\n    id: raf(timeout)\n  };\n  return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n    };\n  }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n  var cellCache = _ref.cellCache,\n      cellRenderer = _ref.cellRenderer,\n      columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n      columnStartIndex = _ref.columnStartIndex,\n      columnStopIndex = _ref.columnStopIndex,\n      deferredMeasurementCache = _ref.deferredMeasurementCache,\n      horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n      isScrolling = _ref.isScrolling,\n      isScrollingOptOut = _ref.isScrollingOptOut,\n      parent = _ref.parent,\n      rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n      rowStartIndex = _ref.rowStartIndex,\n      rowStopIndex = _ref.rowStopIndex,\n      styleCache = _ref.styleCache,\n      verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n      visibleColumnIndices = _ref.visibleColumnIndices,\n      visibleRowIndices = _ref.visibleRowIndices;\n  var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n  // User cannot scroll beyond these size limitations.\n  // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n  // We should never cache styles for compressed offsets though as this can lead to bugs.\n  // See issue #576 for more.\n\n  var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n  var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n  for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n    var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n    for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n      var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n      var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n      var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n      var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n      if (canCacheStyle && styleCache[key]) {\n        style = styleCache[key];\n      } else {\n        // In deferred mode, cells will be initially rendered before we know their size.\n        // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n        if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n          // Position not-yet-measured cells at top/left 0,0,\n          // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n          // Positioning them further to the right/bottom influences their measured size.\n          style = {\n            height: 'auto',\n            left: 0,\n            position: 'absolute',\n            top: 0,\n            width: 'auto'\n          };\n        } else {\n          style = {\n            height: rowDatum.size,\n            left: columnDatum.offset + horizontalOffsetAdjustment,\n            position: 'absolute',\n            top: rowDatum.offset + verticalOffsetAdjustment,\n            width: columnDatum.size\n          };\n          styleCache[key] = style;\n        }\n      }\n\n      var cellRendererParams = {\n        columnIndex: columnIndex,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent,\n        rowIndex: rowIndex,\n        style: style\n      };\n      var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n      // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n      // If a scroll is in progress- cache and reuse cells.\n      // This cache will be thrown away once scrolling completes.\n      // However if we are scaling scroll positions and sizes, we should also avoid caching.\n      // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n      // For more info refer to issue #395\n      //\n      // If isScrollingOptOut is specified, we always cache cells.\n      // For more info refer to issue #1028\n\n      if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n        if (!cellCache[key]) {\n          cellCache[key] = cellRenderer(cellRendererParams);\n        }\n\n        renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n        // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n      } else {\n        renderedCell = cellRenderer(cellRendererParams);\n      }\n\n      if (renderedCell == null || renderedCell === false) {\n        continue;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        warnAboutMissingStyle(parent, renderedCell);\n      }\n\n      renderedCells.push(renderedCell);\n    }\n  }\n\n  return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderedCell) {\n      // If the direct child is a CellMeasurer, then we should check its child\n      // See issue #611\n      if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n        renderedCell = renderedCell.props.children;\n      }\n\n      if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n        parent.__warnedAboutMissingStyle = true;\n        console.warn('Rendered cell should include style property for positioning.');\n      }\n    }\n  }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n  // Make sure we render at least 1 cell extra before and after (except near boundaries)\n  // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n  // For more info see issues #625\n  overscanCellsCount = Math.max(1, overscanCellsCount);\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - 1),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n    };\n  }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n  \"scrollToColumn\": PropTypes.number.isRequired,\n  \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ArrowKeyStepper, _React$PureComponent);\n\n  function ArrowKeyStepper() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, ArrowKeyStepper);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      scrollToColumn: 0,\n      scrollToRow: 0,\n      instanceProps: {\n        prevScrollToColumn: 0,\n        prevScrollToRow: 0\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n      var _this$props = _this.props,\n          columnCount = _this$props.columnCount,\n          disabled = _this$props.disabled,\n          mode = _this$props.mode,\n          rowCount = _this$props.rowCount;\n\n      if (disabled) {\n        return;\n      }\n\n      var _this$_getScrollState = _this._getScrollState(),\n          scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n          scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n      var _this$_getScrollState2 = _this._getScrollState(),\n          scrollToColumn = _this$_getScrollState2.scrollToColumn,\n          scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n      // This is to keep the grid from scrolling after the snap-to update.\n\n\n      switch (event.key) {\n        case 'ArrowDown':\n          scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n          break;\n\n        case 'ArrowLeft':\n          scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n          break;\n\n        case 'ArrowRight':\n          scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n          break;\n\n        case 'ArrowUp':\n          scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n          break;\n      }\n\n      if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n        event.preventDefault();\n\n        _this._updateScrollState({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n      var columnStartIndex = _ref.columnStartIndex,\n          columnStopIndex = _ref.columnStopIndex,\n          rowStartIndex = _ref.rowStartIndex,\n          rowStopIndex = _ref.rowStopIndex;\n      _this._columnStartIndex = columnStartIndex;\n      _this._columnStopIndex = columnStopIndex;\n      _this._rowStartIndex = rowStartIndex;\n      _this._rowStopIndex = rowStopIndex;\n    });\n\n    return _this;\n  }\n\n  _createClass(ArrowKeyStepper, [{\n    key: \"setScrollIndexes\",\n    value: function setScrollIndexes(_ref2) {\n      var scrollToColumn = _ref2.scrollToColumn,\n          scrollToRow = _ref2.scrollToRow;\n      this.setState({\n        scrollToRow: scrollToRow,\n        scrollToColumn: scrollToColumn\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          className = _this$props2.className,\n          children = _this$props2.children;\n\n      var _this$_getScrollState3 = this._getScrollState(),\n          scrollToColumn = _this$_getScrollState3.scrollToColumn,\n          scrollToRow = _this$_getScrollState3.scrollToRow;\n\n      return React.createElement(\"div\", {\n        className: className,\n        onKeyDown: this._onKeyDown\n      }, children({\n        onSectionRendered: this._onSectionRendered,\n        scrollToColumn: scrollToColumn,\n        scrollToRow: scrollToRow\n      }));\n    }\n  }, {\n    key: \"_getScrollState\",\n    value: function _getScrollState() {\n      return this.props.isControlled ? this.props : this.state;\n    }\n  }, {\n    key: \"_updateScrollState\",\n    value: function _updateScrollState(_ref3) {\n      var scrollToColumn = _ref3.scrollToColumn,\n          scrollToRow = _ref3.scrollToRow;\n      var _this$props3 = this.props,\n          isControlled = _this$props3.isControlled,\n          onScrollToChange = _this$props3.onScrollToChange;\n\n      if (typeof onScrollToChange === 'function') {\n        onScrollToChange({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n\n      if (!isControlled) {\n        this.setState({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.isControlled) {\n        return {};\n      }\n\n      if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n        return _objectSpread({}, prevState, {\n          scrollToColumn: nextProps.scrollToColumn,\n          scrollToRow: nextProps.scrollToRow,\n          instanceProps: {\n            prevScrollToColumn: nextProps.scrollToColumn,\n            prevScrollToRow: nextProps.scrollToRow\n          }\n        });\n      }\n\n      return {};\n    }\n  }]);\n\n  return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"children\": PropTypes.func.isRequired,\n  \"className\": PropTypes.string,\n  \"columnCount\": PropTypes.number.isRequired,\n  \"disabled\": PropTypes.bool.isRequired,\n  \"isControlled\": PropTypes.bool.isRequired,\n  \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n  \"onScrollToChange\": PropTypes.func,\n  \"rowCount\": PropTypes.number.isRequired,\n  \"scrollToColumn\": PropTypes.number.isRequired,\n  \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n  disabled: false,\n  isControlled: false,\n  mode: 'edges',\n  scrollToColumn: 0,\n  scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(AutoSizer, _React$Component);\n\n  function AutoSizer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, AutoSizer);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      height: _this.props.defaultHeight || 0,\n      width: _this.props.defaultWidth || 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n      var _this$props = _this.props,\n          disableHeight = _this$props.disableHeight,\n          disableWidth = _this$props.disableWidth,\n          onResize = _this$props.onResize;\n\n      if (_this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n        var height = _this._parentNode.offsetHeight || 0;\n        var width = _this._parentNode.offsetWidth || 0;\n        var win = _this._window || window;\n        var style = win.getComputedStyle(_this._parentNode) || {};\n        var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n        var paddingRight = parseInt(style.paddingRight, 10) || 0;\n        var paddingTop = parseInt(style.paddingTop, 10) || 0;\n        var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n        var newHeight = height - paddingTop - paddingBottom;\n        var newWidth = width - paddingLeft - paddingRight;\n\n        if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n          _this.setState({\n            height: height - paddingTop - paddingBottom,\n            width: width - paddingLeft - paddingRight\n          });\n\n          onResize({\n            height: height,\n            width: width\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n      _this._autoSizer = autoSizer;\n    });\n\n    return _this;\n  }\n\n  _createClass(AutoSizer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var nonce = this.props.nonce;\n\n      if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n        // Delay access of parentNode until mount.\n        // This handles edge-cases where the component has already been unmounted before its ref has been set,\n        // As well as libraries like react-lite which have a slightly different lifecycle.\n        this._parentNode = this._autoSizer.parentNode;\n        this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n\n        this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n        this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n        this._onResize();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._detectElementResize && this._parentNode) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          className = _this$props2.className,\n          disableHeight = _this$props2.disableHeight,\n          disableWidth = _this$props2.disableWidth,\n          style = _this$props2.style;\n      var _this$state = this.state,\n          height = _this$state.height,\n          width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n      // Inner component should overflow and use calculated width/height.\n      // See issue #68 for more information.\n\n      var outerStyle = {\n        overflow: 'visible'\n      };\n      var childParams = {};\n\n      if (!disableHeight) {\n        outerStyle.height = 0;\n        childParams.height = height;\n      }\n\n      if (!disableWidth) {\n        outerStyle.width = 0;\n        childParams.width = width;\n      }\n      /**\n       * TODO: Avoid rendering children before the initial measurements have been collected.\n       * At best this would just be wasting cycles.\n       * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n       * Note that if default width/height props were provided this would still work with SSR.\n      if (\n        height !== 0 &&\n        width !== 0\n      ) {\n        child = children({ height, width })\n      }\n      */\n\n\n      return React.createElement(\"div\", {\n        className: className,\n        ref: this._setRef,\n        style: _objectSpread({}, outerStyle, {}, style)\n      }, children(childParams));\n    }\n  }]);\n\n  return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  /** Function responsible for rendering children.*/\n  \"children\": PropTypes.func.isRequired,\n\n  /** Optional custom CSS class name to attach to root AutoSizer element.  */\n  \"className\": PropTypes.string,\n\n  /** Default height to use for initial render; useful for SSR */\n  \"defaultHeight\": PropTypes.number,\n\n  /** Default width to use for initial render; useful for SSR */\n  \"defaultWidth\": PropTypes.number,\n\n  /** Disable dynamic :height property */\n  \"disableHeight\": PropTypes.bool.isRequired,\n\n  /** Disable dynamic :width property */\n  \"disableWidth\": PropTypes.bool.isRequired,\n\n  /** Nonce of the inlined stylesheet for Content Security Policy */\n  \"nonce\": PropTypes.string,\n\n  /** Callback to be invoked on-resize */\n  \"onResize\": PropTypes.func.isRequired,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n  onResize: function onResize() {},\n  disableHeight: false,\n  disableWidth: false,\n  style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(CellMeasurer, _React$PureComponent);\n\n  function CellMeasurer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, CellMeasurer);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n      var _this$props = _this.props,\n          cache = _this$props.cache,\n          _this$props$columnInd = _this$props.columnIndex,\n          columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n          parent = _this$props.parent,\n          _this$props$rowIndex = _this$props.rowIndex,\n          rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n      var _this$_getCellMeasure = _this._getCellMeasurements(),\n          height = _this$_getCellMeasure.height,\n          width = _this$_getCellMeasure.width;\n\n      if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n        cache.set(rowIndex, columnIndex, width, height);\n\n        if (parent && typeof parent.recomputeGridSize === 'function') {\n          parent.recomputeGridSize({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n      if (element && !(element instanceof Element)) {\n        console.warn('CellMeasurer registerChild expects to be passed Element or null');\n      }\n\n      _this._child = element;\n\n      if (element) {\n        _this._maybeMeasureCell();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(CellMeasurer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return typeof children === 'function' ? children({\n        measure: this._measure,\n        registerChild: this._registerChild\n      }) : children;\n    }\n  }, {\n    key: \"_getCellMeasurements\",\n    value: function _getCellMeasurements() {\n      var cache = this.props.cache;\n      var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n      if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n        var styleWidth = node.style.width;\n        var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n        // It will have a hard-coded width/height from the previous measurement.\n        // The fact that we are measuring indicates this measurement is probably stale,\n        // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n        // See issue #593 for more info.\n        // Even if we are measuring initially- if we're inside of a MultiGrid component,\n        // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n        // eg top/left Grid renders before bottom/right Grid\n        // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n        if (!cache.hasFixedWidth()) {\n          node.style.width = 'auto';\n        }\n\n        if (!cache.hasFixedHeight()) {\n          node.style.height = 'auto';\n        }\n\n        var height = Math.ceil(node.offsetHeight);\n        var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n        if (styleWidth) {\n          node.style.width = styleWidth;\n        }\n\n        if (styleHeight) {\n          node.style.height = styleHeight;\n        }\n\n        return {\n          height: height,\n          width: width\n        };\n      } else {\n        return {\n          height: 0,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: \"_maybeMeasureCell\",\n    value: function _maybeMeasureCell() {\n      var _this$props2 = this.props,\n          cache = _this$props2.cache,\n          _this$props2$columnIn = _this$props2.columnIndex,\n          columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n          parent = _this$props2.parent,\n          _this$props2$rowIndex = _this$props2.rowIndex,\n          rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n      if (!cache.has(rowIndex, columnIndex)) {\n        var _this$_getCellMeasure2 = this._getCellMeasurements(),\n            height = _this$_getCellMeasure2.height,\n            width = _this$_getCellMeasure2.width;\n\n        cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n        if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n          parent.invalidateCellSizeAfterRender({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    }\n  }]);\n\n  return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"cache\": function cache() {\n    return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n  },\n  \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n  \"columnIndex\": PropTypes.number,\n  \"index\": PropTypes.number,\n  \"parent\": PropTypes.shape({\n    invalidateCellSizeAfterRender: PropTypes.func,\n    recomputeGridSize: PropTypes.func\n  }).isRequired,\n  \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n  CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var DEFAULT_HEIGHT = 30;\nexport var DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n  function CellMeasurerCache() {\n    var _this = this;\n\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, CellMeasurerCache);\n\n    _defineProperty(this, \"_cellHeightCache\", {});\n\n    _defineProperty(this, \"_cellWidthCache\", {});\n\n    _defineProperty(this, \"_columnWidthCache\", {});\n\n    _defineProperty(this, \"_rowHeightCache\", {});\n\n    _defineProperty(this, \"_defaultHeight\", void 0);\n\n    _defineProperty(this, \"_defaultWidth\", void 0);\n\n    _defineProperty(this, \"_minHeight\", void 0);\n\n    _defineProperty(this, \"_minWidth\", void 0);\n\n    _defineProperty(this, \"_keyMapper\", void 0);\n\n    _defineProperty(this, \"_hasFixedHeight\", void 0);\n\n    _defineProperty(this, \"_hasFixedWidth\", void 0);\n\n    _defineProperty(this, \"_columnCount\", 0);\n\n    _defineProperty(this, \"_rowCount\", 0);\n\n    _defineProperty(this, \"columnWidth\", function (_ref) {\n      var index = _ref.index;\n\n      var key = _this._keyMapper(0, index);\n\n      return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n    });\n\n    _defineProperty(this, \"rowHeight\", function (_ref2) {\n      var index = _ref2.index;\n\n      var key = _this._keyMapper(index, 0);\n\n      return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n    });\n\n    var defaultHeight = params.defaultHeight,\n        defaultWidth = params.defaultWidth,\n        fixedHeight = params.fixedHeight,\n        fixedWidth = params.fixedWidth,\n        keyMapper = params.keyMapper,\n        minHeight = params.minHeight,\n        minWidth = params.minWidth;\n    this._hasFixedHeight = fixedHeight === true;\n    this._hasFixedWidth = fixedWidth === true;\n    this._minHeight = minHeight || 0;\n    this._minWidth = minWidth || 0;\n    this._keyMapper = keyMapper || defaultKeyMapper;\n    this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n    this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n        console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n      }\n\n      if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n        console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n\n      if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n        console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n    }\n  }\n\n  _createClass(CellMeasurerCache, [{\n    key: \"clear\",\n    value: function clear(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      delete this._cellHeightCache[key];\n      delete this._cellWidthCache[key];\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"clearAll\",\n    value: function clearAll() {\n      this._cellHeightCache = {};\n      this._cellWidthCache = {};\n      this._columnWidthCache = {};\n      this._rowHeightCache = {};\n      this._rowCount = 0;\n      this._columnCount = 0;\n    }\n  }, {\n    key: \"hasFixedHeight\",\n    value: function hasFixedHeight() {\n      return this._hasFixedHeight;\n    }\n  }, {\n    key: \"hasFixedWidth\",\n    value: function hasFixedWidth() {\n      return this._hasFixedWidth;\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedHeight) {\n        return this._defaultHeight;\n      } else {\n        var _key = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n      }\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedWidth) {\n        return this._defaultWidth;\n      } else {\n        var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n      }\n    }\n  }, {\n    key: \"has\",\n    value: function has(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      return this._cellHeightCache[key] !== undefined;\n    }\n  }, {\n    key: \"set\",\n    value: function set(rowIndex, columnIndex, width, height) {\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      if (columnIndex >= this._columnCount) {\n        this._columnCount = columnIndex + 1;\n      }\n\n      if (rowIndex >= this._rowCount) {\n        this._rowCount = rowIndex + 1;\n      } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n      this._cellHeightCache[key] = height;\n      this._cellWidthCache[key] = width;\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"_updateCachedColumnAndRowSizes\",\n    value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n      // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n      // Pre-cache these derived values for faster lookup later.\n      // Reads are expected to occur more frequently than writes in this case.\n      // Only update non-fixed dimensions though to avoid doing unnecessary work.\n      if (!this._hasFixedWidth) {\n        var columnWidth = 0;\n\n        for (var i = 0; i < this._rowCount; i++) {\n          columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n        }\n\n        var columnKey = this._keyMapper(0, columnIndex);\n\n        this._columnWidthCache[columnKey] = columnWidth;\n      }\n\n      if (!this._hasFixedHeight) {\n        var rowHeight = 0;\n\n        for (var _i = 0; _i < this._columnCount; _i++) {\n          rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n        }\n\n        var rowKey = this._keyMapper(rowIndex, 0);\n\n        this._rowHeightCache[rowKey] = rowHeight;\n      }\n    }\n  }, {\n    key: \"defaultHeight\",\n    get: function get() {\n      return this._defaultHeight;\n    }\n  }, {\n    key: \"defaultWidth\",\n    get: function get() {\n      return this._defaultWidth;\n    }\n  }]);\n\n  return CellMeasurerCache;\n}();\n\nexport { CellMeasurerCache as default };\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n  return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n  OBSERVED: 'observed',\n  REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(CollectionView, _React$PureComponent);\n\n  // Invokes callbacks only when their values have changed.\n  function CollectionView() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, CollectionView);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n    // We handle this case in componentDidMount()\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      isScrolling: false,\n      scrollLeft: 0,\n      scrollTop: 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n    _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n      var _this$props = _this.props,\n          cellLayoutManager = _this$props.cellLayoutManager,\n          onSectionRendered = _this$props.onSectionRendered;\n\n      _this._onSectionRenderedMemoizer({\n        callback: onSectionRendered,\n        indices: {\n          indices: cellLayoutManager.getLastRenderedIndices()\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n      var _this$props2 = _this.props,\n          cellLayoutManager = _this$props2.cellLayoutManager,\n          height = _this$props2.height,\n          scrollToAlignment = _this$props2.scrollToAlignment,\n          scrollToCell = _this$props2.scrollToCell,\n          width = _this$props2.width;\n      var _this$state = _this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop;\n\n      if (scrollToCell >= 0) {\n        var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n          align: scrollToAlignment,\n          cellIndex: scrollToCell,\n          height: height,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          width: width\n        });\n\n        if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n          _this._setScrollPosition(scrollPosition);\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n      // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n      // See issue #404 for more information.\n      if (event.target !== _this._scrollingContainer) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n      var _this$props3 = _this.props,\n          cellLayoutManager = _this$props3.cellLayoutManager,\n          height = _this$props3.height,\n          isScrollingChange = _this$props3.isScrollingChange,\n          width = _this$props3.width;\n      var scrollbarSize = _this._scrollbarSize;\n\n      var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge.height,\n          totalWidth = _cellLayoutManager$ge.width;\n\n      var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n      var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n      if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n        // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n        // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n        // All things considered, this seems to be the best current work around that I'm aware of.\n        // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n        var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n        if (!_this.state.isScrolling) {\n          isScrollingChange(true);\n        }\n\n        _this.setState({\n          isScrolling: true,\n          scrollLeft: scrollLeft,\n          scrollPositionChangeReason: scrollPositionChangeReason,\n          scrollTop: scrollTop\n        });\n      }\n\n      _this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        totalWidth: totalWidth,\n        totalHeight: totalHeight\n      });\n    });\n\n    _this._scrollbarSize = getScrollbarSize();\n\n    if (_this._scrollbarSize === undefined) {\n      _this._scrollbarSizeMeasured = false;\n      _this._scrollbarSize = 0;\n    } else {\n      _this._scrollbarSizeMeasured = true;\n    }\n\n    return _this;\n  }\n  /**\n   * Forced recompute of cell sizes and positions.\n   * This function should be called if cell sizes have changed but nothing else has.\n   * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n   */\n\n\n  _createClass(CollectionView, [{\n    key: \"recomputeCellSizesAndPositions\",\n    value: function recomputeCellSizesAndPositions() {\n      this._calculateSizeAndPositionDataOnNextUpdate = true;\n      this.forceUpdate();\n    }\n    /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n    /**\n     * @private\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) Empty content (0 rows or columns)\n     * 2) New scroll props overriding the current state\n     * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n     */\n\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props4 = this.props,\n          cellLayoutManager = _this$props4.cellLayoutManager,\n          scrollLeft = _this$props4.scrollLeft,\n          scrollToCell = _this$props4.scrollToCell,\n          scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n      // In that event we need to remeasure.\n\n      if (!this._scrollbarSizeMeasured) {\n        this._scrollbarSize = getScrollbarSize();\n        this._scrollbarSizeMeasured = true;\n        this.setState({});\n      }\n\n      if (scrollToCell >= 0) {\n        this._updateScrollPositionForScrollToCell();\n      } else if (scrollLeft >= 0 || scrollTop >= 0) {\n        this._setScrollPosition({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n      } // Update onSectionRendered callback.\n\n\n      this._invokeOnSectionRenderedHelper();\n\n      var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge2.height,\n          totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft || 0,\n        scrollTop: scrollTop || 0,\n        totalHeight: totalHeight,\n        totalWidth: totalWidth\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$props5 = this.props,\n          height = _this$props5.height,\n          scrollToAlignment = _this$props5.scrollToAlignment,\n          scrollToCell = _this$props5.scrollToCell,\n          width = _this$props5.width;\n      var _this$state2 = this.state,\n          scrollLeft = _this$state2.scrollLeft,\n          scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n          scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n      // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n      // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n      // So we only set these when we require an adjustment of the scroll position.\n      // See issue #2 for more information.\n\n      if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n        if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n          this._scrollingContainer.scrollLeft = scrollLeft;\n        }\n\n        if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n          this._scrollingContainer.scrollTop = scrollTop;\n        }\n      } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n      if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n        this._updateScrollPositionForScrollToCell();\n      } // Update onRowsRendered callback if start/stop indices have changed\n\n\n      this._invokeOnSectionRenderedHelper();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._disablePointerEventsTimeoutId) {\n        clearTimeout(this._disablePointerEventsTimeoutId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          autoHeight = _this$props6.autoHeight,\n          cellCount = _this$props6.cellCount,\n          cellLayoutManager = _this$props6.cellLayoutManager,\n          className = _this$props6.className,\n          height = _this$props6.height,\n          horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n          id = _this$props6.id,\n          noContentRenderer = _this$props6.noContentRenderer,\n          style = _this$props6.style,\n          verticalOverscanSize = _this$props6.verticalOverscanSize,\n          width = _this$props6.width;\n      var _this$state3 = this.state,\n          isScrolling = _this$state3.isScrolling,\n          scrollLeft = _this$state3.scrollLeft,\n          scrollTop = _this$state3.scrollTop; // Memoization reset\n\n      if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n        this._lastRenderedCellCount = cellCount;\n        this._lastRenderedCellLayoutManager = cellLayoutManager;\n        this._calculateSizeAndPositionDataOnNextUpdate = false;\n        cellLayoutManager.calculateSizeAndPositionData();\n      }\n\n      var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge3.height,\n          totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n      var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n      var top = Math.max(0, scrollTop - verticalOverscanSize);\n      var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n      var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n      var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n        height: bottom - top,\n        isScrolling: isScrolling,\n        width: right - left,\n        x: left,\n        y: top\n      }) : [];\n      var collectionStyle = {\n        boxSizing: 'border-box',\n        direction: 'ltr',\n        height: autoHeight ? 'auto' : height,\n        position: 'relative',\n        WebkitOverflowScrolling: 'touch',\n        width: width,\n        willChange: 'transform'\n      }; // Force browser to hide scrollbars when we know they aren't necessary.\n      // Otherwise once scrollbars appear they may not disappear again.\n      // For more info see issue #116\n\n      var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n      var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n      // This works around an obscure edge case where external CSS styles have not yet been loaded,\n      // But an initial scroll index of offset is set as an external prop.\n      // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n      // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n      collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n      collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n      return React.createElement(\"div\", {\n        ref: this._setScrollingContainerRef,\n        \"aria-label\": this.props['aria-label'],\n        className: clsx('ReactVirtualized__Collection', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: \"grid\",\n        style: _objectSpread({}, collectionStyle, {}, style),\n        tabIndex: 0\n      }, cellCount > 0 && React.createElement(\"div\", {\n        className: \"ReactVirtualized__Collection__innerScrollContainer\",\n        style: {\n          height: totalHeight,\n          maxHeight: totalHeight,\n          maxWidth: totalWidth,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          width: totalWidth\n        }\n      }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n    }\n    /* ---------------------------- Helper methods ---------------------------- */\n\n    /**\n     * Sets an :isScrolling flag for a small window of time.\n     * This flag is used to disable pointer events on the scrollable portion of the Collection.\n     * This prevents jerky/stuttery mouse-wheel scrolling.\n     */\n\n  }, {\n    key: \"_enablePointerEventsAfterDelay\",\n    value: function _enablePointerEventsAfterDelay() {\n      var _this2 = this;\n\n      if (this._disablePointerEventsTimeoutId) {\n        clearTimeout(this._disablePointerEventsTimeoutId);\n      }\n\n      this._disablePointerEventsTimeoutId = setTimeout(function () {\n        var isScrollingChange = _this2.props.isScrollingChange;\n        isScrollingChange(false);\n        _this2._disablePointerEventsTimeoutId = null;\n\n        _this2.setState({\n          isScrolling: false\n        });\n      }, IS_SCROLLING_TIMEOUT);\n    }\n  }, {\n    key: \"_invokeOnScrollMemoizer\",\n    value: function _invokeOnScrollMemoizer(_ref) {\n      var _this3 = this;\n\n      var scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          totalHeight = _ref.totalHeight,\n          totalWidth = _ref.totalWidth;\n\n      this._onScrollMemoizer({\n        callback: function callback(_ref2) {\n          var scrollLeft = _ref2.scrollLeft,\n              scrollTop = _ref2.scrollTop;\n          var _this3$props = _this3.props,\n              height = _this3$props.height,\n              onScroll = _this3$props.onScroll,\n              width = _this3$props.width;\n          onScroll({\n            clientHeight: height,\n            clientWidth: width,\n            scrollHeight: totalHeight,\n            scrollLeft: scrollLeft,\n            scrollTop: scrollTop,\n            scrollWidth: totalWidth\n          });\n        },\n        indices: {\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        }\n      });\n    }\n  }, {\n    key: \"_setScrollPosition\",\n    value: function _setScrollPosition(_ref3) {\n      var scrollLeft = _ref3.scrollLeft,\n          scrollTop = _ref3.scrollTop;\n      var newState = {\n        scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n      };\n\n      if (scrollLeft >= 0) {\n        newState.scrollLeft = scrollLeft;\n      }\n\n      if (scrollTop >= 0) {\n        newState.scrollTop = scrollTop;\n      }\n\n      if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n        this.setState(newState);\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n        return {\n          scrollLeft: 0,\n          scrollTop: 0,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n        };\n      } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n        return {\n          scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n          scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n  'aria-label': 'grid',\n  horizontalOverscanSize: 0,\n  noContentRenderer: function noContentRenderer() {\n    return null;\n  },\n  onScroll: function onScroll() {\n    return null;\n  },\n  onSectionRendered: function onSectionRendered() {\n    return null;\n  },\n  scrollToAlignment: 'auto',\n  scrollToCell: -1,\n  style: {},\n  verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  'aria-label': PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  autoHeight: PropTypes.bool,\n\n  /**\n   * Number of cells in collection.\n   */\n  cellCount: PropTypes.number.isRequired,\n\n  /**\n   * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n   */\n  cellLayoutManager: PropTypes.object.isRequired,\n\n  /**\n   * Optional custom CSS class name to attach to root Collection element.\n   */\n  className: PropTypes.string,\n\n  /**\n   * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n   */\n  height: PropTypes.number.isRequired,\n\n  /**\n   * Optional custom id to attach to root Collection element.\n   */\n  id: PropTypes.string,\n\n  /**\n   * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n   * This can reduce flicker around the edges when a user scrolls quickly.\n   */\n  horizontalOverscanSize: PropTypes.number.isRequired,\n  isScrollingChange: PropTypes.func,\n\n  /**\n   * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n   */\n  noContentRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n   */\n  onScroll: PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked with information about the section of the Collection that was just rendered.\n   * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n   */\n  onSectionRendered: PropTypes.func.isRequired,\n\n  /**\n   * Horizontal offset.\n   */\n  scrollLeft: PropTypes.number,\n\n  /**\n   * Controls scroll-to-cell behavior of the Grid.\n   * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n   * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n   */\n  scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n  /**\n   * Cell index to ensure visible (by forcefully scrolling if necessary).\n   */\n  scrollToCell: PropTypes.number.isRequired,\n\n  /**\n   * Vertical offset.\n   */\n  scrollTop: PropTypes.number,\n\n  /**\n   * Optional custom inline style to attach to root Collection element.\n   */\n  style: PropTypes.object,\n\n  /**\n   * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n   * This can reduce flicker around the edges when a user scrolls quickly.\n   */\n  verticalOverscanSize: PropTypes.number.isRequired,\n\n  /**\n   * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n   */\n  width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n  function Section(_ref) {\n    var height = _ref.height,\n        width = _ref.width,\n        x = _ref.x,\n        y = _ref.y;\n\n    _classCallCheck(this, Section);\n\n    this.height = height;\n    this.width = width;\n    this.x = x;\n    this.y = y;\n    this._indexMap = {};\n    this._indices = [];\n  }\n  /** Add a cell to this section. */\n\n\n  _createClass(Section, [{\n    key: \"addCellIndex\",\n    value: function addCellIndex(_ref2) {\n      var index = _ref2.index;\n\n      if (!this._indexMap[index]) {\n        this._indexMap[index] = true;\n\n        this._indices.push(index);\n      }\n    }\n    /** Get all cell indices that have been added to this section. */\n\n  }, {\n    key: \"getCellIndices\",\n    value: function getCellIndices() {\n      return this._indices;\n    }\n    /** Intended for debugger/test purposes only */\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n    }\n  }]);\n\n  return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n  function SectionManager() {\n    var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n    _classCallCheck(this, SectionManager);\n\n    this._sectionSize = sectionSize;\n    this._cellMetadata = [];\n    this._sections = {};\n  }\n  /**\n   * Gets all cell indices contained in the specified region.\n   * A region may encompass 1 or more Sections.\n   */\n\n\n  _createClass(SectionManager, [{\n    key: \"getCellIndices\",\n    value: function getCellIndices(_ref) {\n      var height = _ref.height,\n          width = _ref.width,\n          x = _ref.x,\n          y = _ref.y;\n      var indices = {};\n      this.getSections({\n        height: height,\n        width: width,\n        x: x,\n        y: y\n      }).forEach(function (section) {\n        return section.getCellIndices().forEach(function (index) {\n          indices[index] = index;\n        });\n      }); // Object keys are strings; this function returns numbers\n\n      return Object.keys(indices).map(function (index) {\n        return indices[index];\n      });\n    }\n    /** Get size and position information for the cell specified. */\n\n  }, {\n    key: \"getCellMetadata\",\n    value: function getCellMetadata(_ref2) {\n      var index = _ref2.index;\n      return this._cellMetadata[index];\n    }\n    /** Get all Sections overlapping the specified region. */\n\n  }, {\n    key: \"getSections\",\n    value: function getSections(_ref3) {\n      var height = _ref3.height,\n          width = _ref3.width,\n          x = _ref3.x,\n          y = _ref3.y;\n      var sectionXStart = Math.floor(x / this._sectionSize);\n      var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n      var sectionYStart = Math.floor(y / this._sectionSize);\n      var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n      var sections = [];\n\n      for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n        for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n          var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n          if (!this._sections[key]) {\n            this._sections[key] = new Section({\n              height: this._sectionSize,\n              width: this._sectionSize,\n              x: sectionX * this._sectionSize,\n              y: sectionY * this._sectionSize\n            });\n          }\n\n          sections.push(this._sections[key]);\n        }\n      }\n\n      return sections;\n    }\n    /** Total number of Sections based on the currently registered cells. */\n\n  }, {\n    key: \"getTotalSectionCount\",\n    value: function getTotalSectionCount() {\n      return Object.keys(this._sections).length;\n    }\n    /** Intended for debugger/test purposes only */\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      var _this = this;\n\n      return Object.keys(this._sections).map(function (index) {\n        return _this._sections[index].toString();\n      });\n    }\n    /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n  }, {\n    key: \"registerCell\",\n    value: function registerCell(_ref4) {\n      var cellMetadatum = _ref4.cellMetadatum,\n          index = _ref4.index;\n      this._cellMetadata[index] = cellMetadatum;\n      this.getSections(cellMetadatum).forEach(function (section) {\n        return section.addCellIndex({\n          index: index\n        });\n      });\n    }\n  }]);\n\n  return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n  var _ref$align = _ref.align,\n      align = _ref$align === void 0 ? 'auto' : _ref$align,\n      cellOffset = _ref.cellOffset,\n      cellSize = _ref.cellSize,\n      containerSize = _ref.containerSize,\n      currentOffset = _ref.currentOffset;\n  var maxOffset = cellOffset;\n  var minOffset = maxOffset - containerSize + cellSize;\n\n  switch (align) {\n    case 'start':\n      return maxOffset;\n\n    case 'end':\n      return minOffset;\n\n    case 'center':\n      return maxOffset - (containerSize - cellSize) / 2;\n\n    default:\n      return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n  }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Collection, _React$PureComponent);\n\n  function Collection(props, context) {\n    var _this;\n\n    _classCallCheck(this, Collection);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n    _this._cellMetadata = [];\n    _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n    _this._cellCache = [];\n    _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n    _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(Collection, [{\n    key: \"forceUpdate\",\n    value: function forceUpdate() {\n      if (this._collectionView !== undefined) {\n        this._collectionView.forceUpdate();\n      }\n    }\n    /** See Collection#recomputeCellSizesAndPositions */\n\n  }, {\n    key: \"recomputeCellSizesAndPositions\",\n    value: function recomputeCellSizesAndPositions() {\n      this._cellCache = [];\n\n      this._collectionView.recomputeCellSizesAndPositions();\n    }\n    /** React lifecycle methods */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var props = _extends({}, this.props);\n\n      return React.createElement(CollectionView, _extends({\n        cellLayoutManager: this,\n        isScrollingChange: this._isScrollingChange,\n        ref: this._setCollectionViewRef\n      }, props));\n    }\n    /** CellLayoutManager interface */\n\n  }, {\n    key: \"calculateSizeAndPositionData\",\n    value: function calculateSizeAndPositionData() {\n      var _this$props = this.props,\n          cellCount = _this$props.cellCount,\n          cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n          sectionSize = _this$props.sectionSize;\n\n      var data = _calculateSizeAndPositionData({\n        cellCount: cellCount,\n        cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n        sectionSize: sectionSize\n      });\n\n      this._cellMetadata = data.cellMetadata;\n      this._sectionManager = data.sectionManager;\n      this._height = data.height;\n      this._width = data.width;\n    }\n    /**\n     * Returns the most recently rendered set of cell indices.\n     */\n\n  }, {\n    key: \"getLastRenderedIndices\",\n    value: function getLastRenderedIndices() {\n      return this._lastRenderedCellIndices;\n    }\n    /**\n     * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n     */\n\n  }, {\n    key: \"getScrollPositionForCell\",\n    value: function getScrollPositionForCell(_ref) {\n      var align = _ref.align,\n          cellIndex = _ref.cellIndex,\n          height = _ref.height,\n          scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          width = _ref.width;\n      var cellCount = this.props.cellCount;\n\n      if (cellIndex >= 0 && cellIndex < cellCount) {\n        var cellMetadata = this._cellMetadata[cellIndex];\n        scrollLeft = getUpdatedOffsetForIndex({\n          align: align,\n          cellOffset: cellMetadata.x,\n          cellSize: cellMetadata.width,\n          containerSize: width,\n          currentOffset: scrollLeft,\n          targetIndex: cellIndex\n        });\n        scrollTop = getUpdatedOffsetForIndex({\n          align: align,\n          cellOffset: cellMetadata.y,\n          cellSize: cellMetadata.height,\n          containerSize: height,\n          currentOffset: scrollTop,\n          targetIndex: cellIndex\n        });\n      }\n\n      return {\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      };\n    }\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      return {\n        height: this._height,\n        width: this._width\n      };\n    }\n  }, {\n    key: \"cellRenderers\",\n    value: function cellRenderers(_ref2) {\n      var _this2 = this;\n\n      var height = _ref2.height,\n          isScrolling = _ref2.isScrolling,\n          width = _ref2.width,\n          x = _ref2.x,\n          y = _ref2.y;\n      var _this$props2 = this.props,\n          cellGroupRenderer = _this$props2.cellGroupRenderer,\n          cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n      this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n        height: height,\n        width: width,\n        x: x,\n        y: y\n      });\n      return cellGroupRenderer({\n        cellCache: this._cellCache,\n        cellRenderer: cellRenderer,\n        cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n          var index = _ref3.index;\n          return _this2._sectionManager.getCellMetadata({\n            index: index\n          });\n        },\n        indices: this._lastRenderedCellIndices,\n        isScrolling: isScrolling\n      });\n    }\n  }, {\n    key: \"_isScrollingChange\",\n    value: function _isScrollingChange(isScrolling) {\n      if (!isScrolling) {\n        this._cellCache = [];\n      }\n    }\n  }, {\n    key: \"_setCollectionViewRef\",\n    value: function _setCollectionViewRef(ref) {\n      this._collectionView = ref;\n    }\n  }]);\n\n  return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n  'aria-label': 'grid',\n  cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  'aria-label': PropTypes.string,\n\n  /**\n   * Number of cells in Collection.\n   */\n  cellCount: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a group of cells given their indices.\n   * Should implement the following interface: ({\n   *   cellSizeAndPositionGetter:Function,\n   *   indices: Array<number>,\n   *   cellRenderer: Function\n   * }): Array<PropTypes.node>\n   */\n  cellGroupRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Responsible for rendering a cell given an row and column index.\n   * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n   */\n  cellRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Callback responsible for returning size and offset/position information for a given cell (index).\n   * ({ index: number }): { height: number, width: number, x: number, y: number }\n   */\n  cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n  /**\n   * Optionally override the size of the sections a Collection's cells are split into.\n   */\n  sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n  var cellCache = _ref4.cellCache,\n      cellRenderer = _ref4.cellRenderer,\n      cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n      indices = _ref4.indices,\n      isScrolling = _ref4.isScrolling;\n  return indices.map(function (index) {\n    var cellMetadata = cellSizeAndPositionGetter({\n      index: index\n    });\n    var cellRendererProps = {\n      index: index,\n      isScrolling: isScrolling,\n      key: index,\n      style: {\n        height: cellMetadata.height,\n        left: cellMetadata.x,\n        position: 'absolute',\n        top: cellMetadata.y,\n        width: cellMetadata.width\n      }\n    }; // Avoid re-creating cells while scrolling.\n    // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n    // If a scroll is in progress- cache and reuse cells.\n    // This cache will be thrown away once scrolling complets.\n\n    if (isScrolling) {\n      if (!(index in cellCache)) {\n        cellCache[index] = cellRenderer(cellRendererProps);\n      }\n\n      return cellCache[index];\n    } else {\n      return cellRenderer(cellRendererProps);\n    }\n  }).filter(function (renderedCell) {\n    return !!renderedCell;\n  });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n  var cellCount = _ref.cellCount,\n      cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n      sectionSize = _ref.sectionSize;\n  var cellMetadata = [];\n  var sectionManager = new SectionManager(sectionSize);\n  var height = 0;\n  var width = 0;\n\n  for (var index = 0; index < cellCount; index++) {\n    var cellMetadatum = cellSizeAndPositionGetter({\n      index: index\n    });\n\n    if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n      throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n        x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n    }\n\n    height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n    width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n    cellMetadata[index] = cellMetadatum;\n    sectionManager.registerCell({\n      cellMetadatum: cellMetadatum,\n      index: index\n    });\n  }\n\n  return {\n    cellMetadata: cellMetadata,\n    height: height,\n    sectionManager: sectionManager,\n    width: width\n  };\n}","import Collection from './Collection';\nexport default Collection;\nexport { Collection };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ColumnSizer, _React$PureComponent);\n\n  function ColumnSizer(props, context) {\n    var _this;\n\n    _classCallCheck(this, ColumnSizer);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n    _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(ColumnSizer, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props = this.props,\n          columnMaxWidth = _this$props.columnMaxWidth,\n          columnMinWidth = _this$props.columnMinWidth,\n          columnCount = _this$props.columnCount,\n          width = _this$props.width;\n\n      if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n        if (this._registeredChild) {\n          this._registeredChild.recomputeGridSize();\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          columnMaxWidth = _this$props2.columnMaxWidth,\n          columnMinWidth = _this$props2.columnMinWidth,\n          columnCount = _this$props2.columnCount,\n          width = _this$props2.width;\n      var safeColumnMinWidth = columnMinWidth || 1;\n      var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n      var columnWidth = width / columnCount;\n      columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n      columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n      columnWidth = Math.floor(columnWidth);\n      var adjustedWidth = Math.min(width, columnWidth * columnCount);\n      return children({\n        adjustedWidth: adjustedWidth,\n        columnWidth: columnWidth,\n        getColumnWidth: function getColumnWidth() {\n          return columnWidth;\n        },\n        registerChild: this._registerChild\n      });\n    }\n  }, {\n    key: \"_registerChild\",\n    value: function _registerChild(child) {\n      if (child && typeof child.recomputeGridSize !== 'function') {\n        throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n      }\n\n      this._registeredChild = child;\n\n      if (this._registeredChild) {\n        this._registeredChild.recomputeGridSize();\n      }\n    }\n  }]);\n\n  return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering a virtualized Grid.\n   * This function should implement the following signature:\n   * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n   *\n   * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n   * The :registerChild should be passed to the Grid's :ref property.\n   * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n   */\n  children: PropTypes.func.isRequired,\n\n  /** Optional maximum allowed column width */\n  columnMaxWidth: PropTypes.number,\n\n  /** Optional minimum allowed column width */\n  columnMinWidth: PropTypes.number,\n\n  /** Number of columns in Grid or Table child */\n  columnCount: PropTypes.number.isRequired,\n\n  /** Width of Grid or Table child */\n  width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(InfiniteLoader, _React$PureComponent);\n\n  function InfiniteLoader(props, context) {\n    var _this;\n\n    _classCallCheck(this, InfiniteLoader);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n    _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n    _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n    _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(InfiniteLoader, [{\n    key: \"resetLoadMoreRowsCache\",\n    value: function resetLoadMoreRowsCache(autoReload) {\n      this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n      if (autoReload) {\n        this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        onRowsRendered: this._onRowsRendered,\n        registerChild: this._registerChild\n      });\n    }\n  }, {\n    key: \"_loadUnloadedRanges\",\n    value: function _loadUnloadedRanges(unloadedRanges) {\n      var _this2 = this;\n\n      var loadMoreRows = this.props.loadMoreRows;\n      unloadedRanges.forEach(function (unloadedRange) {\n        var promise = loadMoreRows(unloadedRange);\n\n        if (promise) {\n          promise.then(function () {\n            // Refresh the visible rows if any of them have just been loaded.\n            // Otherwise they will remain in their unloaded visual state.\n            if (isRangeVisible({\n              lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n              lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n              startIndex: unloadedRange.startIndex,\n              stopIndex: unloadedRange.stopIndex\n            })) {\n              if (_this2._registeredChild) {\n                forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n              }\n            }\n          });\n        }\n      });\n    }\n  }, {\n    key: \"_onRowsRendered\",\n    value: function _onRowsRendered(_ref) {\n      var startIndex = _ref.startIndex,\n          stopIndex = _ref.stopIndex;\n      this._lastRenderedStartIndex = startIndex;\n      this._lastRenderedStopIndex = stopIndex;\n\n      this._doStuff(startIndex, stopIndex);\n    }\n  }, {\n    key: \"_doStuff\",\n    value: function _doStuff(startIndex, stopIndex) {\n      var _ref2,\n          _this3 = this;\n\n      var _this$props = this.props,\n          isRowLoaded = _this$props.isRowLoaded,\n          minimumBatchSize = _this$props.minimumBatchSize,\n          rowCount = _this$props.rowCount,\n          threshold = _this$props.threshold;\n      var unloadedRanges = scanForUnloadedRanges({\n        isRowLoaded: isRowLoaded,\n        minimumBatchSize: minimumBatchSize,\n        rowCount: rowCount,\n        startIndex: Math.max(0, startIndex - threshold),\n        stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n      }); // For memoize comparison\n\n      var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n        var startIndex = _ref3.startIndex,\n            stopIndex = _ref3.stopIndex;\n        return [startIndex, stopIndex];\n      })));\n\n      this._loadMoreRowsMemoizer({\n        callback: function callback() {\n          _this3._loadUnloadedRanges(unloadedRanges);\n        },\n        indices: {\n          squashedUnloadedRanges: squashedUnloadedRanges\n        }\n      });\n    }\n  }, {\n    key: \"_registerChild\",\n    value: function _registerChild(registeredChild) {\n      this._registeredChild = registeredChild;\n    }\n  }]);\n\n  return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n  minimumBatchSize: 10,\n  rowCount: 0,\n  threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering a virtualized component.\n   * This function should implement the following signature:\n   * ({ onRowsRendered, registerChild }) => PropTypes.element\n   *\n   * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n   * The :registerChild callback should be set as the virtualized component's :ref.\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Function responsible for tracking the loaded state of each row.\n   * It should implement the following signature: ({ index: number }): boolean\n   */\n  isRowLoaded: PropTypes.func.isRequired,\n\n  /**\n   * Callback to be invoked when more rows must be loaded.\n   * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n   * The returned Promise should be resolved once row data has finished loading.\n   * It will be used to determine when to refresh the list with the newly-loaded data.\n   * This callback may be called multiple times in reaction to a single scroll event.\n   */\n  loadMoreRows: PropTypes.func.isRequired,\n\n  /**\n   * Minimum number of rows to be loaded at a time.\n   * This property can be used to batch requests to reduce HTTP requests.\n   */\n  minimumBatchSize: PropTypes.number.isRequired,\n\n  /**\n   * Number of rows in list; can be arbitrary high number if actual number is unknown.\n   */\n  rowCount: PropTypes.number.isRequired,\n\n  /**\n   * Threshold at which to pre-fetch data.\n   * A threshold X means that data will start loading when a user scrolls within X rows.\n   * This value defaults to 15.\n   */\n  threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n  var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n      lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n      startIndex = _ref4.startIndex,\n      stopIndex = _ref4.stopIndex;\n  return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n  var isRowLoaded = _ref5.isRowLoaded,\n      minimumBatchSize = _ref5.minimumBatchSize,\n      rowCount = _ref5.rowCount,\n      startIndex = _ref5.startIndex,\n      stopIndex = _ref5.stopIndex;\n  var unloadedRanges = [];\n  var rangeStartIndex = null;\n  var rangeStopIndex = null;\n\n  for (var index = startIndex; index <= stopIndex; index++) {\n    var loaded = isRowLoaded({\n      index: index\n    });\n\n    if (!loaded) {\n      rangeStopIndex = index;\n\n      if (rangeStartIndex === null) {\n        rangeStartIndex = index;\n      }\n    } else if (rangeStopIndex !== null) {\n      unloadedRanges.push({\n        startIndex: rangeStartIndex,\n        stopIndex: rangeStopIndex\n      });\n      rangeStartIndex = rangeStopIndex = null;\n    }\n  } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n  // Scan forward to try filling our :minimumBatchSize.\n\n\n  if (rangeStopIndex !== null) {\n    var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n    for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n      if (!isRowLoaded({\n        index: _index\n      })) {\n        rangeStopIndex = _index;\n      } else {\n        break;\n      }\n    }\n\n    unloadedRanges.push({\n      startIndex: rangeStartIndex,\n      stopIndex: rangeStopIndex\n    });\n  } // Check to see if our first range ended prematurely.\n  // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n  if (unloadedRanges.length) {\n    var firstUnloadedRange = unloadedRanges[0];\n\n    while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n      var _index2 = firstUnloadedRange.startIndex - 1;\n\n      if (!isRowLoaded({\n        index: _index2\n      })) {\n        firstUnloadedRange.startIndex = _index2;\n      } else {\n        break;\n      }\n    }\n  }\n\n  return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n  var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n  if (recomputeSize) {\n    recomputeSize.call(component, currentIndex);\n  } else {\n    component.forceUpdate();\n  }\n}","import InfiniteLoader from './InfiniteLoader';\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(List, _React$PureComponent);\n\n  function List() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, List);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n      var parent = _ref.parent,\n          rowIndex = _ref.rowIndex,\n          style = _ref.style,\n          isScrolling = _ref.isScrolling,\n          isVisible = _ref.isVisible,\n          key = _ref.key;\n      var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n      // This prevents new style objects from bypassing shallowCompare().\n      // However as of React 16, style props are auto-frozen (at least in dev mode)\n      // Check to make sure we can still modify the style before proceeding.\n      // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n      var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n      if (widthDescriptor && widthDescriptor.writable) {\n        // By default, List cells should be 100% width.\n        // This prevents them from flowing under a scrollbar (if present).\n        style.width = '100%';\n      }\n\n      return rowRenderer({\n        index: rowIndex,\n        style: style,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n      _this.Grid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n      var clientHeight = _ref2.clientHeight,\n          scrollHeight = _ref2.scrollHeight,\n          scrollTop = _ref2.scrollTop;\n      var onScroll = _this.props.onScroll;\n      onScroll({\n        clientHeight: clientHeight,\n        scrollHeight: scrollHeight,\n        scrollTop: scrollTop\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n      var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n          rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n          rowStartIndex = _ref3.rowStartIndex,\n          rowStopIndex = _ref3.rowStopIndex;\n      var onRowsRendered = _this.props.onRowsRendered;\n      onRowsRendered({\n        overscanStartIndex: rowOverscanStartIndex,\n        overscanStopIndex: rowOverscanStopIndex,\n        startIndex: rowStartIndex,\n        stopIndex: rowStopIndex\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(List, [{\n    key: \"forceUpdateGrid\",\n    value: function forceUpdateGrid() {\n      if (this.Grid) {\n        this.Grid.forceUpdate();\n      }\n    }\n    /** See Grid#getOffsetForCell */\n\n  }, {\n    key: \"getOffsetForRow\",\n    value: function getOffsetForRow(_ref4) {\n      var alignment = _ref4.alignment,\n          index = _ref4.index;\n\n      if (this.Grid) {\n        var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n          alignment: alignment,\n          rowIndex: index,\n          columnIndex: 0\n        }),\n            scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n        return scrollTop;\n      }\n\n      return 0;\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n\n      if (this.Grid) {\n        this.Grid.invalidateCellSizeAfterRender({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllRows\",\n    value: function measureAllRows() {\n      if (this.Grid) {\n        this.Grid.measureAllCells();\n      }\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref6$columnIndex = _ref6.columnIndex,\n          columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n          _ref6$rowIndex = _ref6.rowIndex,\n          rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeRowHeights\",\n    value: function recomputeRowHeights() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: index,\n          columnIndex: 0\n        });\n      }\n    }\n    /** See Grid#scrollToPosition */\n\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition() {\n      var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToPosition({\n          scrollTop: scrollTop\n        });\n      }\n    }\n    /** See Grid#scrollToCell */\n\n  }, {\n    key: \"scrollToRow\",\n    value: function scrollToRow() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToCell({\n          columnIndex: 0,\n          rowIndex: index\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          className = _this$props.className,\n          noRowsRenderer = _this$props.noRowsRenderer,\n          scrollToIndex = _this$props.scrollToIndex,\n          width = _this$props.width;\n      var classNames = clsx('ReactVirtualized__List', className);\n      return React.createElement(Grid, _extends({}, this.props, {\n        autoContainerWidth: true,\n        cellRenderer: this._cellRenderer,\n        className: classNames,\n        columnWidth: width,\n        columnCount: 1,\n        noContentRenderer: noRowsRenderer,\n        onScroll: this._onScroll,\n        onSectionRendered: this._onSectionRendered,\n        ref: this._setRef,\n        scrollToRow: scrollToIndex\n      }));\n    }\n  }]);\n\n  return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  \"autoHeight\": PropTypes.bool.isRequired,\n\n  /** Optional CSS class name */\n  \"className\": PropTypes.string,\n\n  /**\n   * Used to estimate the total height of a List before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": PropTypes.number.isRequired,\n\n  /** Height constraint for list (determines how many actual rows are rendered) */\n  \"height\": PropTypes.number.isRequired,\n\n  /** Optional renderer to be used in place of rows when rowCount is 0 */\n  \"noRowsRenderer\": function noRowsRenderer() {\n    return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Callback invoked with information about the slice of rows that were just rendered.  */\n  \"onRowsRendered\": PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /** See Grid#overscanIndicesGetter */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible bounds of the list.\n   * These rows can help for smoother scrolling on touch devices.\n   */\n  \"overscanRowCount\": PropTypes.number.isRequired,\n\n  /** Either a fixed row height (number) or a function that returns the height of a row given its index.  */\n  \"rowHeight\": function rowHeight() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a row given an index; ({ index: number }): node */\n  \"rowRenderer\": function rowRenderer() {\n    return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in list. */\n  \"rowCount\": PropTypes.number.isRequired,\n\n  /** See Grid#scrollToAlignment */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToIndex\": PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": PropTypes.number,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": PropTypes.number,\n\n  /** Width of list */\n  \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n  autoHeight: false,\n  estimatedRowSize: 30,\n  onScroll: function onScroll() {},\n  noRowsRenderer: function noRowsRenderer() {\n    return null;\n  },\n  onRowsRendered: function onRowsRendered() {},\n  overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n  overscanRowCount: 10,\n  scrollToAlignment: 'auto',\n  scrollToIndex: -1,\n  style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x >= y) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) >= 0) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _GTA(a, l, h, y) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x > y) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) > 0) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _LTA(a, l, h, y) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x < y) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) < 0) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _LEA(a, l, h, y) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x <= y) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) <= 0) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _EQA(a, l, h, y) {\n  l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x === y) {\n      return m;\n    } else if (x <= y) {\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n  l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n    var p = c(x, y);\n\n    if (p === 0) {\n      return m;\n    } else if (p <= 0) {\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nexport default {\n  ge: dispatchBsearchGE,\n  gt: dispatchBsearchGT,\n  lt: dispatchBsearchLT,\n  le: dispatchBsearchLE,\n  eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n  this.mid = mid;\n  this.left = left;\n  this.right = right;\n  this.leftPoints = leftPoints;\n  this.rightPoints = rightPoints;\n  this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n  a.mid = b.mid;\n  a.left = b.left;\n  a.right = b.right;\n  a.leftPoints = b.leftPoints;\n  a.rightPoints = b.rightPoints;\n  a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n  var ntree = createIntervalTree(intervals);\n  node.mid = ntree.mid;\n  node.left = ntree.left;\n  node.right = ntree.right;\n  node.leftPoints = ntree.leftPoints;\n  node.rightPoints = ntree.rightPoints;\n  node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n  var intervals = node.intervals([]);\n  intervals.push(interval);\n  rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n  var intervals = node.intervals([]);\n  var idx = intervals.indexOf(interval);\n\n  if (idx < 0) {\n    return NOT_FOUND;\n  }\n\n  intervals.splice(idx, 1);\n  rebuild(node, intervals);\n  return SUCCESS;\n}\n\nproto.intervals = function (result) {\n  result.push.apply(result, this.leftPoints);\n\n  if (this.left) {\n    this.left.intervals(result);\n  }\n\n  if (this.right) {\n    this.right.intervals(result);\n  }\n\n  return result;\n};\n\nproto.insert = function (interval) {\n  var weight = this.count - this.leftPoints.length;\n  this.count += 1;\n\n  if (interval[1] < this.mid) {\n    if (this.left) {\n      if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n        rebuildWithInterval(this, interval);\n      } else {\n        this.left.insert(interval);\n      }\n    } else {\n      this.left = createIntervalTree([interval]);\n    }\n  } else if (interval[0] > this.mid) {\n    if (this.right) {\n      if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n        rebuildWithInterval(this, interval);\n      } else {\n        this.right.insert(interval);\n      }\n    } else {\n      this.right = createIntervalTree([interval]);\n    }\n  } else {\n    var l = bounds.ge(this.leftPoints, interval, compareBegin);\n    var r = bounds.ge(this.rightPoints, interval, compareEnd);\n    this.leftPoints.splice(l, 0, interval);\n    this.rightPoints.splice(r, 0, interval);\n  }\n};\n\nproto.remove = function (interval) {\n  var weight = this.count - this.leftPoints;\n\n  if (interval[1] < this.mid) {\n    if (!this.left) {\n      return NOT_FOUND;\n    }\n\n    var rw = this.right ? this.right.count : 0;\n\n    if (4 * rw > 3 * (weight - 1)) {\n      return rebuildWithoutInterval(this, interval);\n    }\n\n    var r = this.left.remove(interval);\n\n    if (r === EMPTY) {\n      this.left = null;\n      this.count -= 1;\n      return SUCCESS;\n    } else if (r === SUCCESS) {\n      this.count -= 1;\n    }\n\n    return r;\n  } else if (interval[0] > this.mid) {\n    if (!this.right) {\n      return NOT_FOUND;\n    }\n\n    var lw = this.left ? this.left.count : 0;\n\n    if (4 * lw > 3 * (weight - 1)) {\n      return rebuildWithoutInterval(this, interval);\n    }\n\n    var r = this.right.remove(interval);\n\n    if (r === EMPTY) {\n      this.right = null;\n      this.count -= 1;\n      return SUCCESS;\n    } else if (r === SUCCESS) {\n      this.count -= 1;\n    }\n\n    return r;\n  } else {\n    if (this.count === 1) {\n      if (this.leftPoints[0] === interval) {\n        return EMPTY;\n      } else {\n        return NOT_FOUND;\n      }\n    }\n\n    if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n      if (this.left && this.right) {\n        var p = this;\n        var n = this.left;\n\n        while (n.right) {\n          p = n;\n          n = n.right;\n        }\n\n        if (p === this) {\n          n.right = this.right;\n        } else {\n          var l = this.left;\n          var r = this.right;\n          p.count -= n.count;\n          p.right = n.left;\n          n.left = l;\n          n.right = r;\n        }\n\n        copy(this, n);\n        this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n      } else if (this.left) {\n        copy(this, this.left);\n      } else {\n        copy(this, this.right);\n      }\n\n      return SUCCESS;\n    }\n\n    for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n      if (this.leftPoints[l][0] !== interval[0]) {\n        break;\n      }\n\n      if (this.leftPoints[l] === interval) {\n        this.count -= 1;\n        this.leftPoints.splice(l, 1);\n\n        for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n          if (this.rightPoints[r][1] !== interval[1]) {\n            break;\n          } else if (this.rightPoints[r] === interval) {\n            this.rightPoints.splice(r, 1);\n            return SUCCESS;\n          }\n        }\n      }\n    }\n\n    return NOT_FOUND;\n  }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n  for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n  for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nfunction reportRange(arr, cb) {\n  for (var i = 0; i < arr.length; ++i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nproto.queryPoint = function (x, cb) {\n  if (x < this.mid) {\n    if (this.left) {\n      var r = this.left.queryPoint(x, cb);\n\n      if (r) {\n        return r;\n      }\n    }\n\n    return reportLeftRange(this.leftPoints, x, cb);\n  } else if (x > this.mid) {\n    if (this.right) {\n      var r = this.right.queryPoint(x, cb);\n\n      if (r) {\n        return r;\n      }\n    }\n\n    return reportRightRange(this.rightPoints, x, cb);\n  } else {\n    return reportRange(this.leftPoints, cb);\n  }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n  if (lo < this.mid && this.left) {\n    var r = this.left.queryInterval(lo, hi, cb);\n\n    if (r) {\n      return r;\n    }\n  }\n\n  if (hi > this.mid && this.right) {\n    var r = this.right.queryInterval(lo, hi, cb);\n\n    if (r) {\n      return r;\n    }\n  }\n\n  if (hi < this.mid) {\n    return reportLeftRange(this.leftPoints, hi, cb);\n  } else if (lo > this.mid) {\n    return reportRightRange(this.rightPoints, lo, cb);\n  } else {\n    return reportRange(this.leftPoints, cb);\n  }\n};\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction compareBegin(a, b) {\n  var d = a[0] - b[0];\n\n  if (d) {\n    return d;\n  }\n\n  return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n  var d = a[1] - b[1];\n\n  if (d) {\n    return d;\n  }\n\n  return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n  if (intervals.length === 0) {\n    return null;\n  }\n\n  var pts = [];\n\n  for (var i = 0; i < intervals.length; ++i) {\n    pts.push(intervals[i][0], intervals[i][1]);\n  }\n\n  pts.sort(compareNumbers);\n  var mid = pts[pts.length >> 1];\n  var leftIntervals = [];\n  var rightIntervals = [];\n  var centerIntervals = [];\n\n  for (var i = 0; i < intervals.length; ++i) {\n    var s = intervals[i];\n\n    if (s[1] < mid) {\n      leftIntervals.push(s);\n    } else if (mid < s[0]) {\n      rightIntervals.push(s);\n    } else {\n      centerIntervals.push(s);\n    }\n  } //Split center intervals\n\n\n  var leftPoints = centerIntervals;\n  var rightPoints = centerIntervals.slice();\n  leftPoints.sort(compareBegin);\n  rightPoints.sort(compareEnd);\n  return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n  this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n  if (this.root) {\n    this.root.insert(interval);\n  } else {\n    this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n  }\n};\n\ntproto.remove = function (interval) {\n  if (this.root) {\n    var r = this.root.remove(interval);\n\n    if (r === EMPTY) {\n      this.root = null;\n    }\n\n    return r !== NOT_FOUND;\n  }\n\n  return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n  if (this.root) {\n    return this.root.queryPoint(p, cb);\n  }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n  if (lo <= hi && this.root) {\n    return this.root.queryInterval(lo, hi, cb);\n  }\n};\n\nObject.defineProperty(tproto, 'count', {\n  get: function get() {\n    if (this.root) {\n      return this.root.count;\n    }\n\n    return 0;\n  }\n});\nObject.defineProperty(tproto, 'intervals', {\n  get: function get() {\n    if (this.root) {\n      return this.root.intervals([]);\n    }\n\n    return [];\n  }\n});\nexport default function createWrapper(intervals) {\n  if (!intervals || intervals.length === 0) {\n    return new IntervalTree(null);\n  }\n\n  return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n//   O(log(n)) lookup of cells to render for a given viewport size\n//   O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n  function PositionCache() {\n    _classCallCheck(this, PositionCache);\n\n    _defineProperty(this, \"_columnSizeMap\", {});\n\n    _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n    _defineProperty(this, \"_leftMap\", {});\n  }\n\n  _createClass(PositionCache, [{\n    key: \"estimateTotalHeight\",\n    value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n      var unmeasuredCellCount = cellCount - this.count;\n      return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n    } // Render all cells visible within the viewport range defined.\n\n  }, {\n    key: \"range\",\n    value: function range(scrollTop, clientHeight, renderCallback) {\n      var _this = this;\n\n      this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 3),\n            top = _ref2[0],\n            _ = _ref2[1],\n            index = _ref2[2];\n\n        return renderCallback(index, _this._leftMap[index], top);\n      });\n    }\n  }, {\n    key: \"setPosition\",\n    value: function setPosition(index, left, top, height) {\n      this._intervalTree.insert([top, top + height, index]);\n\n      this._leftMap[index] = left;\n      var columnSizeMap = this._columnSizeMap;\n      var columnHeight = columnSizeMap[left];\n\n      if (columnHeight === undefined) {\n        columnSizeMap[left] = top + height;\n      } else {\n        columnSizeMap[left] = Math.max(columnHeight, top + height);\n      }\n    }\n  }, {\n    key: \"count\",\n    get: function get() {\n      return this._intervalTree.count;\n    }\n  }, {\n    key: \"shortestColumnSize\",\n    get: function get() {\n      var columnSizeMap = this._columnSizeMap;\n      var size = 0;\n\n      for (var i in columnSizeMap) {\n        var height = columnSizeMap[i];\n        size = size === 0 ? height : Math.min(size, height);\n      }\n\n      return size;\n    }\n  }, {\n    key: \"tallestColumnSize\",\n    get: function get() {\n      var columnSizeMap = this._columnSizeMap;\n      var size = 0;\n\n      for (var i in columnSizeMap) {\n        var height = columnSizeMap[i];\n        size = Math.max(size, height);\n      }\n\n      return size;\n    }\n  }]);\n\n  return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n *    Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n *    After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n *    in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n *    All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n *    At this time the positioner has access to cached size measurements for all cells.\n *    The positions it returns are cached by Masonry for fast access later.\n *    Phase one is repeated if the user scrolls beyond the current layout's bounds.\n *    If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n *   Simple animations are supported (eg translate/slide into place on initial reveal).\n *   More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n *   This component supports multi-column layout.\n *   The height of each item may vary.\n *   The width of each item must not exceed the width of the column it is \"in\".\n *   The left position of all items within a column must align.\n *   (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Masonry, _React$PureComponent);\n\n  function Masonry() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, Masonry);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      isScrolling: false,\n      scrollTop: 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n    _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n      _this.setState({\n        isScrolling: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      var height = _this.props.height;\n      var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n      var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n      // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n      if (eventScrollTop !== scrollTop) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n\n      if (_this.state.scrollTop !== scrollTop) {\n        _this.setState({\n          isScrolling: true,\n          scrollTop: scrollTop\n        });\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(Masonry, [{\n    key: \"clearCellPositions\",\n    value: function clearCellPositions() {\n      this._positionCache = new PositionCache();\n      this.forceUpdate();\n    } // HACK This method signature was intended for Grid\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref) {\n      var index = _ref.rowIndex;\n\n      if (this._invalidateOnUpdateStartIndex === null) {\n        this._invalidateOnUpdateStartIndex = index;\n        this._invalidateOnUpdateStopIndex = index;\n      } else {\n        this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n        this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n      }\n    }\n  }, {\n    key: \"recomputeCellPositions\",\n    value: function recomputeCellPositions() {\n      var stopIndex = this._positionCache.count - 1;\n      this._positionCache = new PositionCache();\n\n      this._populatePositionCache(0, stopIndex);\n\n      this.forceUpdate();\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._checkInvalidateOnUpdate();\n\n      this._invokeOnScrollCallback();\n\n      this._invokeOnCellsRenderedCallback();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      this._checkInvalidateOnUpdate();\n\n      this._invokeOnScrollCallback();\n\n      this._invokeOnCellsRenderedCallback();\n\n      if (this.props.scrollTop !== prevProps.scrollTop) {\n        this._debounceResetIsScrolling();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._debounceResetIsScrollingId) {\n        cancelAnimationTimeout(this._debounceResetIsScrollingId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          autoHeight = _this$props.autoHeight,\n          cellCount = _this$props.cellCount,\n          cellMeasurerCache = _this$props.cellMeasurerCache,\n          cellRenderer = _this$props.cellRenderer,\n          className = _this$props.className,\n          height = _this$props.height,\n          id = _this$props.id,\n          keyMapper = _this$props.keyMapper,\n          overscanByPixels = _this$props.overscanByPixels,\n          role = _this$props.role,\n          style = _this$props.style,\n          tabIndex = _this$props.tabIndex,\n          width = _this$props.width,\n          rowDirection = _this$props.rowDirection;\n      var _this$state = this.state,\n          isScrolling = _this$state.isScrolling,\n          scrollTop = _this$state.scrollTop;\n      var children = [];\n\n      var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n      var shortestColumnSize = this._positionCache.shortestColumnSize;\n      var measuredCellCount = this._positionCache.count;\n      var startIndex = 0;\n      var stopIndex;\n\n      this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n        var _style;\n\n        if (typeof stopIndex === 'undefined') {\n          startIndex = index;\n          stopIndex = index;\n        } else {\n          startIndex = Math.min(startIndex, index);\n          stopIndex = Math.max(stopIndex, index);\n        }\n\n        children.push(cellRenderer({\n          index: index,\n          isScrolling: isScrolling,\n          key: keyMapper(index),\n          parent: _this2,\n          style: (_style = {\n            height: cellMeasurerCache.getHeight(index)\n          }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n        }));\n      }); // We need to measure additional cells for this layout\n\n\n      if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n        var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n        for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n          stopIndex = _index;\n          children.push(cellRenderer({\n            index: _index,\n            isScrolling: isScrolling,\n            key: keyMapper(_index),\n            parent: this,\n            style: {\n              width: cellMeasurerCache.getWidth(_index)\n            }\n          }));\n        }\n      }\n\n      this._startIndex = startIndex;\n      this._stopIndex = stopIndex;\n      return React.createElement(\"div\", {\n        ref: this._setScrollingContainerRef,\n        \"aria-label\": this.props['aria-label'],\n        className: clsx('ReactVirtualized__Masonry', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: role,\n        style: _objectSpread({\n          boxSizing: 'border-box',\n          direction: 'ltr',\n          height: autoHeight ? 'auto' : height,\n          overflowX: 'hidden',\n          overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n          position: 'relative',\n          width: width,\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform'\n        }, style),\n        tabIndex: tabIndex\n      }, React.createElement(\"div\", {\n        className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n        style: {\n          width: '100%',\n          height: estimateTotalHeight,\n          maxWidth: '100%',\n          maxHeight: estimateTotalHeight,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          position: 'relative'\n        }\n      }, children));\n    }\n  }, {\n    key: \"_checkInvalidateOnUpdate\",\n    value: function _checkInvalidateOnUpdate() {\n      if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n        var startIndex = this._invalidateOnUpdateStartIndex;\n        var stopIndex = this._invalidateOnUpdateStopIndex;\n        this._invalidateOnUpdateStartIndex = null;\n        this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n        this._populatePositionCache(startIndex, stopIndex);\n\n        this.forceUpdate();\n      }\n    }\n  }, {\n    key: \"_debounceResetIsScrolling\",\n    value: function _debounceResetIsScrolling() {\n      var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n      if (this._debounceResetIsScrollingId) {\n        cancelAnimationTimeout(this._debounceResetIsScrollingId);\n      }\n\n      this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n    }\n  }, {\n    key: \"_getEstimatedTotalHeight\",\n    value: function _getEstimatedTotalHeight() {\n      var _this$props2 = this.props,\n          cellCount = _this$props2.cellCount,\n          cellMeasurerCache = _this$props2.cellMeasurerCache,\n          width = _this$props2.width;\n      var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n      return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n    }\n  }, {\n    key: \"_invokeOnScrollCallback\",\n    value: function _invokeOnScrollCallback() {\n      var _this$props3 = this.props,\n          height = _this$props3.height,\n          onScroll = _this$props3.onScroll;\n      var scrollTop = this.state.scrollTop;\n\n      if (this._onScrollMemoized !== scrollTop) {\n        onScroll({\n          clientHeight: height,\n          scrollHeight: this._getEstimatedTotalHeight(),\n          scrollTop: scrollTop\n        });\n        this._onScrollMemoized = scrollTop;\n      }\n    }\n  }, {\n    key: \"_invokeOnCellsRenderedCallback\",\n    value: function _invokeOnCellsRenderedCallback() {\n      if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n        var onCellsRendered = this.props.onCellsRendered;\n        onCellsRendered({\n          startIndex: this._startIndex,\n          stopIndex: this._stopIndex\n        });\n        this._startIndexMemoized = this._startIndex;\n        this._stopIndexMemoized = this._stopIndex;\n      }\n    }\n  }, {\n    key: \"_populatePositionCache\",\n    value: function _populatePositionCache(startIndex, stopIndex) {\n      var _this$props4 = this.props,\n          cellMeasurerCache = _this$props4.cellMeasurerCache,\n          cellPositioner = _this$props4.cellPositioner;\n\n      for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n        var _cellPositioner = cellPositioner(_index2),\n            left = _cellPositioner.left,\n            top = _cellPositioner.top;\n\n        this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n        return {\n          isScrolling: true,\n          scrollTop: nextProps.scrollTop\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"autoHeight\": PropTypes.bool.isRequired,\n  \"cellCount\": PropTypes.number.isRequired,\n  \"cellMeasurerCache\": function cellMeasurerCache() {\n    return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"cellPositioner\": function cellPositioner() {\n    return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"cellRenderer\": function cellRenderer() {\n    return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"className\": PropTypes.string,\n  \"height\": PropTypes.number.isRequired,\n  \"id\": PropTypes.string,\n  \"keyMapper\": function keyMapper() {\n    return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"onCellsRendered\": function onCellsRendered() {\n    return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n  },\n  \"onScroll\": function onScroll() {\n    return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n  },\n  \"overscanByPixels\": PropTypes.number.isRequired,\n  \"role\": PropTypes.string.isRequired,\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n  \"style\": function style(props, propName, componentName) {\n    if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n      throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n    }\n  },\n  \"tabIndex\": PropTypes.number.isRequired,\n  \"width\": PropTypes.number.isRequired,\n  \"rowDirection\": PropTypes.string.isRequired,\n  \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n  autoHeight: false,\n  keyMapper: identity,\n  onCellsRendered: noop,\n  onScroll: noop,\n  overscanByPixels: 20,\n  role: 'grid',\n  scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n  style: emptyObject,\n  tabIndex: 0,\n  rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n  return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n  \"defaultHeight\": PropTypes.number.isRequired,\n  \"defaultWidth\": PropTypes.number.isRequired,\n  \"getHeight\": PropTypes.func.isRequired,\n  \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n  function CellMeasurerCacheDecorator() {\n    var _this = this;\n\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, CellMeasurerCacheDecorator);\n\n    _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n    _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n    _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n    _defineProperty(this, \"columnWidth\", function (_ref) {\n      var index = _ref.index;\n\n      _this._cellMeasurerCache.columnWidth({\n        index: index + _this._columnIndexOffset\n      });\n    });\n\n    _defineProperty(this, \"rowHeight\", function (_ref2) {\n      var index = _ref2.index;\n\n      _this._cellMeasurerCache.rowHeight({\n        index: index + _this._rowIndexOffset\n      });\n    });\n\n    var cellMeasurerCache = params.cellMeasurerCache,\n        _params$columnIndexOf = params.columnIndexOffset,\n        columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n        _params$rowIndexOffse = params.rowIndexOffset,\n        rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n    this._cellMeasurerCache = cellMeasurerCache;\n    this._columnIndexOffset = columnIndexOffset;\n    this._rowIndexOffset = rowIndexOffset;\n  }\n\n  _createClass(CellMeasurerCacheDecorator, [{\n    key: \"clear\",\n    value: function clear(rowIndex, columnIndex) {\n      this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"clearAll\",\n    value: function clearAll() {\n      this._cellMeasurerCache.clearAll();\n    }\n  }, {\n    key: \"hasFixedHeight\",\n    value: function hasFixedHeight() {\n      return this._cellMeasurerCache.hasFixedHeight();\n    }\n  }, {\n    key: \"hasFixedWidth\",\n    value: function hasFixedWidth() {\n      return this._cellMeasurerCache.hasFixedWidth();\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"has\",\n    value: function has(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"set\",\n    value: function set(rowIndex, columnIndex, width, height) {\n      this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n    }\n  }, {\n    key: \"defaultHeight\",\n    get: function get() {\n      return this._cellMeasurerCache.defaultHeight;\n    }\n  }, {\n    key: \"defaultWidth\",\n    get: function get() {\n      return this._cellMeasurerCache.defaultWidth;\n    }\n  }]);\n\n  return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(MultiGrid, _React$PureComponent);\n\n  function MultiGrid(props, context) {\n    var _this;\n\n    _classCallCheck(this, MultiGrid);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollbarSize: 0,\n      showHorizontalScrollbar: false,\n      showVerticalScrollbar: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n      _this._bottomLeftGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n      _this._bottomRightGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n      var rowIndex = _ref.rowIndex,\n          rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n      var _this$props = _this.props,\n          cellRenderer = _this$props.cellRenderer,\n          fixedRowCount = _this$props.fixedRowCount,\n          rowCount = _this$props.rowCount;\n\n      if (rowIndex === rowCount - fixedRowCount) {\n        return React.createElement(\"div\", {\n          key: rest.key,\n          style: _objectSpread({}, rest.style, {\n            height: SCROLLBAR_SIZE_BUFFER\n          })\n        });\n      } else {\n        return cellRenderer(_objectSpread({}, rest, {\n          parent: _assertThisInitialized(_this),\n          rowIndex: rowIndex + fixedRowCount\n        }));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n      var columnIndex = _ref2.columnIndex,\n          rowIndex = _ref2.rowIndex,\n          rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n      var _this$props2 = _this.props,\n          cellRenderer = _this$props2.cellRenderer,\n          fixedColumnCount = _this$props2.fixedColumnCount,\n          fixedRowCount = _this$props2.fixedRowCount;\n      return cellRenderer(_objectSpread({}, rest, {\n        columnIndex: columnIndex + fixedColumnCount,\n        parent: _assertThisInitialized(_this),\n        rowIndex: rowIndex + fixedRowCount\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n      var columnIndex = _ref3.columnIndex,\n          rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n      var _this$props3 = _this.props,\n          cellRenderer = _this$props3.cellRenderer,\n          columnCount = _this$props3.columnCount,\n          fixedColumnCount = _this$props3.fixedColumnCount;\n\n      if (columnIndex === columnCount - fixedColumnCount) {\n        return React.createElement(\"div\", {\n          key: rest.key,\n          style: _objectSpread({}, rest.style, {\n            width: SCROLLBAR_SIZE_BUFFER\n          })\n        });\n      } else {\n        return cellRenderer(_objectSpread({}, rest, {\n          columnIndex: columnIndex + fixedColumnCount,\n          parent: _assertThisInitialized(_this)\n        }));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n      var index = _ref4.index;\n      var _this$props4 = _this.props,\n          columnCount = _this$props4.columnCount,\n          fixedColumnCount = _this$props4.fixedColumnCount,\n          columnWidth = _this$props4.columnWidth;\n      var _this$state = _this.state,\n          scrollbarSize = _this$state.scrollbarSize,\n          showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n      // This gives the smaller Grid extra room for offset,\n      // In case the main (bottom right) Grid has a scrollbar\n      // If no scrollbar, the extra space is overflow:hidden anyway\n\n      if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n        return scrollbarSize;\n      }\n\n      return typeof columnWidth === 'function' ? columnWidth({\n        index: index + fixedColumnCount\n      }) : columnWidth;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n      var scrollLeft = scrollInfo.scrollLeft,\n          scrollTop = scrollInfo.scrollTop;\n\n      _this.setState({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      });\n\n      var onScroll = _this.props.onScroll;\n\n      if (onScroll) {\n        onScroll(scrollInfo);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n      var horizontal = _ref5.horizontal,\n          size = _ref5.size,\n          vertical = _ref5.vertical;\n      var _this$state2 = _this.state,\n          showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n          showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n      if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n        _this.setState({\n          scrollbarSize: size,\n          showHorizontalScrollbar: horizontal,\n          showVerticalScrollbar: vertical\n        });\n\n        var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n        if (typeof onScrollbarPresenceChange === 'function') {\n          onScrollbarPresenceChange({\n            horizontal: horizontal,\n            size: size,\n            vertical: vertical\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n      var scrollLeft = scrollInfo.scrollLeft;\n\n      _this._onScroll({\n        scrollLeft: scrollLeft,\n        scrollTop: _this.state.scrollTop\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n      var scrollTop = scrollInfo.scrollTop;\n\n      _this._onScroll({\n        scrollTop: scrollTop,\n        scrollLeft: _this.state.scrollLeft\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n      var index = _ref6.index;\n      var _this$props5 = _this.props,\n          fixedRowCount = _this$props5.fixedRowCount,\n          rowCount = _this$props5.rowCount,\n          rowHeight = _this$props5.rowHeight;\n      var _this$state3 = _this.state,\n          scrollbarSize = _this$state3.scrollbarSize,\n          showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n      // This gives the smaller Grid extra room for offset,\n      // In case the main (bottom right) Grid has a scrollbar\n      // If no scrollbar, the extra space is overflow:hidden anyway\n\n      if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n        return scrollbarSize;\n      }\n\n      return typeof rowHeight === 'function' ? rowHeight({\n        index: index + fixedRowCount\n      }) : rowHeight;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n      _this._topLeftGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n      _this._topRightGrid = ref;\n    });\n\n    var deferredMeasurementCache = props.deferredMeasurementCache,\n        _fixedColumnCount = props.fixedColumnCount,\n        _fixedRowCount = props.fixedRowCount;\n\n    _this._maybeCalculateCachedStyles(true);\n\n    if (deferredMeasurementCache) {\n      _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: 0,\n        rowIndexOffset: _fixedRowCount\n      }) : deferredMeasurementCache;\n      _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: _fixedColumnCount,\n        rowIndexOffset: _fixedRowCount\n      }) : deferredMeasurementCache;\n      _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: _fixedColumnCount,\n        rowIndexOffset: 0\n      }) : deferredMeasurementCache;\n    }\n\n    return _this;\n  }\n\n  _createClass(MultiGrid, [{\n    key: \"forceUpdateGrids\",\n    value: function forceUpdateGrids() {\n      this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n      this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n      this._topLeftGrid && this._topLeftGrid.forceUpdate();\n      this._topRightGrid && this._topRightGrid.forceUpdate();\n    }\n    /** See Grid#invalidateCellSizeAfterRender */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender() {\n      var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref7$columnIndex = _ref7.columnIndex,\n          columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n          _ref7$rowIndex = _ref7.rowIndex,\n          rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n      this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n      this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllCells\",\n    value: function measureAllCells() {\n      this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n      this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n      this._topLeftGrid && this._topLeftGrid.measureAllCells();\n      this._topRightGrid && this._topRightGrid.measureAllCells();\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref8$columnIndex = _ref8.columnIndex,\n          columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n          _ref8$rowIndex = _ref8.rowIndex,\n          rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n      var _this$props6 = this.props,\n          fixedColumnCount = _this$props6.fixedColumnCount,\n          fixedRowCount = _this$props6.fixedRowCount;\n      var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n      var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n      this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n        columnIndex: columnIndex,\n        rowIndex: adjustedRowIndex\n      });\n      this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n        columnIndex: adjustedColumnIndex,\n        rowIndex: adjustedRowIndex\n      });\n      this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n        columnIndex: columnIndex,\n        rowIndex: rowIndex\n      });\n      this._topRightGrid && this._topRightGrid.recomputeGridSize({\n        columnIndex: adjustedColumnIndex,\n        rowIndex: rowIndex\n      });\n      this._leftGridWidth = null;\n      this._topGridHeight = null;\n\n      this._maybeCalculateCachedStyles(true);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n          scrollLeft = _this$props7.scrollLeft,\n          scrollTop = _this$props7.scrollTop;\n\n      if (scrollLeft > 0 || scrollTop > 0) {\n        var newState = {};\n\n        if (scrollLeft > 0) {\n          newState.scrollLeft = scrollLeft;\n        }\n\n        if (scrollTop > 0) {\n          newState.scrollTop = scrollTop;\n        }\n\n        this.setState(newState);\n      }\n\n      this._handleInvalidatedGridSize();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._handleInvalidatedGridSize();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props8 = this.props,\n          onScroll = _this$props8.onScroll,\n          onSectionRendered = _this$props8.onSectionRendered,\n          onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n          scrollLeftProp = _this$props8.scrollLeft,\n          scrollToColumn = _this$props8.scrollToColumn,\n          scrollTopProp = _this$props8.scrollTop,\n          scrollToRow = _this$props8.scrollToRow,\n          rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n      this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n      // This mirrors what Grid does,\n      // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n      if (this.props.width === 0 || this.props.height === 0) {\n        return null;\n      } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n      var _this$state4 = this.state,\n          scrollLeft = _this$state4.scrollLeft,\n          scrollTop = _this$state4.scrollTop;\n      return React.createElement(\"div\", {\n        style: this._containerOuterStyle\n      }, React.createElement(\"div\", {\n        style: this._containerTopStyle\n      }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        scrollLeft: scrollLeft\n      }))), React.createElement(\"div\", {\n        style: this._containerBottomStyle\n      }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        scrollTop: scrollTop\n      })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        onSectionRendered: onSectionRendered,\n        scrollLeft: scrollLeft,\n        scrollToColumn: scrollToColumn,\n        scrollToRow: scrollToRow,\n        scrollTop: scrollTop\n      }))));\n    }\n  }, {\n    key: \"_getBottomGridHeight\",\n    value: function _getBottomGridHeight(props) {\n      var height = props.height;\n\n      var topGridHeight = this._getTopGridHeight(props);\n\n      return height - topGridHeight;\n    }\n  }, {\n    key: \"_getLeftGridWidth\",\n    value: function _getLeftGridWidth(props) {\n      var fixedColumnCount = props.fixedColumnCount,\n          columnWidth = props.columnWidth;\n\n      if (this._leftGridWidth == null) {\n        if (typeof columnWidth === 'function') {\n          var leftGridWidth = 0;\n\n          for (var index = 0; index < fixedColumnCount; index++) {\n            leftGridWidth += columnWidth({\n              index: index\n            });\n          }\n\n          this._leftGridWidth = leftGridWidth;\n        } else {\n          this._leftGridWidth = columnWidth * fixedColumnCount;\n        }\n      }\n\n      return this._leftGridWidth;\n    }\n  }, {\n    key: \"_getRightGridWidth\",\n    value: function _getRightGridWidth(props) {\n      var width = props.width;\n\n      var leftGridWidth = this._getLeftGridWidth(props);\n\n      return width - leftGridWidth;\n    }\n  }, {\n    key: \"_getTopGridHeight\",\n    value: function _getTopGridHeight(props) {\n      var fixedRowCount = props.fixedRowCount,\n          rowHeight = props.rowHeight;\n\n      if (this._topGridHeight == null) {\n        if (typeof rowHeight === 'function') {\n          var topGridHeight = 0;\n\n          for (var index = 0; index < fixedRowCount; index++) {\n            topGridHeight += rowHeight({\n              index: index\n            });\n          }\n\n          this._topGridHeight = topGridHeight;\n        } else {\n          this._topGridHeight = rowHeight * fixedRowCount;\n        }\n      }\n\n      return this._topGridHeight;\n    }\n  }, {\n    key: \"_handleInvalidatedGridSize\",\n    value: function _handleInvalidatedGridSize() {\n      if (typeof this._deferredInvalidateColumnIndex === 'number') {\n        var columnIndex = this._deferredInvalidateColumnIndex;\n        var rowIndex = this._deferredInvalidateRowIndex;\n        this._deferredInvalidateColumnIndex = null;\n        this._deferredInvalidateRowIndex = null;\n        this.recomputeGridSize({\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        });\n        this.forceUpdate();\n      }\n    }\n    /**\n     * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n     * This method recalculates styles only when specific props change.\n     */\n\n  }, {\n    key: \"_maybeCalculateCachedStyles\",\n    value: function _maybeCalculateCachedStyles(resetAll) {\n      var _this$props9 = this.props,\n          columnWidth = _this$props9.columnWidth,\n          enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n          enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n          height = _this$props9.height,\n          fixedColumnCount = _this$props9.fixedColumnCount,\n          fixedRowCount = _this$props9.fixedRowCount,\n          rowHeight = _this$props9.rowHeight,\n          style = _this$props9.style,\n          styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n          styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n          styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n          styleTopRightGrid = _this$props9.styleTopRightGrid,\n          width = _this$props9.width;\n      var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n      var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n      var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n      if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n        this._containerOuterStyle = _objectSpread({\n          height: height,\n          overflow: 'visible',\n          // Let :focus outline show through\n          width: width\n        }, style);\n      }\n\n      if (resetAll || sizeChange || topSizeChange) {\n        this._containerTopStyle = {\n          height: this._getTopGridHeight(this.props),\n          position: 'relative',\n          width: width\n        };\n        this._containerBottomStyle = {\n          height: height - this._getTopGridHeight(this.props),\n          overflow: 'visible',\n          // Let :focus outline show through\n          position: 'relative',\n          width: width\n        };\n      }\n\n      if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n        this._bottomLeftGridStyle = _objectSpread({\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n          position: 'absolute'\n        }, styleBottomLeftGrid);\n      }\n\n      if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n        this._bottomRightGridStyle = _objectSpread({\n          left: this._getLeftGridWidth(this.props),\n          position: 'absolute'\n        }, styleBottomRightGrid);\n      }\n\n      if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n        this._topLeftGridStyle = _objectSpread({\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: 'hidden',\n          position: 'absolute',\n          top: 0\n        }, styleTopLeftGrid);\n      }\n\n      if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n        this._topRightGridStyle = _objectSpread({\n          left: this._getLeftGridWidth(this.props),\n          overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n          overflowY: 'hidden',\n          position: 'absolute',\n          top: 0\n        }, styleTopRightGrid);\n      }\n\n      this._lastRenderedColumnWidth = columnWidth;\n      this._lastRenderedFixedColumnCount = fixedColumnCount;\n      this._lastRenderedFixedRowCount = fixedRowCount;\n      this._lastRenderedHeight = height;\n      this._lastRenderedRowHeight = rowHeight;\n      this._lastRenderedStyle = style;\n      this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n      this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n      this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n      this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n      this._lastRenderedWidth = width;\n    }\n  }, {\n    key: \"_prepareForRender\",\n    value: function _prepareForRender() {\n      if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n        this._leftGridWidth = null;\n      }\n\n      if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n        this._topGridHeight = null;\n      }\n\n      this._maybeCalculateCachedStyles();\n\n      this._lastRenderedColumnWidth = this.props.columnWidth;\n      this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n      this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n      this._lastRenderedRowHeight = this.props.rowHeight;\n    }\n  }, {\n    key: \"_renderBottomLeftGrid\",\n    value: function _renderBottomLeftGrid(props) {\n      var enableFixedColumnScroll = props.enableFixedColumnScroll,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          rowCount = props.rowCount,\n          hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n      var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n      if (!fixedColumnCount) {\n        return null;\n      }\n\n      var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n          height = this._getBottomGridHeight(props),\n          width = this._getLeftGridWidth(props),\n          scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n          gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n      var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererBottomLeftGrid,\n        className: this.props.classNameBottomLeftGrid,\n        columnCount: fixedColumnCount,\n        deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n        height: height,\n        onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n        ref: this._bottomLeftGridRef,\n        rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n        rowHeight: this._rowHeightBottomGrid,\n        style: this._bottomLeftGridStyle,\n        tabIndex: null,\n        width: gridWidth\n      }));\n\n      if (hideBottomLeftGridScrollbar) {\n        return React.createElement(\"div\", {\n          className: \"BottomLeftGrid_ScrollWrapper\",\n          style: _objectSpread({}, this._bottomLeftGridStyle, {\n            height: height,\n            width: width,\n            overflowY: 'hidden'\n          })\n        }, bottomLeftGrid);\n      }\n\n      return bottomLeftGrid;\n    }\n  }, {\n    key: \"_renderBottomRightGrid\",\n    value: function _renderBottomRightGrid(props) {\n      var columnCount = props.columnCount,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          rowCount = props.rowCount,\n          scrollToColumn = props.scrollToColumn,\n          scrollToRow = props.scrollToRow;\n      return React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererBottomRightGrid,\n        className: this.props.classNameBottomRightGrid,\n        columnCount: Math.max(0, columnCount - fixedColumnCount),\n        columnWidth: this._columnWidthRightGrid,\n        deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n        height: this._getBottomGridHeight(props),\n        onScroll: this._onScroll,\n        onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n        ref: this._bottomRightGridRef,\n        rowCount: Math.max(0, rowCount - fixedRowCount),\n        rowHeight: this._rowHeightBottomGrid,\n        scrollToColumn: scrollToColumn - fixedColumnCount,\n        scrollToRow: scrollToRow - fixedRowCount,\n        style: this._bottomRightGridStyle,\n        width: this._getRightGridWidth(props)\n      }));\n    }\n  }, {\n    key: \"_renderTopLeftGrid\",\n    value: function _renderTopLeftGrid(props) {\n      var fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount;\n\n      if (!fixedColumnCount || !fixedRowCount) {\n        return null;\n      }\n\n      return React.createElement(Grid, _extends({}, props, {\n        className: this.props.classNameTopLeftGrid,\n        columnCount: fixedColumnCount,\n        height: this._getTopGridHeight(props),\n        ref: this._topLeftGridRef,\n        rowCount: fixedRowCount,\n        style: this._topLeftGridStyle,\n        tabIndex: null,\n        width: this._getLeftGridWidth(props)\n      }));\n    }\n  }, {\n    key: \"_renderTopRightGrid\",\n    value: function _renderTopRightGrid(props) {\n      var columnCount = props.columnCount,\n          enableFixedRowScroll = props.enableFixedRowScroll,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          scrollLeft = props.scrollLeft,\n          hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n      var _this$state5 = this.state,\n          showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n          scrollbarSize = _this$state5.scrollbarSize;\n\n      if (!fixedRowCount) {\n        return null;\n      }\n\n      var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n          height = this._getTopGridHeight(props),\n          width = this._getRightGridWidth(props),\n          additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n      var gridHeight = height,\n          style = this._topRightGridStyle;\n\n      if (hideTopRightGridScrollbar) {\n        gridHeight = height + additionalHeight;\n        style = _objectSpread({}, this._topRightGridStyle, {\n          left: 0\n        });\n      }\n\n      var topRightGrid = React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererTopRightGrid,\n        className: this.props.classNameTopRightGrid,\n        columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n        columnWidth: this._columnWidthRightGrid,\n        deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n        height: gridHeight,\n        onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n        ref: this._topRightGridRef,\n        rowCount: fixedRowCount,\n        scrollLeft: scrollLeft,\n        style: style,\n        tabIndex: null,\n        width: width\n      }));\n\n      if (hideTopRightGridScrollbar) {\n        return React.createElement(\"div\", {\n          className: \"TopRightGrid_ScrollWrapper\",\n          style: _objectSpread({}, this._topRightGridStyle, {\n            height: height,\n            width: width,\n            overflowX: 'hidden'\n          })\n        }, topRightGrid);\n      }\n\n      return topRightGrid;\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n        return {\n          scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n          scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n  classNameBottomLeftGrid: '',\n  classNameBottomRightGrid: '',\n  classNameTopLeftGrid: '',\n  classNameTopRightGrid: '',\n  enableFixedColumnScroll: false,\n  enableFixedRowScroll: false,\n  fixedColumnCount: 0,\n  fixedRowCount: 0,\n  scrollToColumn: -1,\n  scrollToRow: -1,\n  style: {},\n  styleBottomLeftGrid: {},\n  styleBottomRightGrid: {},\n  styleTopLeftGrid: {},\n  styleTopRightGrid: {},\n  hideTopRightGridScrollbar: false,\n  hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  classNameBottomLeftGrid: PropTypes.string.isRequired,\n  classNameBottomRightGrid: PropTypes.string.isRequired,\n  classNameTopLeftGrid: PropTypes.string.isRequired,\n  classNameTopRightGrid: PropTypes.string.isRequired,\n  enableFixedColumnScroll: PropTypes.bool.isRequired,\n  enableFixedRowScroll: PropTypes.bool.isRequired,\n  fixedColumnCount: PropTypes.number.isRequired,\n  fixedRowCount: PropTypes.number.isRequired,\n  onScrollbarPresenceChange: PropTypes.func,\n  style: PropTypes.object.isRequired,\n  styleBottomLeftGrid: PropTypes.object.isRequired,\n  styleBottomRightGrid: PropTypes.object.isRequired,\n  styleTopLeftGrid: PropTypes.object.isRequired,\n  styleTopRightGrid: PropTypes.object.isRequired,\n  hideTopRightGridScrollbar: PropTypes.bool,\n  hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ScrollSync, _React$PureComponent);\n\n  function ScrollSync(props, context) {\n    var _this;\n\n    _classCallCheck(this, ScrollSync);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n    _this.state = {\n      clientHeight: 0,\n      clientWidth: 0,\n      scrollHeight: 0,\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollWidth: 0\n    };\n    _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(ScrollSync, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      var _this$state = this.state,\n          clientHeight = _this$state.clientHeight,\n          clientWidth = _this$state.clientWidth,\n          scrollHeight = _this$state.scrollHeight,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop,\n          scrollWidth = _this$state.scrollWidth;\n      return children({\n        clientHeight: clientHeight,\n        clientWidth: clientWidth,\n        onScroll: this._onScroll,\n        scrollHeight: scrollHeight,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        scrollWidth: scrollWidth\n      });\n    }\n  }, {\n    key: \"_onScroll\",\n    value: function _onScroll(_ref) {\n      var clientHeight = _ref.clientHeight,\n          clientWidth = _ref.clientWidth,\n          scrollHeight = _ref.scrollHeight,\n          scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          scrollWidth = _ref.scrollWidth;\n      this.setState({\n        clientHeight: clientHeight,\n        clientWidth: clientWidth,\n        scrollHeight: scrollHeight,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        scrollWidth: scrollWidth\n      });\n    }\n  }]);\n\n  return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering 2 or more virtualized components.\n   * This function should implement the following signature:\n   * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n   */\n  children: PropTypes.func.isRequired\n} : {};","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n  var className = _ref.className,\n      columns = _ref.columns,\n      style = _ref.style;\n  return React.createElement(\"div\", {\n    className: className,\n    role: \"row\",\n    style: style\n  }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","var SortDirection = {\n  /**\n   * Sort items in ascending order.\n   * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n   */\n  ASC: 'ASC',\n\n  /**\n   * Sort items in descending order.\n   * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n   */\n  DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n  var sortDirection = _ref.sortDirection;\n  var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n    'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n    'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n  });\n  return React.createElement(\"svg\", {\n    className: classNames,\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 24 24\"\n  }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n    d: \"M7 14l5-5 5 5z\"\n  }) : React.createElement(\"path\", {\n    d: \"M7 10l5 5 5-5z\"\n  }), React.createElement(\"path\", {\n    d: \"M0 0h24v24H0z\",\n    fill: \"none\"\n  }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n  var dataKey = _ref.dataKey,\n      label = _ref.label,\n      sortBy = _ref.sortBy,\n      sortDirection = _ref.sortDirection;\n  var showSortIndicator = sortBy === dataKey;\n  var children = [React.createElement(\"span\", {\n    className: \"ReactVirtualized__Table__headerTruncatedText\",\n    key: \"label\",\n    title: typeof label === 'string' ? label : null\n  }, label)];\n\n  if (showSortIndicator) {\n    children.push(React.createElement(SortIndicator, {\n      key: \"SortIndicator\",\n      sortDirection: sortDirection\n    }));\n  }\n\n  return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n  var className = _ref.className,\n      columns = _ref.columns,\n      index = _ref.index,\n      key = _ref.key,\n      onRowClick = _ref.onRowClick,\n      onRowDoubleClick = _ref.onRowDoubleClick,\n      onRowMouseOut = _ref.onRowMouseOut,\n      onRowMouseOver = _ref.onRowMouseOver,\n      onRowRightClick = _ref.onRowRightClick,\n      rowData = _ref.rowData,\n      style = _ref.style;\n  var a11yProps = {\n    'aria-rowindex': index + 1\n  };\n\n  if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n    a11yProps['aria-label'] = 'row';\n    a11yProps.tabIndex = 0;\n\n    if (onRowClick) {\n      a11yProps.onClick = function (event) {\n        return onRowClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowDoubleClick) {\n      a11yProps.onDoubleClick = function (event) {\n        return onRowDoubleClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowMouseOut) {\n      a11yProps.onMouseOut = function (event) {\n        return onRowMouseOut({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowMouseOver) {\n      a11yProps.onMouseOver = function (event) {\n        return onRowMouseOver({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowRightClick) {\n      a11yProps.onContextMenu = function (event) {\n        return onRowRightClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n  }\n\n  return React.createElement(\"div\", _extends({}, a11yProps, {\n    className: className,\n    key: key,\n    role: \"row\",\n    style: style\n  }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(Column, _React$Component);\n\n  function Column() {\n    _classCallCheck(this, Column);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n  }\n\n  return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n  cellDataGetter: defaultCellDataGetter,\n  cellRenderer: defaultCellRenderer,\n  defaultSortDirection: SortDirection.ASC,\n  flexGrow: 0,\n  flexShrink: 1,\n  headerRenderer: defaultHeaderRenderer,\n  style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /** Optional aria-label value to set on the column header */\n  'aria-label': PropTypes.string,\n\n  /**\n   * Callback responsible for returning a cell's data, given its :dataKey\n   * ({ columnData: any, dataKey: string, rowData: any }): any\n   */\n  cellDataGetter: PropTypes.func,\n\n  /**\n   * Callback responsible for rendering a cell's contents.\n   * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n   */\n  cellRenderer: PropTypes.func,\n\n  /** Optional CSS class to apply to cell */\n  className: PropTypes.string,\n\n  /** Optional additional data passed to this column's :cellDataGetter */\n  columnData: PropTypes.object,\n\n  /** Uniquely identifies the row-data attribute corresponding to this cell */\n  dataKey: PropTypes.any.isRequired,\n\n  /** Optional direction to be used when clicked the first time */\n  defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n  /** If sort is enabled for the table at large, disable it for this column */\n  disableSort: PropTypes.bool,\n\n  /** Flex grow style; defaults to 0 */\n  flexGrow: PropTypes.number,\n\n  /** Flex shrink style; defaults to 1 */\n  flexShrink: PropTypes.number,\n\n  /** Optional CSS class to apply to this column's header */\n  headerClassName: PropTypes.string,\n\n  /**\n   * Optional callback responsible for rendering a column header contents.\n   * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n   */\n  headerRenderer: PropTypes.func.isRequired,\n\n  /** Optional inline style to apply to this column's header */\n  headerStyle: PropTypes.object,\n\n  /** Optional id to set on the column header */\n  id: PropTypes.string,\n\n  /** Header label for this column */\n  label: PropTypes.node,\n\n  /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n  maxWidth: PropTypes.number,\n\n  /** Minimum width of column. */\n  minWidth: PropTypes.number,\n\n  /** Optional inline style to apply to cell */\n  style: PropTypes.object,\n\n  /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n  width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Table, _React$PureComponent);\n\n  function Table(props) {\n    var _this;\n\n    _classCallCheck(this, Table);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n    _this.state = {\n      scrollbarWidth: 0\n    };\n    _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n    _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n    _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n    _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n    _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(Table, [{\n    key: \"forceUpdateGrid\",\n    value: function forceUpdateGrid() {\n      if (this.Grid) {\n        this.Grid.forceUpdate();\n      }\n    }\n    /** See Grid#getOffsetForCell */\n\n  }, {\n    key: \"getOffsetForRow\",\n    value: function getOffsetForRow(_ref) {\n      var alignment = _ref.alignment,\n          index = _ref.index;\n\n      if (this.Grid) {\n        var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n          alignment: alignment,\n          rowIndex: index\n        }),\n            scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n        return scrollTop;\n      }\n\n      return 0;\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref2) {\n      var columnIndex = _ref2.columnIndex,\n          rowIndex = _ref2.rowIndex;\n\n      if (this.Grid) {\n        this.Grid.invalidateCellSizeAfterRender({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllRows\",\n    value: function measureAllRows() {\n      if (this.Grid) {\n        this.Grid.measureAllCells();\n      }\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref3$columnIndex = _ref3.columnIndex,\n          columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n          _ref3$rowIndex = _ref3.rowIndex,\n          rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeRowHeights\",\n    value: function recomputeRowHeights() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: index\n        });\n      }\n    }\n    /** See Grid#scrollToPosition */\n\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition() {\n      var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToPosition({\n          scrollTop: scrollTop\n        });\n      }\n    }\n    /** See Grid#scrollToCell */\n\n  }, {\n    key: \"scrollToRow\",\n    value: function scrollToRow() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToCell({\n          columnIndex: 0,\n          rowIndex: index\n        });\n      }\n    }\n  }, {\n    key: \"getScrollbarWidth\",\n    value: function getScrollbarWidth() {\n      if (this.Grid) {\n        var _Grid = findDOMNode(this.Grid);\n\n        var clientWidth = _Grid.clientWidth || 0;\n        var offsetWidth = _Grid.offsetWidth || 0;\n        return offsetWidth - clientWidth;\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._setScrollbarWidth();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._setScrollbarWidth();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          children = _this$props.children,\n          className = _this$props.className,\n          disableHeader = _this$props.disableHeader,\n          gridClassName = _this$props.gridClassName,\n          gridStyle = _this$props.gridStyle,\n          headerHeight = _this$props.headerHeight,\n          headerRowRenderer = _this$props.headerRowRenderer,\n          height = _this$props.height,\n          id = _this$props.id,\n          noRowsRenderer = _this$props.noRowsRenderer,\n          rowClassName = _this$props.rowClassName,\n          rowStyle = _this$props.rowStyle,\n          scrollToIndex = _this$props.scrollToIndex,\n          style = _this$props.style,\n          width = _this$props.width;\n      var scrollbarWidth = this.state.scrollbarWidth;\n      var availableRowsHeight = disableHeader ? height : height - headerHeight;\n      var rowClass = typeof rowClassName === 'function' ? rowClassName({\n        index: -1\n      }) : rowClassName;\n      var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n        index: -1\n      }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n      this._cachedColumnStyles = [];\n      React.Children.toArray(children).forEach(function (column, index) {\n        var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n        _this2._cachedColumnStyles[index] = _objectSpread({\n          overflow: 'hidden'\n        }, flexStyles);\n      }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n      // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n      // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n      return React.createElement(\"div\", {\n        \"aria-label\": this.props['aria-label'],\n        \"aria-labelledby\": this.props['aria-labelledby'],\n        \"aria-colcount\": React.Children.toArray(children).length,\n        \"aria-rowcount\": this.props.rowCount,\n        className: clsx('ReactVirtualized__Table', className),\n        id: id,\n        role: \"grid\",\n        style: style\n      }, !disableHeader && headerRowRenderer({\n        className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n        columns: this._getHeaderColumns(),\n        style: _objectSpread({\n          height: headerHeight,\n          overflow: 'hidden',\n          paddingRight: scrollbarWidth,\n          width: width\n        }, rowStyleObject)\n      }), React.createElement(Grid, _extends({}, this.props, {\n        \"aria-readonly\": null,\n        autoContainerWidth: true,\n        className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n        cellRenderer: this._createRow,\n        columnWidth: width,\n        columnCount: 1,\n        height: availableRowsHeight,\n        id: undefined,\n        noContentRenderer: noRowsRenderer,\n        onScroll: this._onScroll,\n        onSectionRendered: this._onSectionRendered,\n        ref: this._setRef,\n        role: \"rowgroup\",\n        scrollbarWidth: scrollbarWidth,\n        scrollToRow: scrollToIndex,\n        style: _objectSpread({}, gridStyle, {\n          overflowX: 'hidden'\n        })\n      })));\n    }\n  }, {\n    key: \"_createColumn\",\n    value: function _createColumn(_ref4) {\n      var column = _ref4.column,\n          columnIndex = _ref4.columnIndex,\n          isScrolling = _ref4.isScrolling,\n          parent = _ref4.parent,\n          rowData = _ref4.rowData,\n          rowIndex = _ref4.rowIndex;\n      var onColumnClick = this.props.onColumnClick;\n      var _column$props = column.props,\n          cellDataGetter = _column$props.cellDataGetter,\n          cellRenderer = _column$props.cellRenderer,\n          className = _column$props.className,\n          columnData = _column$props.columnData,\n          dataKey = _column$props.dataKey,\n          id = _column$props.id;\n      var cellData = cellDataGetter({\n        columnData: columnData,\n        dataKey: dataKey,\n        rowData: rowData\n      });\n      var renderedCell = cellRenderer({\n        cellData: cellData,\n        columnData: columnData,\n        columnIndex: columnIndex,\n        dataKey: dataKey,\n        isScrolling: isScrolling,\n        parent: parent,\n        rowData: rowData,\n        rowIndex: rowIndex\n      });\n\n      var onClick = function onClick(event) {\n        onColumnClick && onColumnClick({\n          columnData: columnData,\n          dataKey: dataKey,\n          event: event\n        });\n      };\n\n      var style = this._cachedColumnStyles[columnIndex];\n      var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n      // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n      // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n      return React.createElement(\"div\", {\n        \"aria-colindex\": columnIndex + 1,\n        \"aria-describedby\": id,\n        className: clsx('ReactVirtualized__Table__rowColumn', className),\n        key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n        onClick: onClick,\n        role: \"gridcell\",\n        style: style,\n        title: title\n      }, renderedCell);\n    }\n  }, {\n    key: \"_createHeader\",\n    value: function _createHeader(_ref5) {\n      var column = _ref5.column,\n          index = _ref5.index;\n      var _this$props2 = this.props,\n          headerClassName = _this$props2.headerClassName,\n          headerStyle = _this$props2.headerStyle,\n          onHeaderClick = _this$props2.onHeaderClick,\n          sort = _this$props2.sort,\n          sortBy = _this$props2.sortBy,\n          sortDirection = _this$props2.sortDirection;\n      var _column$props2 = column.props,\n          columnData = _column$props2.columnData,\n          dataKey = _column$props2.dataKey,\n          defaultSortDirection = _column$props2.defaultSortDirection,\n          disableSort = _column$props2.disableSort,\n          headerRenderer = _column$props2.headerRenderer,\n          id = _column$props2.id,\n          label = _column$props2.label;\n      var sortEnabled = !disableSort && sort;\n      var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n        ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n      });\n\n      var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n      var renderedHeader = headerRenderer({\n        columnData: columnData,\n        dataKey: dataKey,\n        disableSort: disableSort,\n        label: label,\n        sortBy: sortBy,\n        sortDirection: sortDirection\n      });\n      var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n      if (sortEnabled || onHeaderClick) {\n        // If this is a sortable header, clicking it should update the table data's sorting.\n        var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n        // Otherwise, invert the direction of the sort.\n\n        var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n        var onClick = function onClick(event) {\n          sortEnabled && sort({\n            defaultSortDirection: defaultSortDirection,\n            event: event,\n            sortBy: dataKey,\n            sortDirection: newSortDirection\n          });\n          onHeaderClick && onHeaderClick({\n            columnData: columnData,\n            dataKey: dataKey,\n            event: event\n          });\n        };\n\n        var onKeyDown = function onKeyDown(event) {\n          if (event.key === 'Enter' || event.key === ' ') {\n            onClick(event);\n          }\n        };\n\n        headerAriaLabel = column.props['aria-label'] || label || dataKey;\n        headerAriaSort = 'none';\n        headerTabIndex = 0;\n        headerOnClick = onClick;\n        headerOnKeyDown = onKeyDown;\n      }\n\n      if (sortBy === dataKey) {\n        headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n      } // Avoid using object-spread syntax with multiple objects here,\n      // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n      // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n      return React.createElement(\"div\", {\n        \"aria-label\": headerAriaLabel,\n        \"aria-sort\": headerAriaSort,\n        className: classNames,\n        id: id,\n        key: 'Header-Col' + index,\n        onClick: headerOnClick,\n        onKeyDown: headerOnKeyDown,\n        role: \"columnheader\",\n        style: style,\n        tabIndex: headerTabIndex\n      }, renderedHeader);\n    }\n  }, {\n    key: \"_createRow\",\n    value: function _createRow(_ref6) {\n      var _this3 = this;\n\n      var index = _ref6.rowIndex,\n          isScrolling = _ref6.isScrolling,\n          key = _ref6.key,\n          parent = _ref6.parent,\n          style = _ref6.style;\n      var _this$props3 = this.props,\n          children = _this$props3.children,\n          onRowClick = _this$props3.onRowClick,\n          onRowDoubleClick = _this$props3.onRowDoubleClick,\n          onRowRightClick = _this$props3.onRowRightClick,\n          onRowMouseOver = _this$props3.onRowMouseOver,\n          onRowMouseOut = _this$props3.onRowMouseOut,\n          rowClassName = _this$props3.rowClassName,\n          rowGetter = _this$props3.rowGetter,\n          rowRenderer = _this$props3.rowRenderer,\n          rowStyle = _this$props3.rowStyle;\n      var scrollbarWidth = this.state.scrollbarWidth;\n      var rowClass = typeof rowClassName === 'function' ? rowClassName({\n        index: index\n      }) : rowClassName;\n      var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n        index: index\n      }) : rowStyle;\n      var rowData = rowGetter({\n        index: index\n      });\n      var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n        return _this3._createColumn({\n          column: column,\n          columnIndex: columnIndex,\n          isScrolling: isScrolling,\n          parent: parent,\n          rowData: rowData,\n          rowIndex: index,\n          scrollbarWidth: scrollbarWidth\n        });\n      });\n      var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n      var flattenedStyle = _objectSpread({}, style, {\n        height: this._getRowHeight(index),\n        overflow: 'hidden',\n        paddingRight: scrollbarWidth\n      }, rowStyleObject);\n\n      return rowRenderer({\n        className: className,\n        columns: columns,\n        index: index,\n        isScrolling: isScrolling,\n        key: key,\n        onRowClick: onRowClick,\n        onRowDoubleClick: onRowDoubleClick,\n        onRowRightClick: onRowRightClick,\n        onRowMouseOver: onRowMouseOver,\n        onRowMouseOut: onRowMouseOut,\n        rowData: rowData,\n        style: flattenedStyle\n      });\n    }\n    /**\n     * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n     */\n\n  }, {\n    key: \"_getFlexStyleForColumn\",\n    value: function _getFlexStyleForColumn(column) {\n      var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n      var style = _objectSpread({}, customStyle, {\n        flex: flexValue,\n        msFlex: flexValue,\n        WebkitFlex: flexValue\n      });\n\n      if (column.props.maxWidth) {\n        style.maxWidth = column.props.maxWidth;\n      }\n\n      if (column.props.minWidth) {\n        style.minWidth = column.props.minWidth;\n      }\n\n      return style;\n    }\n  }, {\n    key: \"_getHeaderColumns\",\n    value: function _getHeaderColumns() {\n      var _this4 = this;\n\n      var _this$props4 = this.props,\n          children = _this$props4.children,\n          disableHeader = _this$props4.disableHeader;\n      var items = disableHeader ? [] : React.Children.toArray(children);\n      return items.map(function (column, index) {\n        return _this4._createHeader({\n          column: column,\n          index: index\n        });\n      });\n    }\n  }, {\n    key: \"_getRowHeight\",\n    value: function _getRowHeight(rowIndex) {\n      var rowHeight = this.props.rowHeight;\n      return typeof rowHeight === 'function' ? rowHeight({\n        index: rowIndex\n      }) : rowHeight;\n    }\n  }, {\n    key: \"_onScroll\",\n    value: function _onScroll(_ref7) {\n      var clientHeight = _ref7.clientHeight,\n          scrollHeight = _ref7.scrollHeight,\n          scrollTop = _ref7.scrollTop;\n      var onScroll = this.props.onScroll;\n      onScroll({\n        clientHeight: clientHeight,\n        scrollHeight: scrollHeight,\n        scrollTop: scrollTop\n      });\n    }\n  }, {\n    key: \"_onSectionRendered\",\n    value: function _onSectionRendered(_ref8) {\n      var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n          rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n          rowStartIndex = _ref8.rowStartIndex,\n          rowStopIndex = _ref8.rowStopIndex;\n      var onRowsRendered = this.props.onRowsRendered;\n      onRowsRendered({\n        overscanStartIndex: rowOverscanStartIndex,\n        overscanStopIndex: rowOverscanStopIndex,\n        startIndex: rowStartIndex,\n        stopIndex: rowStopIndex\n      });\n    }\n  }, {\n    key: \"_setRef\",\n    value: function _setRef(ref) {\n      this.Grid = ref;\n    }\n  }, {\n    key: \"_setScrollbarWidth\",\n    value: function _setScrollbarWidth() {\n      var scrollbarWidth = this.getScrollbarWidth();\n      this.setState({\n        scrollbarWidth: scrollbarWidth\n      });\n    }\n  }]);\n\n  return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n  disableHeader: false,\n  estimatedRowSize: 30,\n  headerHeight: 0,\n  headerStyle: {},\n  noRowsRenderer: function noRowsRenderer() {\n    return null;\n  },\n  onRowsRendered: function onRowsRendered() {\n    return null;\n  },\n  onScroll: function onScroll() {\n    return null;\n  },\n  overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n  overscanRowCount: 10,\n  rowRenderer: defaultRowRenderer,\n  headerRowRenderer: defaultHeaderRowRenderer,\n  rowStyle: {},\n  scrollToAlignment: 'auto',\n  scrollToIndex: -1,\n  style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /** This is just set on the grid top element. */\n  'aria-label': PropTypes.string,\n\n  /** This is just set on the grid top element. */\n  'aria-labelledby': PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  autoHeight: PropTypes.bool,\n\n  /** One or more Columns describing the data displayed in this row */\n  children: function children(props) {\n    var children = React.Children.toArray(props.children);\n\n    for (var i = 0; i < children.length; i++) {\n      var childType = children[i].type;\n\n      if (childType !== Column && !(childType.prototype instanceof Column)) {\n        return new Error('Table only accepts children of type Column');\n      }\n    }\n  },\n\n  /** Optional CSS class name */\n  className: PropTypes.string,\n\n  /** Disable rendering the header at all */\n  disableHeader: PropTypes.bool,\n\n  /**\n   * Used to estimate the total height of a Table before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  estimatedRowSize: PropTypes.number.isRequired,\n\n  /** Optional custom CSS class name to attach to inner Grid element. */\n  gridClassName: PropTypes.string,\n\n  /** Optional inline style to attach to inner Grid element. */\n  gridStyle: PropTypes.object,\n\n  /** Optional CSS class to apply to all column headers */\n  headerClassName: PropTypes.string,\n\n  /** Fixed height of header row */\n  headerHeight: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a table row given an array of columns:\n   * Should implement the following interface: ({\n   *   className: string,\n   *   columns: any[],\n   *   style: any\n   * }): PropTypes.node\n   */\n  headerRowRenderer: PropTypes.func,\n\n  /** Optional custom inline style to attach to table header columns. */\n  headerStyle: PropTypes.object,\n\n  /** Fixed/available height for out DOM element */\n  height: PropTypes.number.isRequired,\n\n  /** Optional id */\n  id: PropTypes.string,\n\n  /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n  noRowsRenderer: PropTypes.func,\n\n  /**\n   * Optional callback when a column is clicked.\n   * ({ columnData: any, dataKey: string }): void\n   */\n  onColumnClick: PropTypes.func,\n\n  /**\n   * Optional callback when a column's header is clicked.\n   * ({ columnData: any, dataKey: string }): void\n   */\n  onHeaderClick: PropTypes.func,\n\n  /**\n   * Callback invoked when a user clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowClick: PropTypes.func,\n\n  /**\n   * Callback invoked when a user double-clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowDoubleClick: PropTypes.func,\n\n  /**\n   * Callback invoked when the mouse leaves a table row.\n   * ({ index: number }): void\n   */\n  onRowMouseOut: PropTypes.func,\n\n  /**\n   * Callback invoked when a user moves the mouse over a table row.\n   * ({ index: number }): void\n   */\n  onRowMouseOver: PropTypes.func,\n\n  /**\n   * Callback invoked when a user right-clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowRightClick: PropTypes.func,\n\n  /**\n   * Callback invoked with information about the slice of rows that were just rendered.\n   * ({ startIndex, stopIndex }): void\n   */\n  onRowsRendered: PropTypes.func,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   * ({ clientHeight, scrollHeight, scrollTop }): void\n   */\n  onScroll: PropTypes.func.isRequired,\n\n  /** See Grid#overscanIndicesGetter */\n  overscanIndicesGetter: PropTypes.func.isRequired,\n\n  /**\n   * Number of rows to render above/below the visible bounds of the list.\n   * These rows can help for smoother scrolling on touch devices.\n   */\n  overscanRowCount: PropTypes.number.isRequired,\n\n  /**\n   * Optional CSS class to apply to all table rows (including the header row).\n   * This property can be a CSS class name (string) or a function that returns a class name.\n   * If a function is provided its signature should be: ({ index: number }): string\n   */\n  rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n  /**\n   * Callback responsible for returning a data row given an index.\n   * ({ index: number }): any\n   */\n  rowGetter: PropTypes.func.isRequired,\n\n  /**\n   * Either a fixed row height (number) or a function that returns the height of a row given its index.\n   * ({ index: number }): number\n   */\n  rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n  /** Number of rows in table. */\n  rowCount: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a table row given an array of columns:\n   * Should implement the following interface: ({\n   *   className: string,\n   *   columns: Array,\n   *   index: number,\n   *   isScrolling: boolean,\n   *   onRowClick: ?Function,\n   *   onRowDoubleClick: ?Function,\n   *   onRowMouseOver: ?Function,\n   *   onRowMouseOut: ?Function,\n   *   rowData: any,\n   *   style: any\n   * }): PropTypes.node\n   */\n  rowRenderer: PropTypes.func,\n\n  /** Optional custom inline style to attach to table rows. */\n  rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n  /** See Grid#scrollToAlignment */\n  scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  scrollToIndex: PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  scrollTop: PropTypes.number,\n\n  /**\n   * Sort function to be called if a sortable header is clicked.\n   * Should implement the following interface: ({\n   *   defaultSortDirection: 'ASC' | 'DESC',\n   *   event: MouseEvent,\n   *   sortBy: string,\n   *   sortDirection: SortDirection\n   * }): void\n   */\n  sort: PropTypes.func,\n\n  /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n  sortBy: PropTypes.string,\n\n  /** Table data is currently sorted in this direction (if it is sorted at all) */\n  sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n  /** Optional inline style */\n  style: PropTypes.object,\n\n  /** Tab index for focus */\n  tabIndex: PropTypes.number,\n\n  /** Width of list */\n  width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n  var dataKey = _ref.dataKey,\n      rowData = _ref.rowData;\n\n  if (typeof rowData.get === 'function') {\n    return rowData.get(dataKey);\n  } else {\n    return rowData[dataKey];\n  }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n  var cellData = _ref.cellData;\n\n  if (cellData == null) {\n    return '';\n  } else {\n    return String(cellData);\n  }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n  if (disablePointerEventsTimeoutId) {\n    disablePointerEventsTimeoutId = null;\n\n    if (document.body && originalBodyPointerEvents != null) {\n      document.body.style.pointerEvents = originalBodyPointerEvents;\n    }\n\n    originalBodyPointerEvents = null;\n  }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n  enablePointerEventsIfDisabled();\n  mountedInstances.forEach(function (instance) {\n    return instance.__resetIsScrolling();\n  });\n}\n\nfunction enablePointerEventsAfterDelay() {\n  if (disablePointerEventsTimeoutId) {\n    cancelAnimationTimeout(disablePointerEventsTimeoutId);\n  }\n\n  var maximumTimeout = 0;\n  mountedInstances.forEach(function (instance) {\n    maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n  });\n  disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n  if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    document.body.style.pointerEvents = 'none';\n  }\n\n  enablePointerEventsAfterDelay();\n  mountedInstances.forEach(function (instance) {\n    if (instance.props.scrollElement === event.currentTarget) {\n      instance.__handleWindowScrollEvent();\n    }\n  });\n}\n\nexport function registerScrollListener(component, element) {\n  if (!mountedInstances.some(function (instance) {\n    return instance.props.scrollElement === element;\n  })) {\n    element.addEventListener('scroll', onScrollWindow);\n  }\n\n  mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n  mountedInstances = mountedInstances.filter(function (instance) {\n    return instance !== component;\n  });\n\n  if (!mountedInstances.length) {\n    element.removeEventListener('scroll', onScrollWindow);\n\n    if (disablePointerEventsTimeoutId) {\n      cancelAnimationTimeout(disablePointerEventsTimeoutId);\n      enablePointerEventsIfDisabled();\n    }\n  }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n  return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n  return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n  if (!scrollElement) {\n    return {\n      height: props.serverHeight,\n      width: props.serverWidth\n    };\n  } else if (isWindow(scrollElement)) {\n    var _window = window,\n        innerHeight = _window.innerHeight,\n        innerWidth = _window.innerWidth;\n    return {\n      height: typeof innerHeight === 'number' ? innerHeight : 0,\n      width: typeof innerWidth === 'number' ? innerWidth : 0\n    };\n  } else {\n    return getBoundingBox(scrollElement);\n  }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n  if (isWindow(container) && document.documentElement) {\n    var containerElement = document.documentElement;\n    var elementRect = getBoundingBox(element);\n    var containerRect = getBoundingBox(containerElement);\n    return {\n      top: elementRect.top - containerRect.top,\n      left: elementRect.left - containerRect.left\n    };\n  } else {\n    var scrollOffset = getScrollOffset(container);\n\n    var _elementRect = getBoundingBox(element);\n\n    var _containerRect = getBoundingBox(container);\n\n    return {\n      top: _elementRect.top + scrollOffset.top - _containerRect.top,\n      left: _elementRect.left + scrollOffset.left - _containerRect.left\n    };\n  }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n  if (isWindow(element) && document.documentElement) {\n    return {\n      top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n      left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n    };\n  } else {\n    return {\n      top: element.scrollTop,\n      left: element.scrollLeft\n    };\n  }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n  return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(WindowScroller, _React$PureComponent);\n\n  function WindowScroller() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, WindowScroller);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n    _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n      isScrolling: false,\n      scrollLeft: 0,\n      scrollTop: 0\n    }));\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n      if (element && !(element instanceof Element)) {\n        console.warn('WindowScroller registerChild expects to be passed Element or null');\n      }\n\n      _this._child = element;\n\n      _this.updatePosition();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n      var scrollTop = _ref.scrollTop;\n\n      if (_this.state.scrollTop === scrollTop) {\n        return;\n      }\n\n      var scrollElement = _this.props.scrollElement;\n\n      if (scrollElement) {\n        if (typeof scrollElement.scrollTo === 'function') {\n          scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n        } else {\n          scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n      if (element === window) {\n        window.addEventListener('resize', _this._onResize, false);\n      } else {\n        _this._detectElementResize.addResizeListener(element, _this._onResize);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n      if (element === window) {\n        window.removeEventListener('resize', _this._onResize, false);\n      } else if (element) {\n        _this._detectElementResize.removeResizeListener(element, _this._onResize);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n      _this.updatePosition();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n      if (!_this._isMounted) {\n        return;\n      }\n\n      var onScroll = _this.props.onScroll;\n      var scrollElement = _this.props.scrollElement;\n\n      if (scrollElement) {\n        var scrollOffset = getScrollOffset(scrollElement);\n        var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n        var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n        _this.setState({\n          isScrolling: true,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n\n        onScroll({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n      _this.setState({\n        isScrolling: false\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(WindowScroller, [{\n    key: \"updatePosition\",\n    value: function updatePosition() {\n      var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n      var onResize = this.props.onResize;\n      var _this$state = this.state,\n          height = _this$state.height,\n          width = _this$state.width;\n      var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n      if (thisNode instanceof Element && scrollElement) {\n        var offset = getPositionOffset(thisNode, scrollElement);\n        this._positionFromTop = offset.top;\n        this._positionFromLeft = offset.left;\n      }\n\n      var dimensions = getDimensions(scrollElement, this.props);\n\n      if (height !== dimensions.height || width !== dimensions.width) {\n        this.setState({\n          height: dimensions.height,\n          width: dimensions.width\n        });\n        onResize({\n          height: dimensions.height,\n          width: dimensions.width\n        });\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var scrollElement = this.props.scrollElement;\n      this._detectElementResize = createDetectElementResize();\n      this.updatePosition(scrollElement);\n\n      if (scrollElement) {\n        registerScrollListener(this, scrollElement);\n\n        this._registerResizeListener(scrollElement);\n      }\n\n      this._isMounted = true;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var scrollElement = this.props.scrollElement;\n      var prevScrollElement = prevProps.scrollElement;\n\n      if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n        this.updatePosition(scrollElement);\n        unregisterScrollListener(this, prevScrollElement);\n        registerScrollListener(this, scrollElement);\n\n        this._unregisterResizeListener(prevScrollElement);\n\n        this._registerResizeListener(scrollElement);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var scrollElement = this.props.scrollElement;\n\n      if (scrollElement) {\n        unregisterScrollListener(this, scrollElement);\n\n        this._unregisterResizeListener(scrollElement);\n      }\n\n      this._isMounted = false;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      var _this$state2 = this.state,\n          isScrolling = _this$state2.isScrolling,\n          scrollTop = _this$state2.scrollTop,\n          scrollLeft = _this$state2.scrollLeft,\n          height = _this$state2.height,\n          width = _this$state2.width;\n      return children({\n        onChildScroll: this._onChildScroll,\n        registerChild: this._registerChild,\n        height: height,\n        isScrolling: isScrolling,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        width: width\n      });\n    }\n  }]);\n\n  return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  /**\n   * Function responsible for rendering children.\n   * This function should implement the following signature:\n   * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n   */\n  \"children\": PropTypes.func.isRequired,\n\n  /** Callback to be invoked on-resize: ({ height, width }) */\n  \"onResize\": PropTypes.func.isRequired,\n\n  /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /** Element to attach scroll event listeners. Defaults to window. */\n  \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n    return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n  }]),\n\n  /**\n   * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n   */\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n  /** Height used for server-side rendering */\n  \"serverHeight\": PropTypes.number.isRequired,\n\n  /** Width used for server-side rendering */\n  \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n  onResize: function onResize() {},\n  onScroll: function onScroll() {},\n  scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n  scrollElement: getWindow(),\n  serverHeight: 0,\n  serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","const SELECTION_BACKGROUND = '#50A5F5FE';\nlet range;\nlet docViewer;\nlet inputElement;\n\n/**\n * @ignore\n * Helper function to keep the highlight of the selected text in the text edit box before the elemnt focus is changed.\n */\nexport function keepTextEditSelectionOnInputFocus(core) {\n  inputElement = document.activeElement;\n  docViewer = core.getDocumentViewer();\n  // When the input is still in focus but we changed page, we need to un-focus the input.\n  docViewer.addEventListener('pageNumberUpdated', handlePageChange, { once: true });\n  // When we click anywhere other than the input field itself, it should unfocus.\n  document.addEventListener('mousedown', handleClick);\n\n  const currentRange = window.getSelection().getRangeAt(0);\n  const isFocusOutsideTextBox = currentRange.startContainer.nodeName === 'DIV';\n  // Component re-renders when we focus into the input field because it is a dropdown/input combo.\n  // In that case the focus is already shifted out from text edit box and this function is executed again\n  // due to re-render. The selection will no longer include the text nodes we initially selected\n  // in the text edit box.\n  if (isFocusOutsideTextBox) {\n    return;\n  }\n\n  // When we have nothing selected, simply return\n  const isEmptySelection = currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset;\n  if (isEmptySelection) {\n    return;\n  }\n\n  // When the color / font style of the selected text was changed at least once before changing\n  // the font size with input field, the selection we get from `getSelection` would have been modified\n  // by worker API. In this case, we need to reinitialize the range so that the range object returns to its initial state.\n  const isRangeModifiedByWorkerAPI = currentRange.startContainer.nodeName === 'SPAN';\n  if (isRangeModifiedByWorkerAPI) {\n    range = reinitializeRange(currentRange);\n  } else {\n    range = currentRange;\n  }\n\n  toggleSelectionHighlight(range.startContainer, range.endContainer);\n}\n\n/**\n * @ignore\n * Helper function to restore the text edit box selection\n */\nexport function restoreSelection() {\n  if (!range) {\n    return;\n  }\n  const selection = window.getSelection();\n  selection.removeAllRanges();\n  selection.addRange(range);\n  range = null;\n  docViewer.removeEventListener('pageNumberUpdated', handlePageChange);\n  document.removeEventListener('mousedown', handleClick);\n}\n\n/**\n * @ignore\n * Toggles the background color of the selected elements recursively.\n * @param {Text} startTextNode\n * @param {Text} endTextNode\n */\nfunction toggleSelectionHighlight(startTextNode, endTextNode) {\n  const startElement = startTextNode.parentElement;\n  const selectionEnd = !startElement.nextElementSibling && startElement.parentElement.nextElementSibling === endTextNode;\n  if (selectionEnd) {\n    return;\n  }\n  startElement.style.background = SELECTION_BACKGROUND;\n  const highlighNextCharacterSameLine = startElement.nextElementSibling?.tagName === 'SPAN' && startTextNode !== endTextNode;\n  const highlighNextCharacterNextLine = startElement.nextElementSibling === null && startElement.parentElement.nextElementSibling;\n  if (highlighNextCharacterSameLine) {\n    // When the next character in selection is in the same line of current character, we simply pass that in\n    toggleSelectionHighlight(startElement.nextElementSibling.firstChild, endTextNode);\n  } else if (highlighNextCharacterNextLine) {\n    // when the next character in selection is in the next line, we need to go into the next line and continue our recursion\n    toggleSelectionHighlight(startElement.parentElement.nextElementSibling.firstElementChild.firstChild, endTextNode);\n  }\n}\n\nfunction reinitializeRange(workerAPIEditedRange) {\n  const selection = window.getSelection();\n  selection.removeAllRanges();\n  const startNode = workerAPIEditedRange.startContainer.firstChild;\n  const endNode = workerAPIEditedRange.endContainer.previousSibling.firstChild;\n  workerAPIEditedRange.setStart(startNode, 0);\n  workerAPIEditedRange.setEnd(endNode, 1);\n  return workerAPIEditedRange;\n}\n\nfunction handlePageChange() {\n  if (document.activeElement?.tagName === 'INPUT') {\n    document.activeElement.blur();\n  }\n  docViewer.removeEventListener('pageNumberUpdated', handlePageChange);\n  document.removeEventListener('mousedown', handleClick);\n}\n\nfunction handleClick(e) {\n  const isClickingFontSizeInput = e.target === inputElement;\n  if (!isClickingFontSizeInput) {\n    document.activeElement.blur();\n    document.removeEventListener('mousedown', handleClick);\n  }\n}","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport core from 'core';\nimport Icon from 'components/Icon';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport { useTranslation } from 'react-i18next';\nimport { restoreSelection, keepTextEditSelectionOnInputFocus } from './pdfEditHelper';\n\nimport './FontSizeDropdown.scss';\nimport debounce from 'lodash/debounce';\n\nexport const DEBOUNCE_TIME = 750;\n\nconst propTypes = {\n  fontSize: PropTypes.number,\n  fontUnit: PropTypes.string, // Ex: 'pt'\n  onFontSizeChange: PropTypes.func.isRequired,\n  maxFontSize: PropTypes.number,\n  incrementMap: PropTypes.object,\n  onError: PropTypes.func, // Calls this with current error message string whenever it changes\n  applyOnlyOnBlur: PropTypes.bool // If true, apply the font size change only when the element loses focus\n};\n\nconst MIN_FONT_SIZE = 1;\n// Default maxFontSize\nconst RENDER_ROWS_UPPER_LIMIT = 128;\n// Default increment map\nconst BREAKS_AND_INCREMENT = {\n  0: 1,\n  20: 2,\n  48: 4,\n};\n\nconst FontSizeDropdown = ({\n  onFontSizeChange,\n  fontSize = 12.0,\n  fontUnit = 'pt',\n  maxFontSize = RENDER_ROWS_UPPER_LIMIT,\n  incrementMap = BREAKS_AND_INCREMENT,\n  onError = undefined,\n  applyOnlyOnBlur = false\n}) => {\n  const { t } = useTranslation();\n  const inputRef = useRef();\n  const iconButtonRef = useRef();\n  const dropdownDivRef = useRef();\n  const dropdownContainerRef = useRef();\n  const [sizes, setSizes] = useState([]);\n  const [error, setError] = useState(false);\n  const [initialFontSize, setInitialFontSize] = useState(null);\n\n  const onClickOutside = useCallback(() => {\n    setOpen(false);\n  }, []);\n  useOnClickOutside(dropdownContainerRef, onClickOutside);\n\n  const [currSize, setCurrSize] = useState(fontSize <= maxFontSize ? fontSize : 1);\n  const isValidNum = (num, arr = []) => num && arr.indexOf(num) === -1 && num <= maxFontSize && num >= MIN_FONT_SIZE;\n  useEffect(() => {\n    // update the font size indicator in Text Editing Panel\n    if (core.getContentEditManager().isInContentEditMode()) {\n      setCurrSize(fontSize <= maxFontSize ? fontSize : 1);\n    }\n    inputRef.current.value = focused ? fontSize : `${fontSize}pt`;\n  }, [fontSize]);\n  useEffect(() => {\n    incrementMap[maxFontSize] = 12;\n    const getNewNumbers = (curr) => {\n      const startArr = [MIN_FONT_SIZE];\n      for (let i = 1; i <= maxFontSize; i++) {\n        const higherIncrement = getIncrement(startArr[startArr.length - 1]);\n        const higher = (startArr[startArr.length - 1]) + higherIncrement;\n        isValidNum(higher, startArr) && startArr.push(higher);\n      }\n      if (!startArr.includes(curr)) {\n        startArr.push(curr);\n        startArr.sort((a, b) => a - b);\n      }\n      return startArr;\n    };\n    const getIncrement = (num) => {\n      let greaterThanLast = false;\n      let last;\n      const keys = Object.keys(incrementMap).map((i) => parseFloat(i)).sort((a, b) => a - b);\n      for (const i of keys) {\n        if (num < i && greaterThanLast) {\n          return incrementMap[last];\n        }\n        if (i === keys[keys.length - 1]) {\n          return incrementMap[i];\n        }\n        if (num >= i) {\n          greaterThanLast = true;\n          last = i;\n        }\n      }\n    };\n    setSizes(getNewNumbers(Math.floor(currSize)));\n  }, []);\n\n  const sizeChange = async (inputElement) => {\n    let newSize = inputElement.value;\n    if (typeof newSize === 'string' && document.activeElement === inputElement) {\n      // we are flooring to integers here following Adobe's font size behaviour\n      newSize = Math.floor(parseFloat(newSize));\n      inputElement.value = newSize;\n    }\n    if (currSize !== newSize) {\n      if (typeof newSize !== 'number' || isNaN(newSize)) {\n        return;\n      }\n      if (!inputElement.checkValidity()) {\n        if (isValidNum(newSize)) {\n          inputElement.validFontSize = newSize;\n        }\n        if (onError) {\n          onError(`${t('option.stylePopup.invalidFontSize')}: ${MIN_FONT_SIZE} - ${maxFontSize}`);\n          setError(true);\n        }\n        return;\n      }\n      setCurrSize(newSize);\n      !applyOnlyOnBlur && onFontSizeChange(`${newSize}${fontUnit}`);\n    } else if (currSize !== inputElement.value) {\n      // update the input if it has decimal but floored to the same value as currSize.\n      setCurrSize(newSize);\n    }\n    setError(false);\n    onError && onError('');\n  };\n  const debouncedSizeChange = debounce(sizeChange, DEBOUNCE_TIME);\n  // This prevents the debounce function from being re-created after re-rendering\n  const cachedDebouncedSizeChange = useCallback((value) => debouncedSizeChange(value), []);\n  useEffect(() => {\n    if (applyOnlyOnBlur) {\n      sizeChange(inputRef.current);\n    } else {\n      cachedDebouncedSizeChange(inputRef.current);\n    }\n    return () => debouncedSizeChange.cancel();\n  }, [currSize]);\n  const [focused, setFocused] = useState(false);\n  const focus = (e) => {\n    if (applyOnlyOnBlur) {\n      const annot = core.getAnnotationManager().getSelectedAnnotations()[0];\n      const id = annot?.getCustomData?.('contentEditBoxId');\n      const editor = core.getContentEditManager().getContentBoxById(id)?.editor;\n      editor && keepTextEditSelectionOnInputFocus(core);\n      setInitialFontSize(e.target.value);\n    }\n    setFocused(true);\n  };\n  const blur = (e) => {\n    applyOnlyOnBlur && restoreSelection();\n    if (!e.target.checkValidity() || !currSize) {\n      setCurrSize(e.target.validFontSize || MIN_FONT_SIZE);\n    }\n    setFocused(false);\n    onError && onError(null);\n    onError && setError(false);\n    // Only call worker update when the font size is changed\n    const fontSizeChanged = e.target.value !== initialFontSize && e.target.value > MIN_FONT_SIZE && e.target.value < maxFontSize;\n    (applyOnlyOnBlur && fontSizeChanged) && onFontSizeChange(`${currSize}${fontUnit}`);\n  };\n\n  const [isOpen, setOpen] = useState(false);\n  useEffect(() => {\n    if (isOpen) {\n      const children = dropdownDivRef.current.childNodes;\n      const itemHeight = children[0].getBoundingClientRect().height;\n      const divHeight = dropdownDivRef.current.getBoundingClientRect().height;\n      let itemDistance = 0;\n      for (const node of children) {\n        if (node.innerText === `${Math.floor(fontSize)}pt`) {\n          break;\n        }\n        itemDistance++;\n      }\n      dropdownDivRef.current.scrollTop = itemHeight * itemDistance - divHeight / 2;\n    }\n  }, [isOpen]);\n  const onClickDropdownItem = useCallback(\n    (e, key) => {\n      e.stopPropagation();\n      setOpen(false);\n      setFocused(false);\n      setCurrSize(key);\n      onFontSizeChange(`${key}${fontUnit}`);\n      iconButtonRef?.current.focus();\n    }, [fontUnit, onFontSizeChange]\n  );\n\n  const dropdownItems = useMemo(\n    () => sizes.map((key) => (\n      <DataElementWrapper\n        key={key}\n        type=\"button\"\n        dataElement={`dropdown-item-${key}`}\n        className={classNames('Dropdown__item', { active: key === Math.floor(currSize) })}\n        onClick={(e) => onClickDropdownItem(e, key)}\n        tabIndex={isOpen ? undefined : -1}\n      >\n        {key + fontUnit}\n      </DataElementWrapper>\n    )),\n    [currSize, isOpen, onClickDropdownItem, fontUnit, sizes]\n  );\n\n  const onOpenDropdown = (e) => {\n    e.preventDefault();\n    setOpen(!isOpen);\n  };\n\n  return (\n    <div className=\"FontSizeDropdown\">\n      <input\n        min={MIN_FONT_SIZE}\n        max={maxFontSize}\n        value = {focused ? currSize : `${currSize}pt`}\n        onChange={(e) => setCurrSize(e.target.value)}\n        type={focused ? 'number' : 'string'}\n        onFocus={focus}\n        onBlur={blur}\n        onSelectCapture={focus}\n        ref={inputRef}\n        disabled={isOpen}\n        className={error ? 'error' : undefined}\n      />\n      <div ref={dropdownContainerRef}>\n        <div\n          className={classNames('icon-button')}\n          onClick={onOpenDropdown}\n          onTouchEnd={onOpenDropdown}\n          ref={iconButtonRef}>\n          <Icon glyph={`icon-chevron-${isOpen ? 'up' : 'down'}`} />\n        </div>\n        <div\n          className={classNames('Dropdown__items', { 'hidden': !isOpen })}\n          role=\"listbox\"\n          ref={dropdownDivRef}\n        >\n          {dropdownItems}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nFontSizeDropdown.propTypes = propTypes;\n\nexport default FontSizeDropdown;\n","import FontSizeDropdown from './FontSizeDropdown';\n\nexport default FontSizeDropdown;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport selectors from 'selectors';\n\nimport './Element.scss';\n\nclass Element extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    className: PropTypes.string.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    children: PropTypes.node,\n  }\n\n  render() {\n    const { isDisabled, className, dataElement, children } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    return (\n      <div className={className} data-element={dataElement}>\n        {children}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  isDisabled: selectors.isElementDisabled(state, ownProps.dataElement),\n});\n\nexport default connect(mapStateToProps)(Element);","import Element from './Element';\n\nexport default Element;","import React, { useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\nimport { isMobile } from 'helpers/device';\n\nimport './FilePicker.scss';\n\nconst FilePicker = ({\n  onChange = () => { },\n  onDrop = () => { },\n  shouldShowIcon = false,\n  acceptFormats,\n  allowMultiple = false,\n  errorMessage = ''\n}) => {\n  const [t] = useTranslation();\n  const [isDragging, setIsDragging] = useState(false);\n  const fileInputRef = useRef(null);\n\n  const onClick = () => {\n    fileInputRef?.current?.click();\n  };\n\n  const onKeyDown = (event) => {\n    if (event.key === 'Enter') {\n      onClick();\n    }\n  };\n\n  const handleChange = (e) => {\n    const files = e.target.files;\n    files.length > 0 && onChange(Array.from(files));\n  };\n\n  const handleDragEnter = (e) => {\n    e.preventDefault();\n    setIsDragging(true);\n  };\n\n  const handleDragOver = (e) => {\n    e.preventDefault();\n  };\n\n  const handleDragLeave = (e) => {\n    e.preventDefault();\n\n    if (!e.target.parentNode.contains(e.relatedTarget)) {\n      setIsDragging(false);\n    }\n  };\n\n  const handleDragExit = (e) => {\n    e.preventDefault();\n    setIsDragging(false);\n  };\n\n  const handleFileDrop = async (e) => {\n    e.preventDefault();\n    setIsDragging(false);\n    const { files } = e.dataTransfer;\n    files.length > 0 && onDrop(Array.from(files));\n  };\n\n  const renderPrompt = () => {\n    if (isMobile()) {\n      return (\n        <div className=\"file-picker-separator\">\n          {t('filePicker.selectFile')}\n        </div>\n      );\n    }\n    return (\n      <>\n        <div>\n          {t('filePicker.dragAndDrop')}\n        </div>\n        <div className=\"file-picker-separator\">\n          {t('filePicker.or')}\n        </div>\n      </>\n    );\n  };\n\n  return (\n    <div className=\"file-picker-component\">\n      <div\n        className={classNames('file-picker-container', { dragging: isDragging })}\n        onDragEnter={handleDragEnter}\n        onDragLeave={handleDragLeave}\n        onDragOver={handleDragOver}\n        onDrop={handleFileDrop}\n        onDragExit={handleDragExit}\n      >\n        <div className=\"file-picker-body\">\n          {shouldShowIcon && <Icon glyph=\"icon-open-folder\" />}\n          {renderPrompt()}\n          <div\n            className=\"md-row modal-btn-file\"\n            tabIndex=\"0\"\n            onKeyDown={onKeyDown}\n            onClick={onClick}\n          >{t('action.browse')}\n            <input\n              ref={fileInputRef}\n              multiple={allowMultiple}\n              style={{ display: 'none' }}\n              type=\"file\"\n              accept={acceptFormats}\n              onChange={(event) => {\n                handleChange(event);\n                event.target.value = null;\n              }}\n            />\n          </div>\n        </div>\n        {errorMessage && (\n          <div className=\"file-picker-error\">{errorMessage}</div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default FilePicker;\n","import FilePicker from './FilePicker';\n\nexport default FilePicker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport selectors from 'selectors';\n\nclass StatefulButton extends React.PureComponent {\n  static propTypes = {\n    dispatch: PropTypes.func,\n    initialState: PropTypes.string.isRequired,\n    mount: PropTypes.func.isRequired,\n    unmount: PropTypes.func,\n    didUpdate: PropTypes.func,\n    states: PropTypes.shape({\n      activeState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n      AnotherState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n    }),\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      activeState: this.props.initialState,\n    };\n  }\n\n  componentDidMount() {\n    const { mount } = this.props;\n    if (mount) {\n      mount(this.update);\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    const { didUpdate, states } = this.props;\n    if (didUpdate) {\n      didUpdate(\n        prevProps,\n        this.props,\n        states[prevState.activeState],\n        states[this.state.activeState],\n        this.update,\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    const { unmount } = this.props;\n    if (unmount) {\n      unmount();\n    }\n  }\n\n  update = (newState) => {\n    if (newState) {\n      this.setState({\n        activeState: newState,\n      });\n    } else {\n      this.forceUpdate();\n    }\n  };\n\n  onClick = () => {\n    const { activeState } = this.state;\n    const { states, dispatch } = this.props;\n\n    this.props.states[activeState].onClick(\n      this.update,\n      states[activeState],\n      dispatch,\n    );\n  };\n\n  render() {\n    const { activeState } = this.state;\n    const { states } = this.props;\n    const { title, img, getContent, isActive } = states[activeState];\n    const content = getContent ? getContent(states[activeState]) : '';\n    const className = [\n      'StatefulButton',\n      states[activeState].className ? states[activeState].className : '',\n    ]\n      .join(' ')\n      .trim();\n\n    return (\n      <Button\n        {...this.props}\n        className={className}\n        isActive={isActive && isActive(this.props)}\n        img={img}\n        label={content}\n        onClick={this.onClick}\n        title={title}\n      />\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  isOpen: selectors.isElementOpen(state, ownProps.dataElement),\n  openElements: selectors.getOpenElements(state),\n});\n\nexport default connect(mapStateToProps)(StatefulButton);\n","import StatefulButton from './StatefulButton';\n\nexport default StatefulButton;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { isIE11 } from 'helpers/device';\nimport { getCircleRadius } from 'constants/slider';\n\nimport './Slider.scss';\n\nclass Slider extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    displayProperty: PropTypes.string.isRequired,\n    getDisplayValue: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    dataElement: PropTypes.string,\n    getCirclePosition: PropTypes.func.isRequired,\n    convertRelativeCirclePositionToValue: PropTypes.func.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    withInputField: PropTypes.bool,\n    inputFieldType: PropTypes.string,\n    min: PropTypes.number,\n    max: PropTypes.number,\n    step: PropTypes.number,\n    getLocalValue: PropTypes.func,\n  };\n\n  constructor(props) {\n    super(props);\n    this.isMouseDown = false;\n    this.sliderSvg = React.createRef();\n    this.inputRef = React.createRef();\n    this.lineLength = 0;\n    this.state = {\n      localValue: props.value,\n      isEiditingInputField: false,\n    };\n  }\n\n  componentDidMount() {\n    window.addEventListener('mousemove', this.onMove);\n    window.addEventListener('mouseup', this.onMouseUp);\n    window.addEventListener('orientationchange', this.updateSvg);\n    window.addEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.addEventListener('touchmove', this.onMove, { passive: false });\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.value !== this.props.value) {\n      this.setState({ localValue: this.props.value });\n    }\n  }\n\n  // Fix for slider having the wrong size\n  // eslint-disable-next-line camelcase\n  UNSAFE_componentWillUpdate() {\n    this.setLineLength();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('mousemove', this.onMove);\n    window.removeEventListener('mouseup', this.onMouseUp);\n    window.removeEventListener('orientationchange', this.updateSvg);\n    window.removeEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.removeEventListener('touchmove', this.onMove, { passive: false });\n  }\n\n  updateSvg = () => {\n    this.setLineLength();\n    this.forceUpdate();\n  };\n\n  setLineLength = () => {\n    this.lineLength =\n      0.94 * this.sliderSvg.current.getBoundingClientRect().width - 2 * getCircleRadius(this.props.isMobile);\n  };\n\n  onMouseDown = (e) => {\n    e.preventDefault();\n    this.isMouseDown = true;\n    this.onMove(e.nativeEvent);\n  };\n\n  onMouseUp = (e) => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    const { property, onStyleChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n\n    onStyleChange(property, value);\n    if (this.props.withInputField) {\n      this.setState({\n        isEiditingInputField: false,\n      });\n    }\n    this.isMouseDown = false;\n  };\n\n  onTouchStart = (e) => {\n    this.onMove(e);\n  };\n\n  onTouchEnd = (e) => {\n    this.onMouseUp(e);\n  };\n\n  onMove = (e) => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    e.preventDefault();\n\n    const { property, onSliderChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n\n    onSliderChange(property, value);\n\n    this.setState({\n      localValue: value,\n    });\n  };\n\n  getRelativeCirclePosition = (e) => {\n    const isUsingMouse = !e.touches;\n    const lineStart = getCircleRadius(this.props.isMobile);\n    const lineEnd = lineStart + this.lineLength;\n    const svgLeft = this.sliderSvg.current.getBoundingClientRect().left;\n    let circlePosition;\n\n    try {\n      if (isUsingMouse) {\n        circlePosition = e.pageX - svgLeft;\n      } else {\n        circlePosition = e.touches[0].pageX - svgLeft;\n      }\n    } catch {\n      // In the event we cannot get a pageX value, stay still instead\n      const { convertRelativeCirclePositionToValue } = this.props;\n      const factor = convertRelativeCirclePositionToValue(this.state.localValue) / this.state.localValue;\n      return this.state.localValue / factor;\n    }\n\n    if (circlePosition < lineStart) {\n      circlePosition = lineStart;\n    } else if (circlePosition > lineEnd) {\n      circlePosition = lineEnd;\n    }\n\n    return (circlePosition - lineStart) / this.lineLength;\n  };\n\n  onInputChange = (e) => {\n    const { getLocalValue, property, onStyleChange, onSliderChange, max, inputFieldType, min } = this.props;\n    if (inputFieldType === 'number' && (e.target.value || e.target.value === 0)) {\n      if (e.target.value > max) {\n        e.target.value = max;\n      }\n      let value = e.target.value;\n      if (e.target.value < min) {\n        value = min;\n      }\n      const localValue = getLocalValue ? getLocalValue(value) : value;\n      onSliderChange(property, localValue);\n      onStyleChange(property, localValue);\n      this.setState({\n        localValue,\n      });\n    }\n  };\n\n  onInputKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      this.inputRef.current.blur();\n    }\n  };\n\n  onInputBlur = (isEiditingInputField) => {\n    const { min, getLocalValue } = this.props;\n    if ((this.inputRef.current.value !== 0 && !this.inputRef.current.value) || this.inputRef.current.value < min) {\n      this.inputRef.current.value = min;\n      const localValue = getLocalValue ? getLocalValue(min) : min;\n      this.setState({ localValue });\n    }\n    this.setState({ isEiditingInputField });\n  };\n\n  onInputFocus = (isEiditingInputField) => {\n    this.setState({ isEiditingInputField });\n  };\n\n  getInputElement = () => {\n    const { inputFieldType, min, max, step, getDisplayValue } = this.props;\n    const displayValue = getDisplayValue(this.state.localValue);\n    if (this.state.isEiditingInputField && inputFieldType === 'number') {\n      return (\n        <div className=\"slider-input-wrapper\">\n          <input\n            autoFocus\n            defaultValue={parseFloat(displayValue)}\n            type={inputFieldType}\n            onChange={this.onInputChange}\n            onKeyDown={this.onInputKeyDown}\n            className=\"slider-input-field\"\n            onBlur={() => this.onInputBlur(false)}\n            // The prop min={} can not be used here, otherwise its impossible to delete everything completely inside input box, which was complained by PM.\n            max={max}\n            min={min}\n            step={step}\n            ref={this.inputRef}\n          />\n        </div>\n      );\n    }\n\n    return (\n      <input\n        readOnly\n        type=\"text\"\n        className=\"slider-input-field\"\n        value={getDisplayValue(this.state.localValue)}\n        onFocus={this.onInputFocus}\n      />\n    );\n  };\n\n  renderSlider = () => {\n    const { dataElement, displayProperty, getCirclePosition, t, withInputField, getDisplayValue } = this.props;\n    const circleCenter = getCirclePosition(this.lineLength, this.state.localValue);\n\n    return (\n      <div className=\"slider\" data-element={dataElement}>\n        <div className=\"slider-property\" onMouseDown={(e) => e.preventDefault()}>\n          {t(`option.slider.${displayProperty}`)}\n        </div>\n        <div className=\"slider-element-container\">\n          <svg\n            data-element={dataElement}\n            onMouseDown={this.onMouseDown}\n            onTouchStart={this.onTouchStart}\n            onTouchEnd={this.onTouchEnd}\n            ref={this.sliderSvg}\n          >\n            <line\n              x1={getCircleRadius(this.props.isMobile)}\n              y1=\"50%\"\n              x2={circleCenter}\n              y2=\"50%\"\n              strokeWidth=\"2\"\n              stroke=\"#00a5e4\"\n              strokeLinecap=\"round\"\n            />\n            <line\n              x1={circleCenter}\n              y1=\"50%\"\n              x2={this.lineLength + getCircleRadius(this.props.isMobile)}\n              y2=\"50%\"\n              strokeWidth=\"2\"\n              stroke=\"#e0e0e0\"\n              strokeLinecap=\"round\"\n            />\n            <circle cx={circleCenter} cy=\"50%\" r={getCircleRadius(this.props.isMobile)} fill=\"#00a5e4\" />\n          </svg>\n          {withInputField ? (\n            this.getInputElement()\n          ) : (\n            <div className=\"slider-value\">{getDisplayValue(this.state.localValue)}</div>\n          )}\n        </div>\n      </div>\n    );\n  };\n\n  render() {\n    if (isIE11) {\n      // We use css Grid to place sliders responsively,\n      // since IE11 only supports the old Grid, we use css Flexbox\n      return <div className=\"slider\">{this.renderSlider()}</div>;\n    }\n\n    return this.renderSlider();\n  }\n}\n\nconst ConnectedSlider = withTranslation(null, { wait: false })(Slider);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedSlider {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import Slider from './Slider';\n\nexport default Slider;","'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 arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    basePickBy = require('./_basePickBy'),\n    getAllKeysIn = require('./_getAllKeysIn');\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 */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nmodule.exports = pickBy;\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","export * from './asap.js'\nexport * from './types.js'\nexport * from './AsapQueue.js'\nexport * from './TaskFactory.js'\n","if (process.env.NODE_ENV !== 'production') {\n  var hot = require('./index').hot;\n  if (module.hot) {\n    var cache = require.cache;\n\n    if (!module.parents || module.parents.length === 0) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n    // access parent\n    var parent = cache[module.parents[0]];\n    if (!parent) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n\n    // remove self from a cache\n    delete cache[module.id];\n\n    // setup hot for caller\n    exports.hot = hot(parent);\n  } else {\n    fallbackHot();\n  }\n} else {\n  // prod mode\n  fallbackHot();\n}\n\nfunction fallbackHot() {\n  exports.hot = function (a) {\n    return a;\n  };\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _atRule = _interopRequireDefault(require(\"./at-rule\"));\n\nvar _vendor = _interopRequireDefault(require(\"./vendor\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nvar _rule = _interopRequireDefault(require(\"./rule\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n *        See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS.\n *\n * @example\n * import postcss from 'postcss'\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n *   console.log(result.css)\n * })\n *\n * @namespace postcss\n */\nfunction postcss() {\n  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n    plugins[_key] = arguments[_key];\n  }\n\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n\n  return new _processor.default(plugins);\n}\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace])\n * processor.plugins[0].postcssPlugin  //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '6.0.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n *   return (root, result) => {\n *     result.root = postcss.root()\n *   }\n * })\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts)\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n *   return (root, result) => {\n *     return new Promise( (resolve, reject) => {\n *       fs.readFile('base.css', (base) => {\n *         root.prepend(base)\n *         resolve()\n *       })\n *     })\n *   }\n * })\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n *   return (root, result) => {\n *     root.walkDecls(decl => {\n *       if (!caniuse.support(decl.prop)) {\n *         decl.warn(result, 'Some browsers do not support ' + decl.prop)\n *       }\n *     })\n *   }\n * })\n * ```\n *\n * @param {string} name          PostCSS plugin name. Same as in `name`\n *                               property in `package.json`. It will be saved\n *                               in `plugin.postcssPlugin` property.\n * @param {function} initializer Will receive plugin options\n *                               and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin.\n */\n\n\npostcss.plugin = function plugin(name, initializer) {\n  function creator() {\n    var transformer = initializer.apply(void 0, arguments);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new _processor.default().version;\n    return transformer;\n  }\n\n  var cache;\n  Object.defineProperty(creator, 'postcss', {\n    get: function get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts);\n  };\n\n  return creator;\n};\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n *\n * @function\n */\n\n\npostcss.stringify = _stringify.default;\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST.\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 })\n * const root2 = postcss.parse(css2, { from: file2 })\n * root1.append(root2).toResult().css\n *\n * @function\n */\n\npostcss.parse = _parse.default;\n/**\n * Contains the {@link vendor} module.\n *\n * @type {vendor}\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\n\npostcss.vendor = _vendor.default;\n/**\n * Contains the {@link list} module.\n *\n * @member {list}\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\n\npostcss.list = _list.default;\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Comment} New comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\n\npostcss.comment = function (defaults) {\n  return new _comment.default(defaults);\n};\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {AtRule} new at-rule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\n\n\npostcss.atRule = function (defaults) {\n  return new _atRule.default(defaults);\n};\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Declaration} new declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\n\n\npostcss.decl = function (defaults) {\n  return new _declaration.default(defaults);\n};\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Rule} new rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\n\n\npostcss.rule = function (defaults) {\n  return new _rule.default(defaults);\n};\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Root} new root node.\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\n\n\npostcss.root = function (defaults) {\n  return new _root.default(defaults);\n};\n\nvar _default = postcss;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsImRlZmF1bHRzIiwiQ29tbWVudCIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBOEI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxJQUFBQSxPQUFTO0FBQUE7O0FBQzVCLE1BQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUFuQixJQUF3QkMsS0FBSyxDQUFDQyxPQUFOLENBQWNILE9BQU8sQ0FBQyxDQUFELENBQXJCLENBQTVCLEVBQXVEO0FBQ3JEQSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJSSxrQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQUQsT0FBTyxDQUFDTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLFdBQVcsR0FBR0YsV0FBVyxNQUFYLG1CQUFsQjtBQUNBRSxJQUFBQSxXQUFXLENBQUNDLGFBQVosR0FBNEJKLElBQTVCO0FBQ0FHLElBQUFBLFdBQVcsQ0FBQ0UsY0FBWixHQUE4QixJQUFJUCxrQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDRDs7QUFFRCxNQUFJSSxLQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDeENRLElBQUFBLEdBRHdDLGlCQUNqQztBQUNMLFVBQUksQ0FBQ0gsS0FBTCxFQUFZQSxLQUFLLEdBQUdMLE9BQU8sRUFBZjtBQUNaLGFBQU9LLEtBQVA7QUFDRDtBQUp1QyxHQUExQzs7QUFPQUwsRUFBQUEsT0FBTyxDQUFDUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDeEQsV0FBT3JCLE9BQU8sQ0FBQyxDQUFDUyxPQUFPLENBQUNZLFVBQUQsQ0FBUixDQUFELENBQVAsQ0FBK0JILE9BQS9CLENBQXVDQyxHQUF2QyxFQUE0Q0MsV0FBNUMsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNELENBckJEO0FBdUJBOzs7Ozs7Ozs7Ozs7O0FBV0FULE9BQU8sQ0FBQ3NCLFNBQVIsR0FBb0JBLGtCQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsT0FBTyxDQUFDdUIsS0FBUixHQUFnQkEsY0FBaEI7QUFFQTs7Ozs7Ozs7O0FBUUF2QixPQUFPLENBQUN3QixNQUFSLEdBQWlCQSxlQUFqQjtBQUVBOzs7Ozs7Ozs7QUFRQXhCLE9BQU8sQ0FBQ3lCLElBQVIsR0FBZUEsYUFBZjtBQUVBOzs7Ozs7Ozs7OztBQVVBekIsT0FBTyxDQUFDMEIsT0FBUixHQUFrQixVQUFBQyxRQUFRO0FBQUEsU0FBSSxJQUFJQyxnQkFBSixDQUFZRCxRQUFaLENBQUo7QUFBQSxDQUExQjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQzZCLE1BQVIsR0FBaUIsVUFBQUYsUUFBUTtBQUFBLFNBQUksSUFBSUcsZUFBSixDQUFXSCxRQUFYLENBQUo7QUFBQSxDQUF6QjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQytCLElBQVIsR0FBZSxVQUFBSixRQUFRO0FBQUEsU0FBSSxJQUFJSyxvQkFBSixDQUFnQkwsUUFBaEIsQ0FBSjtBQUFBLENBQXZCO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBM0IsT0FBTyxDQUFDaUMsSUFBUixHQUFlLFVBQUFOLFFBQVE7QUFBQSxTQUFJLElBQUlPLGFBQUosQ0FBU1AsUUFBVCxDQUFKO0FBQUEsQ0FBdkI7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUEzQixPQUFPLENBQUNtQyxJQUFSLEdBQWUsVUFBQVIsUUFBUTtBQUFBLFNBQUksSUFBSVMsYUFBSixDQUFTVCxRQUFULENBQUo7QUFBQSxDQUF2Qjs7ZUFFZTNCLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBQcm9jZXNzb3IgZnJvbSAnLi9wcm9jZXNzb3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgdmVuZG9yIGZyb20gJy4vdmVuZG9yJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgbGlzdCBmcm9tICcuL2xpc3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlIHRoYXQgd2lsbCBhcHBseSBgcGx1Z2luc2BcbiAqIGFzIENTUyBwcm9jZXNzb3JzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJ1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1bHQgPT4ge1xuICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICogfSlcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyAoLi4ucGx1Z2lucykge1xuICBpZiAocGx1Z2lucy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShwbHVnaW5zWzBdKSkge1xuICAgIHBsdWdpbnMgPSBwbHVnaW5zWzBdXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucylcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUG9zdENTUyBwbHVnaW4gd2l0aCBhIHN0YW5kYXJkIEFQSS5cbiAqXG4gKiBUaGUgbmV3bHktd3JhcHBlZCBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgYm90aCB0aGUgbmFtZSBhbmQgUG9zdENTU1xuICogdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFtyZXBsYWNlXSlcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NQbHVnaW4gIC8vPT4gJ3Bvc3Rjc3MtcmVwbGFjZSdcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NWZXJzaW9uIC8vPT4gJzYuMC4wJ1xuICogYGBgXG4gKlxuICogVGhlIHBsdWdpbiBmdW5jdGlvbiByZWNlaXZlcyAyIGFyZ3VtZW50czoge0BsaW5rIFJvb3R9XG4gKiBhbmQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UuIFRoZSBmdW5jdGlvbiBzaG91bGQgbXV0YXRlIHRoZSBwcm92aWRlZFxuICogYFJvb3RgIG5vZGUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3JlYXRlIGEgbmV3IGBSb290YCBub2RlXG4gKiBhbmQgb3ZlcnJpZGUgdGhlIGByZXN1bHQucm9vdGAgcHJvcGVydHkuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGNsZWFuZXIgPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1jbGVhbmVyJywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJlc3VsdC5yb290ID0gcG9zdGNzcy5yb290KClcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIEFzIGEgY29udmVuaWVuY2UsIHBsdWdpbnMgYWxzbyBleHBvc2UgYSBgcHJvY2Vzc2AgbWV0aG9kIHNvIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRoZW0gYXMgc3RhbmRhbG9uZSB0b29scy5cbiAqXG4gKiBgYGBqc1xuICogY2xlYW5lci5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpXG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpXG4gKiBgYGBcbiAqXG4gKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICpcbiAqIGBgYGpzXG4gKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1pbXBvcnQnLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gKiAgICAgICBmcy5yZWFkRmlsZSgnYmFzZS5jc3MnLCAoYmFzZSkgPT4ge1xuICogICAgICAgICByb290LnByZXBlbmQoYmFzZSlcbiAqICAgICAgICAgcmVzb2x2ZSgpXG4gKiAgICAgICB9KVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBBZGQgd2FybmluZ3MgdXNpbmcgdGhlIHtAbGluayBOb2RlI3dhcm59IG1ldGhvZC5cbiAqIFNlbmQgZGF0YSB0byBvdGhlciBwbHVnaW5zIHVzaW5nIHRoZSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfSBhcnJheS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtY2FuaXVzZS10ZXN0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICogICAgICAgaWYgKCFjYW5pdXNlLnN1cHBvcnQoZGVjbC5wcm9wKSkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKVxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgaW4gYHBhY2thZ2UuanNvbmAuIEl0IHdpbGwgYmUgc2F2ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGBwbHVnaW4ucG9zdGNzc1BsdWdpbmAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBpbml0aWFsaXplciBXaWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgcmV0dXJuIHtAbGluayBwbHVnaW5GdW5jdGlvbn1cbiAqXG4gKiBAcmV0dXJuIHtQbHVnaW59IFBvc3RDU1MgcGx1Z2luLlxuICovXG5wb3N0Y3NzLnBsdWdpbiA9IGZ1bmN0aW9uIHBsdWdpbiAobmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgZnVuY3Rpb24gY3JlYXRvciAoLi4uYXJncykge1xuICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpXG4gICAgdHJhbnNmb3JtZXIucG9zdGNzc1BsdWdpbiA9IG5hbWVcbiAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzVmVyc2lvbiA9IChuZXcgUHJvY2Vzc29yKCkpLnZlcnNpb25cbiAgICByZXR1cm4gdHJhbnNmb3JtZXJcbiAgfVxuXG4gIGxldCBjYWNoZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRvciwgJ3Bvc3Rjc3MnLCB7XG4gICAgZ2V0ICgpIHtcbiAgICAgIGlmICghY2FjaGUpIGNhY2hlID0gY3JlYXRvcigpXG4gICAgICByZXR1cm4gY2FjaGVcbiAgICB9XG4gIH0pXG5cbiAgY3JlYXRvci5wcm9jZXNzID0gZnVuY3Rpb24gKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpIHtcbiAgICByZXR1cm4gcG9zdGNzcyhbY3JlYXRvcihwbHVnaW5PcHRzKV0pLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cylcbiAgfVxuXG4gIHJldHVybiBjcmVhdG9yXG59XG5cbi8qKlxuICogRGVmYXVsdCBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbm9kZSB0cmVlIGludG8gYSBDU1Mgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGNzcyBhbmQgcmV0dXJucyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZSxcbiAqIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgQ1NTIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdG9TdHJpbmcoKSBtZXRob2QsIGxpa2UgYSBCdWZmZXJcbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNpbXBsZSBDU1MgY29uY2F0ZW5hdGlvbiB3aXRoIHNvdXJjZSBtYXAgc3VwcG9ydFxuICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogZmlsZTEgfSlcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pXG4gKiByb290MS5hcHBlbmQocm9vdDIpLnRvUmVzdWx0KCkuY3NzXG4gKlxuICogQGZ1bmN0aW9uXG4gKi9cbnBvc3Rjc3MucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIENvbnRhaW5zIHRoZSB7QGxpbmsgdmVuZG9yfSBtb2R1bGUuXG4gKlxuICogQHR5cGUge3ZlbmRvcn1cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy52ZW5kb3IudW5wcmVmaXhlZCgnLW1vei10YWInKSAvLz0+IFsndGFiJ11cbiAqL1xucG9zdGNzcy52ZW5kb3IgPSB2ZW5kb3JcblxuLyoqXG4gKiBDb250YWlucyB0aGUge0BsaW5rIGxpc3R9IG1vZHVsZS5cbiAqXG4gKiBAbWVtYmVyIHtsaXN0fVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3RcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBDb21tZW50fSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBOZXcgY29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBBdFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IGF0LXJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmF0UnVsZSh7IG5hbWU6ICdjaGFyc2V0JyB9KS50b1N0cmluZygpIC8vPT4gXCJAY2hhcnNldFwiXG4gKi9cbnBvc3Rjc3MuYXRSdWxlID0gZGVmYXVsdHMgPT4gbmV3IEF0UnVsZShkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7RGVjbGFyYXRpb259IG5ldyBkZWNsYXJhdGlvbiBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAncmVkJyB9KS50b1N0cmluZygpIC8vPT4gXCJjb2xvcjogcmVkXCJcbiAqL1xucG9zdGNzcy5kZWNsID0gZGVmYXVsdHMgPT4gbmV3IERlY2xhcmF0aW9uKGRlZmF1bHRzKVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge1J1bGV9IG5ldyBydWxlIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHtcXG59XCJcbiAqL1xucG9zdGNzcy5ydWxlID0gZGVmYXVsdHMgPT4gbmV3IFJ1bGUoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7Um9vdH0gbmV3IHJvb3Qgbm9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5yb290KHsgYWZ0ZXI6ICdcXG4nIH0pLnRvU3RyaW5nKCkgLy89PiBcIlxcblwiXG4gKi9cbnBvc3Rjc3Mucm9vdCA9IGRlZmF1bHRzID0+IG5ldyBSb290KGRlZmF1bHRzKVxuXG5leHBvcnQgZGVmYXVsdCBwb3N0Y3NzXG4iXSwiZmlsZSI6InBvc3Rjc3MuanMifQ==\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\n\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  }\n}\n\nvar XmlHttpRequestApi;\n\nif (hasXMLHttpRequest) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\n\nvar ActiveXObjectApi;\n\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\n\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\n\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n};\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  fetchApi(url, defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions)).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n\n    x.open(payload ? 'POST' : 'GET', url, 1);\n\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n\n    x.withCredentials = !!options.withCredentials;\n\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\n\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n\n  callback = callback || function () {};\n\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n\n  if (hasXMLHttpRequest || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n};\n\nexport default request;","var reactEvents = [\"onAbort\", \"onAnimationCancel\", \"onAnimationEnd\", \"onAnimationIteration\", \"onAuxClick\", \"onBlur\",\n    \"onChange\", \"onClick\", \"onClose\", \"onContextMenu\", \"onDoubleClick\", \"onError\", \"onFocus\", \"onGotPointerCapture\",\n    \"onInput\", \"onKeyDown\", \"onKeyPress\", \"onKeyUp\", \"onLoad\", \"onLoadEnd\", \"onLoadStart\", \"onLostPointerCapture\",\n    \"onMouseDown\", \"onMouseMove\", \"onMouseOut\", \"onMouseOver\", \"onMouseUp\", \"onPointerCancel\", \"onPointerDown\",\n    \"onPointerEnter\", \"onPointerLeave\", \"onPointerMove\", \"onPointerOut\", \"onPointerOver\", \"onPointerUp\", \"onReset\",\n    \"onResize\", \"onScroll\", \"onSelect\", \"onSelectionChange\", \"onSelectStart\", \"onSubmit\", \"onTouchCancel\",\n    \"onTouchMove\", \"onTouchStart\", \"onTouchEnd\",\"onTransitionCancel\", \"onTransitionEnd\", \"onDrag\", \"onDragEnd\",\n    \"onDragEnter\", \"onDragExit\", \"onDragLeave\", \"onDragOver\", \"onDragStart\", \"onDrop\", \"onFocusOut\"];\n\nvar divergentNativeEvents = {\n    onDoubleClick: 'dblclick'\n};\n\nvar mimickedReactEvents = {\n    onInput: 'onChange',\n    onFocusOut: 'onBlur',\n    onSelectionChange: 'onSelect'\n};\n\nmodule.exports = function retargetEvents(shadowRoot) {\n    var removeEventListeners = [];\n\n    reactEvents.forEach(function (reactEventName) {\n\n        var nativeEventName = getNativeEventName(reactEventName);\n\n        function retargetEvent(event) {\n\n            var path = event.path || (event.composedPath && event.composedPath()) || composedPath(event.target);\n\n            for (var i = 0; i < path.length; i++) {\n\n                var el = path[i];\n                var props = null;\n                var reactComponent = findReactComponent(el);\n                var eventHandlers = findReactEventHandlers(el);\n\n                if (!eventHandlers) {\n                    props = findReactProps(reactComponent);\n                } else {\n                    props = eventHandlers;\n                }\n\n                if (reactComponent && props) {\n                    dispatchEvent(event, reactEventName, props);\n                }\n\n                if (reactComponent && props && mimickedReactEvents[reactEventName]) {\n                    dispatchEvent(event, mimickedReactEvents[reactEventName], props);\n                }\n\n                if (event.cancelBubble) {\n                    break;\n                }\n\n                if (el === shadowRoot) {\n                    break;\n                }\n            }\n        }\n\n        shadowRoot.addEventListener(nativeEventName, retargetEvent, false);\n\n        removeEventListeners.push(function () { shadowRoot.removeEventListener(nativeEventName, retargetEvent, false); })\n    });\n\n    return function () {\n\n      removeEventListeners.forEach(function (removeEventListener) {\n\n        removeEventListener();\n      });\n    };\n};\n\nfunction findReactEventHandlers(item) {\n    return findReactProperty(item, '__reactEventHandlers');\n}\n\nfunction findReactComponent(item) {\n    return findReactProperty(item, '_reactInternal');\n}\n\nfunction findReactProperty(item, propertyPrefix) {\n    for (var key in item) {\n        if (item.hasOwnProperty(key) && key.indexOf(propertyPrefix) !== -1) {\n            return item[key];\n        }\n    }\n}\n\nfunction findReactProps(component) {\n    if (!component) return undefined;\n    if (component.memoizedProps) return component.memoizedProps; // React 16 Fiber\n    if (component._currentElement && component._currentElement.props) return component._currentElement.props; // React <=15\n\n}\n\nfunction dispatchEvent(event, eventType, componentProps) {\n    event.persist = function() {\n        event.isPersistent = function(){ return true};\n    };\n\n    if (componentProps[eventType]) {\n        componentProps[eventType](event);\n    }\n}\n\nfunction getNativeEventName(reactEventName) {\n    if (divergentNativeEvents[reactEventName]) {\n        return divergentNativeEvents[reactEventName];\n    }\n    return reactEventName.replace(/^on/, '').toLowerCase();\n}\n\nfunction composedPath(el) {\n  var path = [];\n  while (el) {\n    path.push(el);\n    if (el.tagName === 'HTML') {\n      path.push(document);\n      path.push(window);\n      return path;\n    }\n    el = el.parentElement;\n  }\n}\n","import React from 'react';\nimport Selector from 'components/Selector';\nimport { useTranslation } from 'react-i18next';\nimport { isIE11 } from 'helpers/device';\n\nconst DimensionsInput = ({\n  yOffset,\n  height,\n  xOffset,\n  width,\n  unit,\n  autoTrim,\n  supportedUnits,\n  autoTrimOptions,\n  onDimensionChange,\n  onUnitChange,\n  autoTrimActive,\n  setAutoTrimActive,\n  onAutoTrimChange,\n}) => {\n  // Resizes number input boxes so that units of measurement can be shown next to them as if they are also in the same box\n  const resizeInput = (input) => {\n    let maxLength = 5;\n    let length = input.toString().length;\n    let decimalSize = 0.3;\n    if (isIE11) {\n      const IE_ADJUSTMENT = 1.25;\n      length *= IE_ADJUSTMENT;\n      maxLength *= IE_ADJUSTMENT;\n      decimalSize *= IE_ADJUSTMENT;\n    }\n    if (input.toString().includes('.')) {\n      if (length > maxLength) {\n        return maxLength + decimalSize;\n      }\n    }\n    if (length > maxLength) {\n      return maxLength;\n    }\n    return length;\n  };\n\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"crop-dimensions\">\n      <div className=\"crop-dimensions-input-container\">\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">W</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"width\"\n              data-testid=\"width-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: `${resizeInput(width)}ch` }}\n              onChange={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={width}\n            />\n            <span className=\"dimension-input-unit\">{width > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">H</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"height\"\n              data-testid=\"height-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: `${resizeInput(height)}ch` }}\n              onChange={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={height}\n            />\n            <span className=\"dimension-input-unit\">{height > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">X</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"xOffset\"\n              data-testid=\"xOffset-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: `${resizeInput(xOffset)}ch` }}\n              onChange={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={xOffset}\n            />\n            <span className=\"dimension-input-unit\">{xOffset > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">Y</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"yOffset\"\n              data-testid=\"yOffset-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: `${resizeInput(yOffset)}ch` }}\n              onChange={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={(e) => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={yOffset}\n            />\n            <span className=\"dimension-input-unit\">{yOffset > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <span className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.unitOfMeasurement')}</span>\n        </div>\n        <div className=\"custom-select unit-selector\">\n          <Selector items={Object.keys(supportedUnits)} selectedItem={unit} onItemSelected={onUnitChange} />\n        </div>\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <span className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.autoTrim')}</span>\n        </div>\n        <div className=\"custom-select auto-trim-selector\">\n          <Selector\n            items={autoTrimOptions}\n            selectedItem={autoTrim && autoTrimActive ? autoTrim : ''}\n            onItemSelected={onAutoTrimChange}\n            placeHolder={autoTrim || autoTrimOptions[0]}\n            selectedItemStyle={{ color: autoTrimActive ? 'var(--text-color)' : 'var(--gray-6)' }}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DimensionsInput;\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport DimensionsInput from './DimensionsInput';\nimport Dropdown from 'components/Dropdown';\nimport PageNumberInput from 'components/PageReplacementModal/PageNumberInput';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport pageNumberPlaceholder from 'constants/pageNumberPlaceholder';\nimport DataElements from 'constants/dataElement';\n\nimport './DocumentCropPopup.scss';\n\nconst DocumentCropPopup = ({\n  cropAnnotation,\n  cropMode,\n  onCropModeChange,\n  closeDocumentCropPopup,\n  applyCrop,\n  isCropping,\n  getPageHeight,\n  getPageWidth,\n  isPageRotated,\n  redrawCropAnnotations,\n  isInDesktopOnlyMode,\n  isMobile,\n  getPageCount,\n  getCurrentPage,\n  selectedPages,\n  onSelectedPagesChange,\n  shouldShowApplyCropWarning,\n  presetCropDimensions,\n}) => {\n  const { t } = useTranslation();\n\n  const className = classNames({\n    Popup: true,\n    DocumentCropPopup: true,\n    mobile: isMobile,\n  });\n\n  const loadedDocumentPageCount = getPageCount();\n\n  const [pages, setPages] = useState('');\n\n  const handlePageNumbersChanged = (pageNumbers) => {\n    if (pageNumbers.length > 0) {\n      setPages(pageNumbers);\n    }\n  };\n\n  const handlePageNumberError = (pageNumber) => {\n    if (pageNumber) {\n      setPageNumberError(`${t('message.errorPageNumber')} ${loadedDocumentPageCount}`);\n    }\n  };\n\n  useEffect(() => {\n    const timeOutWhileTyping = setTimeout(() => {\n      onSelectedPagesChange(pages);\n      if (pages) {\n        setPageNumberError(null);\n      }\n    }, 2000);\n    return () => clearTimeout(timeOutWhileTyping);\n  }, [pages]);\n\n  const cropNames = {\n    'ALL_PAGES': t('cropPopUp.allPages'),\n    'SINGLE_PAGE': t('cropPopUp.singlePage'),\n    'MULTI_PAGE': t('cropPopUp.multiPage'),\n  };\n\n  const supportedUnits = {\n    'Inches (in)': '\"',\n    'Centimeters (cm)': 'cm',\n    'Millimeters (mm)': 'mm',\n  };\n\n  const unitConversions = {\n    '\"': 1,\n    'cm': 2.54,\n    'mm': 25.4,\n    'pt': 72,\n  };\n\n  // set default to whichever unit is listed first in unitConversions\n  const [unit, setUnit] = useState(Object.getOwnPropertyNames(supportedUnits)[0]);\n\n  const [autoTrimActive, setAutoTrimActive] = useState(false);\n\n  // dimensions used to place auto trim crop annotations.\n  // default values are using inches\n  const autoTrimDimensions = presetCropDimensions;\n\n  const [autoTrim, setAutoTrim] = useState(null);\n\n  const [isCropDimensionsContainerActive, setCropDimensionsContainerActive] = useState(false);\n\n  const toggleCropDimensions = () => {\n    if (isCropping) {\n      setCropDimensionsContainerActive(!isCropDimensionsContainerActive);\n    }\n  };\n\n  const convertUnitsToPt = (val) => {\n    const unitToConvertTo = unitConversions[supportedUnits[unit]];\n    const pt = unitConversions['pt'];\n    return (val / unitToConvertTo) * pt;\n  };\n\n  const convertPtToUnits = (val, unitToConvertTo) => {\n    val /= unitConversions['pt'];\n    return val * unitConversions[supportedUnits[unitToConvertTo]];\n  };\n\n  const truncateInput = (input) => {\n    const INPUT_MAX_LENGTH = 5;\n    if (input) {\n      input = input.toString();\n\n      // if there is a decimal, allow an additional char to keep amount of other chars at INPUT_MAX_LENGTH\n      let specialChars = 0;\n      if (input.includes('.')) {\n        specialChars++;\n      }\n      if (input.length > INPUT_MAX_LENGTH + specialChars) {\n        input = input.slice(0, INPUT_MAX_LENGTH + specialChars);\n      }\n    }\n    return input;\n  };\n\n  const validateInput = (input, dimension) => {\n    if (input < 0) {\n      return 0;\n    }\n\n    const pageNumber = cropAnnotation ? cropAnnotation.getPageNumber() : getCurrentPage();\n\n    if (dimension) {\n      switch (dimension) {\n        case 'xOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getWidth(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getWidth(), unit));\n          }\n          break;\n        case 'width':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getX(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getX(), unit));\n          }\n          break;\n        case 'yOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getHeight(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getHeight(), unit));\n          }\n          break;\n        case 'height':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getY(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getY(), unit));\n          }\n          break;\n      }\n    }\n\n    input = Math.max(Number(input), 0);\n\n    return input;\n  };\n\n  const [yOffset, setYOffset] = useState();\n  const [height, setHeight] = useState();\n  const [xOffset, setXOffset] = useState();\n  const [width, setWidth] = useState();\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      // when user changes the input units or adjusts the crop annotation using the mouse, the input fields need to be updated\n      onUnitChange(unit);\n      const onCropAnnotationChanged = () => {\n        setYOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getY(), unit))));\n        setHeight(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit))));\n        setXOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getX(), unit))));\n        setWidth(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit))));\n\n        setAutoTrimActive(false);\n      };\n      core.addEventListener('annotationChanged', onCropAnnotationChanged);\n      return () => {\n        core.removeEventListener('annotationChanged', onCropAnnotationChanged);\n      };\n    }\n  }, [unit, cropAnnotation]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  }, [autoTrimActive]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      const onPagesUpdated = () => {\n        setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n        setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n        setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n        setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n      };\n      core.addEventListener('pagesUpdated', onPagesUpdated);\n\n      return () => {\n        core.removeEventListener('pagesUpdated', onPagesUpdated);\n      };\n    }\n  }, []);\n\n  const onDimensionChange = (input, position) => {\n    if (!input) {\n      input = 0;\n    }\n\n    input = validateInput(input, position);\n\n    switch (position) {\n      case 'yOffset':\n        cropAnnotation.setY(convertUnitsToPt(input));\n        setYOffset(truncateInput(input));\n        break;\n      case 'height':\n        cropAnnotation.setHeight(convertUnitsToPt(input));\n        setHeight(truncateInput(input));\n        break;\n      case 'xOffset':\n        cropAnnotation.setX(convertUnitsToPt(input));\n        setXOffset(truncateInput(input));\n        break;\n      case 'width':\n        cropAnnotation.setWidth(convertUnitsToPt(input));\n        setWidth(truncateInput(input));\n        break;\n    }\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  };\n\n  const onUnitChange = (unit) => {\n    setUnit(unit);\n    setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n    setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n    setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n    setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n  };\n\n  const onAutoTrimChange = (autoTrim) => {\n    if (autoTrim) {\n      setAutoTrim(autoTrim);\n      setAutoTrimActive(true);\n\n      const y = autoTrimDimensions[autoTrim]['yOffset'] * unitConversions[supportedUnits[unit]];\n      const h = Math.max(0, autoTrimDimensions[autoTrim]['height'] * unitConversions[supportedUnits[unit]]);\n      const x = autoTrimDimensions[autoTrim]['xOffset'] * unitConversions[supportedUnits[unit]];\n      const w = Math.max(0, autoTrimDimensions[autoTrim]['width'] * unitConversions[supportedUnits[unit]]);\n\n      cropAnnotation.setY(convertUnitsToPt(y));\n      setYOffset(truncateInput(y));\n      cropAnnotation.setX(convertUnitsToPt(x));\n      setXOffset(truncateInput(x));\n      cropAnnotation.setHeight(convertUnitsToPt(h));\n      setHeight(truncateInput(h));\n      cropAnnotation.setWidth(convertUnitsToPt(w));\n      setWidth(truncateInput(w));\n\n      if (cropAnnotation) {\n        redrawCropAnnotations(cropAnnotation.getRect());\n      }\n    } else {\n      // if no auto-trim is chosen or if auto-trim gets disabled by adjusting the crop dimensions, reset it\n      setAutoTrim(undefined);\n    }\n  };\n\n  const handleButtonPressed = (button) => {\n    switch (button) {\n      case 'apply':\n        shouldShowApplyCropWarning ? openCropConfirmationWarning() : applyCrop();\n        break;\n      case 'cancel':\n        isCropping ? openCropCancellationWarning() : closeDocumentCropPopup();\n        break;\n    }\n  };\n\n  const dispatch = useDispatch();\n\n  const openCropConfirmationWarning = () => {\n    const title = t('cropPopUp.cropModal.applyTitle');\n    const message = t('cropPopUp.cropModal.applyMessage');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        applyCrop();\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  const openCropCancellationWarning = () => {\n    const title = t('cropPopUp.cropModal.cancelTitle');\n    const message = t('cropPopUp.cropModal.cancelMessage');\n    const cancellationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        closeDocumentCropPopup();\n      },\n    };\n    dispatch(actions.showWarningMessage(cancellationWarning));\n  };\n\n  const [pageNumberError, setPageNumberError] = useState('');\n\n  if (isMobile && !isInDesktopOnlyMode) {\n    return (\n      <div className={className} data-element={DataElements.DOCUMENT_CROP_POPUP}>\n        <div className=\"document-crop-mobile-section\">\n          <div className=\"document-crop-mobile-container\">\n            <div className=\"custom-select document-crop-selector\">\n              <Dropdown\n                items={Object.values(cropNames)}\n                onClickItem={(e) => onCropModeChange(Object.keys(cropNames).find((key) => cropNames[key] === e))}\n                currentSelectionKey={cropNames[cropMode]}\n              />\n              {cropMode === 'MULTI_PAGE' && (\n                <div className=\"document-crop-page-input-container\">\n                  <PageNumberInput\n                    data-element=\"multiPageCropPageNumberInput\"\n                    selectedPageNumbers={selectedPages}\n                    pageCount={loadedDocumentPageCount}\n                    onSelectedPageNumbersChange={handlePageNumbersChanged}\n                    onBlurHandler={null}\n                    placeHolder={pageNumberPlaceholder}\n                    onError={handlePageNumberError}\n                  />\n                </div>\n              )}\n              {pageNumberError && <div className=\"page-number-error\">{pageNumberError}</div>}\n            </div>\n            <button\n              className=\"save-button\"\n              data-element=\"cropApplyButton\"\n              onClick={() => handleButtonPressed('apply')}\n              disabled={!isCropping}\n            >\n              {t('action.apply')}\n            </button>\n          </div>\n          <button\n            className=\"cancel-button\"\n            data-element=\"cropCancelButton\"\n            onClick={() => handleButtonPressed('cancel')}\n          >\n            <Icon glyph=\"icon-close\" />\n          </button>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <div className={className} data-element={DataElements.DOCUMENT_CROP_POPUP}>\n      <div className=\"document-crop-section\">\n        <span className=\"menu-title\">{t('cropPopUp.title')}</span>\n        <Choice\n          label={t('cropPopUp.allPages')}\n          name=\"All\"\n          data-element=\"allPagesCropRadioButton\"\n          onChange={() => onCropModeChange('ALL_PAGES')}\n          checked={cropMode === 'ALL_PAGES'}\n          radio\n        />\n        <Choice\n          label={t('cropPopUp.singlePage')}\n          name=\"SINGLE_PAGE\"\n          data-element=\"singlePageCropRadioButton\"\n          onChange={() => onCropModeChange('SINGLE_PAGE')}\n          checked={cropMode === 'SINGLE_PAGE'}\n          radio\n        />\n        <Choice\n          label={t('cropPopUp.multiPage')}\n          name=\"MULTI_PAGE\"\n          data-element=\"multiPageCropRadioButton\"\n          onChange={() => onCropModeChange('MULTI_PAGE')}\n          checked={cropMode === 'MULTI_PAGE'}\n          radio\n        />\n        {cropMode === 'MULTI_PAGE' && (\n          <div className=\"document-crop-page-input-container\">\n            <PageNumberInput\n              data-element=\"multiPageCropPageNumberInput\"\n              selectedPageNumbers={selectedPages}\n              pageCount={loadedDocumentPageCount}\n              onSelectedPageNumbersChange={handlePageNumbersChanged}\n              onBlurHandler={null}\n              placeHolder={pageNumberPlaceholder}\n              onError={handlePageNumberError}\n            />\n          </div>\n        )}\n        {pageNumberError && <div className=\"page-number-error\">{pageNumberError}</div>}\n      </div>\n      <div className={isCropping && cropAnnotation ? 'crop-active' : 'crop-inactive'}>\n        <div className=\"divider\" />\n        <div className=\"document-crop-section\">\n          <div\n            className=\"collapsible-menu\"\n            style={{ pointerEvents: isCropping ? 'all' : 'none' }}\n            onClick={toggleCropDimensions}\n            onTouchStart={toggleCropDimensions}\n          >\n            <div className=\"menu-title\">{t('cropPopUp.cropDimensions')}</div>\n            <Icon\n              data-testid=\"collapsible-menu-icon\"\n              className={isCropping ? 'crop-active' : 'crop-inactive'}\n              glyph={`icon-chevron-${isCropDimensionsContainerActive && cropAnnotation ? 'up' : 'down'}`}\n            />\n          </div>\n          {isCropDimensionsContainerActive && cropAnnotation && (\n            <DimensionsInput\n              yOffset={yOffset}\n              height={height}\n              xOffset={xOffset}\n              width={width}\n              unit={unit}\n              autoTrim={autoTrim}\n              supportedUnits={supportedUnits}\n              autoTrimOptions={Object.keys(autoTrimDimensions)}\n              onDimensionChange={onDimensionChange}\n              onUnitChange={onUnitChange}\n              autoTrimActive={autoTrimActive}\n              setAutoTrimActive={setAutoTrimActive}\n              onAutoTrimChange={onAutoTrimChange}\n            />\n          )}\n        </div>\n        <div className=\"divider\" />\n      </div>\n      <div className=\"buttons\">\n        <button className=\"cancel-button\" data-element=\"cropCancelButton\" onClick={() => handleButtonPressed('cancel')}>\n          {t('action.cancel')}\n        </button>\n        <button\n          className=\"save-button\"\n          data-element=\"cropApplyButton\"\n          onClick={() => handleButtonPressed('apply')}\n          disabled={!isCropping || pageNumberError}\n        >\n          {t('action.apply')}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default DocumentCropPopup;\n","import useOnCropAnnotationChangedOrSelected from './useOnCropAnnotationChangedOrSelected';\n\nexport default useOnCropAnnotationChangedOrSelected;","import { useEffect, useState } from 'react';\nimport core from 'core';\n\nexport default function useOnCropAnnotationChangedOrSelected(openDocumentCropPopup) {\n  const [cropAnnotation, setCropAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n      if (action === 'delete' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'selected' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return cropAnnotation;\n}\n","import React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DocumentCropPopup from './DocumentCropPopup';\nimport './DocumentCropPopup.scss';\nimport Draggable from 'react-draggable';\nimport useOnCropAnnotationChangedOrSelected from '../../hooks/useOnCropAnnotationChangedOrSelected';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\n\nfunction DocumentCropPopupContainer() {\n  const cropCreateTool = core.getTool(window.Core.Tools.ToolNames['CROP']);\n  const [isOpen, isInDesktopOnlyMode, shouldShowApplyCropWarning, presetCropDimensions] = useSelector((state) => [\n    selectors.getActiveToolName(state) === window.Core.Tools.ToolNames['CROP'] &&\n      selectors.isElementOpen(state, DataElements.DOCUMENT_CROP_POPUP),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.shouldShowApplyCropWarning(state),\n    selectors.getPresetCropDimensions(state),\n  ]);\n  const dispatch = useDispatch();\n  const [isCropping, setIsCropping] = useState(cropCreateTool.getIsCropping());\n\n  const elementsToClose = ['leftPanel', 'searchPanel', 'notesPanel', 'redactionPanel', 'textEditingPanel'];\n\n  const openDocumentCropPopup = () => {\n    dispatch(actions.openElement(DataElements.DOCUMENT_CROP_POPUP));\n    setSelectedPages(cropCreateTool.getPagesToCrop());\n    // eslint-disable-next-line no-undef\n    dispatch(actions.closeElements(elementsToClose));\n    setIsCropping(cropCreateTool.getIsCropping());\n  };\n\n  useEffect(() => {\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.CropCreateTool) { // eslint-disable-line no-undef\n        openDocumentCropPopup();\n      } else if (oldTool instanceof Core.Tools.CropCreateTool) { // eslint-disable-line no-undef\n        setIsCropping(cropCreateTool.getIsCropping());\n        reenableHeader();\n      }\n    };\n\n    const handleCropModeChange = (newMode) => {\n      setCropMode(newMode);\n    };\n\n    cropCreateTool.addEventListener('cropModeChanged', handleCropModeChange);\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n\n    return () => {\n      cropCreateTool.removeEventListener('cropModeChanged', handleCropModeChange);\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  });\n\n  const disableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = 'none';\n      header.style.opacity = '0.5';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = 'none';\n      toolsHeader.style.opacity = '0.5';\n    }\n  };\n\n  const reenableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = '';\n      header.style.opacity = '1';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = '';\n      toolsHeader.style.opacity = '1';\n    }\n  };\n\n  const cropAnnotation = useOnCropAnnotationChangedOrSelected(openDocumentCropPopup);\n\n  // re-enable other tools and panels while not cropping\n  useEffect(() => {\n    if (!isCropping) {\n      reenableHeader();\n    } else {\n      disableHeader();\n    }\n  }, [isCropping]);\n\n  const [cropMode, setCropMode] = useState(null);\n\n  useEffect(() => {\n    cropCreateTool.setCropMode('ALL_PAGES');\n    setCropMode('ALL_PAGES');\n  }, []);\n\n  const onCropModeChange = (cropName) => {\n    cropCreateTool.setCropMode(cropName);\n    setCropMode(cropName);\n  };\n\n  const [selectedPages, setSelectedPages] = useState(cropCreateTool.getPagesToCrop());\n\n  const onSelectedPagesChange = (pages) => {\n    if (pages.length) {\n      setSelectedPages(pages);\n      cropCreateTool.setPagesToCrop(pages);\n      if (cropCreateTool.getIsCropping()) {\n        if (cropMode === 'MULTI_PAGE') {\n          cropCreateTool.multiSelectAnnotations(pages);\n        }\n      }\n    }\n  };\n\n  const [documentContainerWidth, documentContainerHeight] = useSelector((state) => [\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContainerHeight(state),\n  ]);\n\n  const cropPopupRef = useRef();\n\n  const popupWidth = cropPopupRef.current?.getBoundingClientRect().width || 0;\n  const popupHeight = cropPopupRef.current?.getBoundingClientRect().height || 0;\n  const headerHeight = getRootNode().querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = getRootNode().querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n  const documentViewer = core.getDocumentViewer(1);\n  // eslint-disable-next-line no-undef\n  const xOffset = documentViewer.getViewerElement()?.getBoundingClientRect().right || 0;\n\n  const cropPopupOffset = () => {\n    const offset = {\n      x: xOffset + 35,\n      y: yOffset + 10,\n    };\n    if (cropAnnotation && cropPopupRef?.current) {\n      offset.x = Math.min(offset.x, documentContainerWidth - popupWidth);\n    }\n    return offset;\n  };\n\n  const cropPopupBounds = () => {\n    const bounds = {\n      top: 0,\n      bottom: documentContainerHeight - popupHeight,\n      left: 0 - cropPopupOffset()['x'],\n      right: documentContainerWidth - cropPopupOffset()['x'] - popupWidth,\n    };\n    return bounds;\n  };\n\n  const closeAndReset = () => {\n    cropCreateTool.reset();\n    if (cropMode === 'MULTI_PAGE') {\n      // eslint-disable-next-line no-undef\n      setPagesToCrop([]);\n      cropCreateTool.setPagesToCrop([]);\n    }\n    dispatch(actions.closeElement(DataElements.DOCUMENT_CROP_POPUP));\n    reenableHeader();\n    core.setToolMode(window.Core.Tools.ToolNames.CROP);\n  };\n\n  const closeDocumentCropPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  // disable/enable the 'apply' button when cropping\n  useEffect(() => {\n    setIsCropping(cropCreateTool.getIsCropping());\n  }, [cropAnnotation]);\n\n  const applyCrop = () => {\n    cropCreateTool.applyCrop();\n    cropCreateTool.reset();\n    reenableHeader();\n  };\n\n  const getPageHeight = useCallback((pageNumber) => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageWidth(pageNumber);\n    }\n    return core.getPageHeight(pageNumber);\n  }, []);\n\n  const getPageWidth = useCallback((pageNumber) => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageHeight(pageNumber);\n    }\n    return core.getPageWidth(pageNumber);\n  }, []);\n\n  const isPageRotated = useCallback((pageNumber) => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getDocument().getPageRotation(pageNumber) % 180 !== 0;\n  });\n\n  const getPageCount = useCallback(() => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getPageCount();\n  });\n\n  const getCurrentPage = useCallback(() => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getCurrentPage();\n  });\n\n  const redrawCropAnnotations = useCallback((rect) => {\n    const cropAnnotations = core\n      .getAnnotationManager()\n      .getAnnotationsList()\n      .filter((annot) => {\n        return annot.ToolName === window.Core.Tools.ToolNames['CROP'];\n      });\n    cropAnnotations.forEach((annot) => {\n      annot.setRect(rect);\n      core.getAnnotationManager().drawAnnotationsFromList([annot]);\n    });\n  }, []);\n\n  const props = {\n    cropAnnotation,\n    cropMode,\n    onCropModeChange,\n    closeDocumentCropPopup,\n    applyCrop,\n    isCropping,\n    getPageHeight,\n    getPageWidth,\n    isPageRotated,\n    redrawCropAnnotations,\n    isInDesktopOnlyMode,\n    getPageCount,\n    getCurrentPage,\n    selectedPages,\n    onSelectedPagesChange,\n    shouldShowApplyCropWarning,\n    presetCropDimensions,\n  };\n\n  const isMobile = isMobileSize();\n\n  if (isOpen && core.getDocument()) {\n    if (isMobile && !isInDesktopOnlyMode) {\n      // disable draggable on mobile devices\n      return (\n        <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n          <DocumentCropPopup {...props} isMobile />\n        </div>\n      );\n    }\n    return (\n      <Draggable\n        cancel={'input, button, .collapsible-menu, .ui__choice__label'}\n        positionOffset={cropPopupOffset()}\n        bounds={cropPopupBounds()}\n      >\n        <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n          <DocumentCropPopup {...props} />\n        </div>\n      </Draggable>\n    );\n  }\n  return null;\n}\n\nexport default DocumentCropPopupContainer;\n","import DocumentCropPopup from './DocumentCropPopupContainer';\n\nexport default DocumentCropPopup;","import useOnClickPrepareSoundAnnotation from './useOnClickPrepareSoundAnnotation';\n\nexport default useOnClickPrepareSoundAnnotation;","import { useEffect } from 'react';\nimport core from 'core';\n\nexport default function useOnClickPrepareSoundAnnotation() {\n  function onAnnotationSelected(annotations, action) {\n    if (action === 'selected' && annotations[0] instanceof window.Core.Annotations.SoundAnnotation) {\n      const annotationHasAudioPrepared = (annotations[0].audio.blob);\n      if (!annotationHasAudioPrepared) {\n        annotations[0].prepareAudioBlob();\n      }\n    }\n  }\n\n  useEffect(() => {\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n}","import React, { useEffect, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from '../Button';\nimport classNames from 'classnames';\nimport './AudioPlaybackPopup.scss';\n\nconst PLAY_AUDIO_SVG = 'ic_play_24px';\nconst PAUSE_AUDIO_SVG = 'ic_pause_24px';\nconst CLOSE_SVG = 'ic_close_black_24px';\n\nfunction AudioPlaybackPopup({\n  autoplay,\n  annotation,\n  handleAudioPlaybackError,\n  handleAudioInitializeError,\n  handleCloseAudioPlaybackPopup\n}) {\n  const [isPlayingAudio, setIsPlayingAudio] = useState(false);\n  const [durationValue, setDurationValue] = useState(0);\n  const [durationString, setDurationString] = useState('00:00');\n  const [currentTimeValue, setCurrentTimeValue] = useState(0);\n  const [currentTimeString, setCurrentTimeString] = useState('00:00');\n\n  const audioElementRef = useRef();\n\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    const audioContext = new AudioContext();\n    audioContext\n      .createMediaElementSource(audioElementRef.current)\n      .connect(audioContext.destination);\n\n    return () => {\n      audioContext.close();\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!annotation || !annotation.audio || !annotation.audio.blob) {\n      handleAudioInitializeError('No audio data found. Cannot play this annotation\\'s audio.');\n      return;\n    }\n\n    audioElementRef.current.src = URL.createObjectURL(annotation.audio.blob);\n\n    if (autoplay) {\n      playAudio();\n    }\n  }, [annotation]);\n\n  async function toggleAudio() {\n    let isPlaying = false;\n\n    if (isPlayingAudio) {\n      await audioElementRef.current.pause();\n    } else {\n      isPlaying = true;\n      await audioElementRef.current.play()\n        .catch((error) => {\n          isPlaying = false;\n          handleAudioPlaybackError(error);\n        });\n    }\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  async function playAudio() {\n    let isPlaying = true;\n    await audioElementRef.current.play()\n      .catch((error) => {\n        isPlaying = false;\n        handleAudioPlaybackError(error);\n      });\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  function handleLoadedAudioMetadata(e) {\n    const duration = e.target.duration;\n    const timeStampString = getTimeStampStringFromSeconds(duration);\n    setDurationValue(duration);\n    setDurationString(timeStampString);\n  }\n\n  function handleAudioTimeUpdate(e) {\n    const currentTime = e.target.currentTime;\n    const timeStampString = getTimeStampStringFromSeconds(currentTime);\n    setCurrentTimeValue(currentTime);\n    setCurrentTimeString(timeStampString);\n  }\n\n  function getTimeStampStringFromSeconds(totalSeconds) {\n    const minutes = `${parseInt(`${(totalSeconds / 60) % 60}`, 10)}`.padStart(2, '0');\n    const seconds = `${parseInt(`${totalSeconds % 60}`, 10)}`.padStart(2, '0');\n    return `${minutes}:${seconds}`;\n  }\n\n  function handleOnProgressBarClick(e) {\n    audioElementRef.current.currentTime = e.target.value;\n  }\n\n  function handleAudioFinished() {\n    setIsPlayingAudio(false);\n  }\n\n  return (\n    <div className={classNames({\n      Popup: true,\n      AudioPlaybackPopup: true\n    })}\n    >\n      <div className=\"audio-popup-draggable-header\">\n        <svg width=\"12\" height=\"2\" viewBox=\"0 0 12 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <rect width=\"12\" height=\"2\" rx=\"1\" fill=\"#CFD4DA\"/>\n        </svg>\n      </div>\n      <div className=\"audio-popup-ui\">\n        <audio\n          data-testid=\"hidden-audio-element\"\n          ref={audioElementRef}\n          style={{ display: 'none' }}\n          onLoadedMetadata={handleLoadedAudioMetadata}\n          onTimeUpdate={handleAudioTimeUpdate}\n          onEnded={handleAudioFinished}\n        />\n\n        <Button\n          onClick={toggleAudio}\n          title={(isPlayingAudio ? t('action.pauseAudio') : t('action.playAudio'))}\n          img={(isPlayingAudio ? PAUSE_AUDIO_SVG : PLAY_AUDIO_SVG)}\n        />\n\n        <span className=\"current-time\">{currentTimeString}</span>\n        <input\n          className=\"audio-playback-progress\"\n          type=\"range\"\n          step=\"any\"\n          max={durationValue}\n          value={currentTimeValue}\n          onChange={handleOnProgressBarClick}\n        />\n        <span className=\"duration\">{durationString}</span>\n\n        <Button\n          title=\"action.close\"\n          img={CLOSE_SVG}\n          onClick={handleCloseAudioPlaybackPopup}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default AudioPlaybackPopup;","import React, { useEffect, useRef } from 'react';\nimport core from 'core';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport Draggable from 'react-draggable';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport useOnClickPrepareSoundAnnotation from 'src/hooks/useOnClickPrepareSoundAnnotation';\nimport DataElementWrapper from '../DataElementWrapper';\nimport AudioPlaybackPopup from './AudioPlaybackPopup';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nfunction AudioPlaybackPopupContainer() {\n  const [isOpen, shouldResetAudioPlaybackPosition, activeSoundAnnotation] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'audioPlaybackPopup'),\n      selectors.shouldResetAudioPlaybackPosition(state),\n      selectors.getActiveSoundAnnotation(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n  const draggableRef = useRef();\n  const isMobile = isMobileSize();\n\n  useOnClickPrepareSoundAnnotation();\n\n  useEffect(() => {\n    resetAudioPlaybackPosition();\n  }, [shouldResetAudioPlaybackPosition]);\n\n  useEffect(() => {\n    function onSoundAnnotationDeleted(annotations, action) {\n      if (action === 'delete') {\n        const shouldClosePopup = annotations.some((annotation) => {\n          return (\n            !activeSoundAnnotation ||\n            (annotation instanceof window.Core.Annotations.SoundAnnotation &&\n              annotation.Id === activeSoundAnnotation.Id)\n          );\n        });\n\n        if (shouldClosePopup) {\n          closeAudioPlaybackPopup();\n        }\n      }\n    }\n\n    core.addEventListener('annotationChanged', onSoundAnnotationDeleted);\n    return () => {\n      core.removeEventListener('annotationChanged', onSoundAnnotationDeleted);\n    };\n  }, [activeSoundAnnotation]);\n\n  function resetAudioPlaybackPosition() {\n    if (shouldResetAudioPlaybackPosition && draggableRef.current) {\n      dispatch(actions.triggerResetAudioPlaybackPosition(false));\n      draggableRef.current.state.x = 0;\n      draggableRef.current.state.y = 0;\n    }\n  }\n\n  function closeAudioPlaybackPopup() {\n    dispatch(actions.closeElement('audioPlaybackPopup'));\n  }\n\n  function handleAudioPlaybackError(error) {\n    if (error.toString().includes('no supported source')) {\n      console.error('Error playing annotation audio. The audio type is not supported in this browser.');\n    } else {\n      console.error('Error playing annotation audio.');\n    }\n  }\n\n  function handleAudioInitializeError(error) {\n    console.error(error);\n    closeAudioPlaybackPopup();\n  }\n\n  const renderAudioPlaybackPopup = () => (\n    <DataElementWrapper\n      data-element=\"audioPlaybackPopup\"\n      className={classNames({\n        Popup: true,\n        AudioPlaybackPopupContainer: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n    >\n      <AudioPlaybackPopup\n        autoplay\n        annotation={activeSoundAnnotation}\n        handleAudioPlaybackError={handleAudioPlaybackError}\n        handleAudioInitializeError={handleAudioInitializeError}\n        handleCloseAudioPlaybackPopup={closeAudioPlaybackPopup}\n      ></AudioPlaybackPopup>\n    </DataElementWrapper>\n  );\n\n  if (!isOpen) {\n    return null;\n  }\n\n  if (isMobile) {\n    return renderAudioPlaybackPopup();\n  }\n\n  return (\n    <Draggable ref={draggableRef} cancel=\".Button, .audio-playback-progress\">\n      {renderAudioPlaybackPopup()}\n    </Draggable>\n  );\n}\n\nexport default AudioPlaybackPopupContainer;","import AudioPlaybackPopup from './AudioPlaybackPopupContainer';\n\nexport default AudioPlaybackPopup;","import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\nimport './ProgressModal.scss';\n\nconst ProgressModal = () => {\n  const [isDisabled, isOpen, loadingProgress] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, DataElements.PROGRESS_MODAL),\n      selectors.isElementOpen(state, DataElements.PROGRESS_MODAL),\n      selectors.getLoadingProgress(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const progressCircle = useRef(null);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements([\n          DataElements.SIGNATURE_MODAL,\n          DataElements.PRINT_MODAL,\n          DataElements.LOADING_MODAL,\n          DataElements.ERROR_MODAL,\n          DataElements.PASSWORD_MODAL,\n        ]),\n      );\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const circle = progressCircle.current;\n\n    if (circle) {\n      const radius = circle.r.baseVal.value;\n      const circumference = radius * 2 * Math.PI;\n      const offset = circumference - loadingProgress * circumference;\n      circle.style.strokeDasharray = `${circumference} ${circumference}`;\n      circle.style.strokeDashoffset = offset;\n    }\n  }, [loadingProgress]);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Modal: true,\n        ProgressModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element={DataElements.PROGRESS_MODAL}\n    >\n      <div className=\"container\">\n        <svg className=\"progress-ring\" width=\"54\" height=\"54\">\n          <circle\n            className=\"progress-ring__fill\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n          <circle\n            ref={progressCircle}\n            className=\"progress-ring__circle\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n        </svg>\n      </div>\n    </div>\n  );\n};\n\nexport default ProgressModal;\n","import ProgressModal from './ProgressModal';\n\nexport default ProgressModal;\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport ModalWrapper from '../ModalWrapper';\nimport { escapePressListener } from 'helpers/accessibility';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\n\nimport './PasswordModal.scss';\n\nlet checkPassword = () => {};\nexport const setCheckPasswordFunction = (fn) => {\n  checkPassword = fn;\n};\n\nconst PasswordModal = () => {\n  const [isOpen, attempt, isMultiTab] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, DataElements.PASSWORD_MODAL),\n      selectors.getPasswordAttempts(state),\n      selectors.getIsMultiTab(state)\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const passwordInput = React.createRef();\n  const maxAttempts = 3;\n  const [password, setPassword] = useState('');\n  const [userCancelled, setUserCancelled] = useState(false);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElement(DataElements.PROGRESS_MODAL));\n      passwordInput.current?.focus();\n      window.addEventListener('keydown', (e) => escapePressListener(e, closeModal));\n    } else {\n      // when a user enters the correct password or calls core.closeDocument\n      // reset state in case user loads another password-protected document\n      setPassword('');\n      setUserCancelled(false);\n    }\n    return () => window.removeEventListener('keydown', escapePressListener);\n  }, [dispatch, isOpen, passwordInput]);\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n\n    checkPassword(password);\n  };\n\n  const closeModal = (event) => {\n    if (event.key === 'Escape') {\n      setUserCancelled(true);\n    } else {\n      dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n    }\n  };\n\n  const getErrorModal = (errorMessage) => {\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.error'}\n        closeButtonDataElement={'errorModalCloseButton'}\n        onCloseClick={closeModal}\n      >\n        <div className=\"modal-content error-modal-content\">\n          <p>{t(errorMessage)}</p>\n        </div>\n        <div className=\"modal-footer footer\">\n          <Button\n            className=\"confirm modal-button\"\n            dataElement=\"passwordSubmitButton\"\n            label={t('action.ok')}\n            onClick={closeModal}\n          />\n        </div>\n      </ModalWrapper>\n    );\n  };\n\n  const renderContent = () => {\n    const userExceedsMaxAttempts = attempt === maxAttempts;\n    if (userExceedsMaxAttempts) {\n      return getErrorModal('message.encryptedAttemptsExceeded');\n    }\n    if (userCancelled) {\n      return getErrorModal('message.encryptedUserCancelled');\n    }\n\n    return renderEnterPasswordContent();\n  };\n\n  const onKeyDown = (e) => {\n    if (e.which === 13) {\n      handleSubmit(e);\n    }\n  };\n\n  const renderEnterPasswordContent = () => {\n    const wrongPassword = attempt !== 0;\n\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.passwordRequired'}\n        closeButtonDataElement={'errorModalCloseButton'}\n        onCloseClick={() => {\n          setUserCancelled(true);\n        }}\n      >\n        <form onSubmit={handleSubmit}>\n          <div>{t('message.enterPassword')}</div>\n          <input\n            className={`${wrongPassword ? 'wrong' : 'correct'} text-input-modal`}\n            type=\"password\"\n            ref={passwordInput}\n            autoComplete=\"current-password\"\n            value={password}\n            onKeyDown={onKeyDown}\n            onChange={(e) => setPassword(e.target.value)}\n            aria-label={t('message.passwordRequired')}\n            placeholder={t('message.enterPasswordPlaceholder')}\n          />\n          {wrongPassword && (\n            <div className=\"incorrect-password\">\n              {t('message.incorrectPassword', {\n                remainingAttempts: maxAttempts - attempt,\n              })}\n            </div>\n          )}\n        </form>\n        <div className=\"modal-footer footer\">\n          <Button\n            className=\"confirm modal-button\"\n            dataElement=\"passwordSubmitButton\"\n            label={t('action.submit')}\n            disabled={!password}\n            onClick={handleSubmit}\n          />\n        </div>\n      </ModalWrapper>\n    );\n  };\n\n\n  let tabsPadding = 0;\n  if (isMultiTab) {\n    // Add tabsheader padding\n    tabsPadding += getRootNode().getElementsByClassName('TabsHeader')[0]?.getBoundingClientRect().bottom;\n  }\n\n  return (\n    <div\n      className={classNames({\n        Modal: true,\n        PasswordModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element={DataElements.PASSWORD_MODAL}\n      style={isMultiTab ? { height: `calc(100% - ${tabsPadding}px)` } : undefined}\n    >\n      {renderContent()}\n    </div>\n  );\n};\n\nexport default PasswordModal;\n","import PasswordModal, { setCheckPasswordFunction } from './PasswordModal';\n\nexport { setCheckPasswordFunction };\nexport default PasswordModal;","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = {};\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr = chr + charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        result += chr;\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * 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 */\nfunction 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\nmodule.exports = assignValue;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n  return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\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 */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es-x/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\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 */\nfunction 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\nmodule.exports = nativeKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FilePickerHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state == FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  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 dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state == PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(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      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // strange IE + webpack dev server bug - use .bind(global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length == 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","var Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    if (this.head) this.tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      this.head = entry.next;\n      if (this.tail === entry) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","module.exports = typeof window == 'object' && typeof Deno != 'object';\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(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) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(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) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;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.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){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 n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","/** @license React v17.0.2\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\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(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.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[: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]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(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 na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(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 B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(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 ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!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(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.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])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;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(y(91));return m({},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(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(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(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(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 ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(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 ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(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(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"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 rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),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 kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){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)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)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction 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)}function 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}m(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=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},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=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},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=m({},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=m({},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=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},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=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!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(fa){var xe;if(fa){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));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\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,Ie=Object.prototype.hasOwnProperty;\nfunction Je(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++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(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;Ze(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;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"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 jd(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}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"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 Ic:case Jc:case Kc:k=Hd;break;case Lc: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 w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,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 Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(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=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(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=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(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 tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];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(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);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,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(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 zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(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 Cg(a,b,c,d){var e=a.updateQueue;wg=!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 n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(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(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(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?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(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&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(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||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(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(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}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=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(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 Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.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 Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(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}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(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=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);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}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=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}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},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=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.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||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),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&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)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 Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;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,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,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.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(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}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(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.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(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.nextEffect=null,c.firstEffect=null,c.lastEffect=null);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 Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(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 jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=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.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(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 nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(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(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\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(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\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","/** @license React v0.20.2\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';var f,g,h,k;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}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.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\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&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:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'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","/** @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","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setInterval = require('../internals/schedulers-fix').setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTimeout = require('../internals/schedulers-fix').setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar global = require('../internals/global');\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')();\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) != '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) != '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = replacer;\n  if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n  if (!isArray(replacer)) replacer = function (key, value) {\n    if (isCallable($replacer)) value = call($replacer, this, key, value);\n    if (!isSymbol(value)) return value;\n  };\n  args[1] = replacer;\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es-x/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) == '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() == ':') {\n    if (charAt(input, 1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex == 8) return;\n    if (chr() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (chr() == ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length == 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr == ':') {\n            if (stateOverride && (\n              (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n              (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme == 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme == 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] == '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr == '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme == 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr == '/' && codePoints[pointer + 1] == '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr == '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr == EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr == '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr == '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr != '/' && chr != '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr == '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint == ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer == '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme == 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr == ':' && !seenBracket) {\n            if (buffer == '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride == HOSTNAME) return;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer == '') return INVALID_HOST;\n            if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr == '[') seenBracket = true;\n            else if (chr == ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer != '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme == 'file') {\n            if (chr == EOF) {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n            } else if (chr == '?') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n              url.fragment = '';\n              state = FRAGMENT;\n            } else {\n              if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.shortenPath();\n              }\n              state = PATH;\n              continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr == '/' || chr == '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer == '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host == 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr != '/' && chr != '\\\\') continue;\n          } else if (!stateOverride && chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            state = PATH;\n            if (chr != '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr == EOF || chr == '/' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr == '?' || chr == '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr == '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr == '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) == '[') {\n      if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username != '' || this.password != '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme == 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme == 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme == 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port == '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search == '') {\n      this.query = null;\n    } else {\n      if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash == '') {\n      this.fragment = null;\n      return;\n    }\n    if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar RangeError = global.RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","module.exports = \"<svg viewBox=\\\"0 0 14 14\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12.5008 3.36876V2.90083C12.5008 2.12643 11.8745 1.50252 11.0998 1.50252H10.174L11.0242 2.97472L12.4981 3.36876H12.5008ZM11.0269 2.97472L9.71509 0.700749C9.32909 0.0303243 8.47341 -0.199535 7.80398 0.189037L2.97494 2.97472L6.25729 0.221874L6.2006 0.189037C5.53118 -0.196799 4.6755 0.0330607 4.2895 0.700749L2.97764 2.97472L3.37174 1.50252H2.90206C2.13006 1.50252 1.50113 2.12916 1.50113 2.90083V3.82575L0.699435 4.2882C0.0300095 4.67404 -0.199431 5.53054 0.189268 6.19823L2.97494 11.0253L0.22166 7.74431L0.189268 7.80177C-0.196731 8.4722 0.0327088 9.3287 0.702134 9.71453L2.97764 11.028L1.50383 10.634V11.1019C1.50383 11.8736 2.13006 12.5002 2.90476 12.5002H3.83062L2.98034 11.028V2.97472H11.0323H11.0269ZM2.97494 11.0253L4.2868 13.2993C4.6728 13.9697 5.52848 14.1995 6.1979 13.811L11.0242 11.0253H2.97494ZM13.8126 6.19823C14.1986 5.5278 13.9692 4.67404 13.2998 4.28547L11.0242 2.97198V11.0225L7.7419 13.7754L7.79859 13.8082C8.46801 14.1941 9.32369 13.9669 9.70969 13.2965L11.0215 11.0225L10.6274 12.4947H11.0971C11.8691 12.4947 12.4981 11.8681 12.4981 11.0964V10.1715L12.0581 10.426L13.2971 9.7118C13.9665 9.32596 14.1959 8.46946 13.8099 7.79904L11.0242 2.97198L13.7775 6.25296L13.8099 6.19549L13.8126 6.19823Z\\\" fill=\\\"#0206A8\\\"></path></svg>\"","module.exports = \"<svg enable-background=\\\"new 0 0 512 512\\\" viewBox=\\\"0 0 512 512\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m147.318 43.031c0-23.728-19.305-43.031-43.034-43.031h-61.25c-23.729 0-43.034 19.303-43.034 43.031v8.156h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v19.273h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v108.714l147.318-147.322z\\\"></path><path d=\\\"m468.965 364.376h-300.435l-147.621 147.624 104.797-.069v-54.182c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.163l20.25-.013v-73.788c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.768l20.25-.013v-54.116c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.097l20.249-.013v-73.722c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.702l20.25-.013v-54.051c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.031l20.25-.013v-73.656c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.636l19.262-.013v-53.985c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v53.966l12.711-.008c23.709-.017 43.002-19.321 43.002-43.032v-61.269c0-23.728-19.305-43.031-43.035-43.031z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>715F3224-4AF6-4D83-A726-4ED332A6C28F@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-52.000000, -4.000000)\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(48.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#D75757\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-close\\\" fill=\\\"#FFFFFF\\\"><path d=\\\"M10.8133333,4.18666667 L8,7 L5.18666667,4.18666667 C5.08297506,4.08502857 4.91702494,4.08502857 4.81333333,4.18666667 L4.18666667,4.81333333 C4.08502857,4.91702494 4.08502857,5.08297506 4.18666667,5.18666667 L7,8 L4.18666667,10.8133333 C4.08502857,10.9170249 4.08502857,11.0829751 4.18666667,11.1866667 L4.81333333,11.8133333 C4.91702494,11.9149714 5.08297506,11.9149714 5.18666667,11.8133333 L8,9 L10.8133333,11.8133333 C10.9170249,11.9149714 11.0829751,11.9149714 11.1866667,11.8133333 L11.8133333,11.1866667 C11.9149714,11.0829751 11.9149714,10.9170249 11.8133333,10.8133333 L9,8 L11.8133333,5.18666667 C11.9149714,5.08297506 11.9149714,4.91702494 11.8133333,4.81333333 L11.1866667,4.18666667 C11.0829751,4.08502857 10.9170249,4.08502857 10.8133333,4.18666667 Z\\\" id=\\\"Path\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>0496DA3A-9C54-4BB7-A40B-DB678B321BD5@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(-4.000000, -4.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#519A64\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-checkmark\\\" fill=\\\"#FFFFFF\\\"><polygon id=\\\"Path\\\" points=\\\"6.52333333 9.60388889 4.29277778 7.39166667 3.33333333 8.38166667 6.52333333 11.5716667 13.1111111 4.95944444 12.1516667 4\\\"></polygon></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>931065BD-6AF9-4F89-80B2-27A9395FD293@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-28.000000, -4.000000)\\\"><g id=\\\"Icon---Signature-with-warning\\\" transform=\\\"translate(24.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#E2B719\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"warning\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"16\\\" height=\\\"16\\\"></rect><path d=\\\"M7.3,3.5 L8.7,3.5 L8.7,9 L7.3,9 L7.3,3.5 Z M7.3,10.5 L8.7,10.5 L8.7,12.5 L7.3,12.5 L7.3,10.5 Z\\\" id=\\\"Shape\\\" fill=\\\"#FFFFFF\\\" fill-rule=\\\"nonzero\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.15265 11.4646V14.5C9.15265 15.0523 9.59443 15.5 10.1394 15.5H15.073C15.618 15.5 16.0597 15.0523 16.0597 14.5V9.5C16.0597 8.94772 15.618 8.5 15.073 8.5H12.0779C12.1009 8.3367 12.1128 8.16976 12.1128 8C12.1128 6.067 10.5666 4.5 8.65929 4.5C6.75195 4.5 5.20575 6.067 5.20575 8C5.20575 9.933 6.75195 11.5 8.65929 11.5C8.8268 11.5 8.99152 11.4879 9.15265 11.4646ZM10.6327 14H14.5796V10H10.6327V14Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.75221 3.86222C1.01904 3.57034 0.5 2.8466 0.5 2C0.5 0.895431 1.38354 0 2.47345 0C3.20391 0 3.84167 0.402199 4.18289 1H16.8171C17.1583 0.402199 17.7961 0 18.5265 0C19.6165 0 20.5 0.895431 20.5 2C20.5 2.74028 20.1031 3.38663 19.5133 3.73244V16.2676C20.1031 16.6134 20.5 17.2597 20.5 18C20.5 19.1046 19.6165 20 18.5265 20C17.7961 20 17.1583 19.5978 16.8171 19H4.18289C3.84167 19.5978 3.20391 20 2.47345 20C1.38354 20 0.5 19.1046 0.5 18C0.5 17.1534 1.01904 16.4297 1.75221 16.1378V3.86222ZM4.38473 17.5C4.22972 16.8896 3.79755 16.392 3.2323 16.1532V3.84679C3.79755 3.60796 4.22972 3.11036 4.38473 2.5H16.6153C16.7938 3.2028 17.3397 3.7561 18.0332 3.93699V16.063C17.3397 16.2439 16.7938 16.7972 16.6153 17.5H4.38473Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:none;} </style><path d=\\\"M3.5,15h-1C2.2239,15,2,14.7313,2,14.4V9.6C2,9.2687,2.2239,9,2.5,9h1C3.7761,9,4,9.2687,4,9.6v4.8 C4,14.7313,3.7761,15,3.5,15z\\\"></path><path d=\\\"M8,18.5H7c-0.2761,0-0.5-0.2646-0.5-0.5909V6.0909C6.5,5.7646,6.7239,5.5,7,5.5h1c0.2761,0,0.5,0.2646,0.5,0.5909v11.8182 C8.5,18.2354,8.2761,18.5,8,18.5z\\\"></path><path d=\\\"M12.5,21h-1c-0.2761,0-0.5-0.2687-0.5-0.6V3.6C11,3.2687,11.2239,3,11.5,3h1C12.7761,3,13,3.2687,13,3.6v16.8 C13,20.7313,12.7761,21,12.5,21z\\\"></path><path d=\\\"M17.5,11h-2V6c0-0.2761,0.2239-0.5,0.5-0.5h1c0.2761,0,0.5,0.2239,0.5,0.5V11z\\\"></path><path d=\\\"M22,11h-2V9.5C20,9.2239,20.2239,9,20.5,9h1C21.7761,9,22,9.2239,22,9.5V11z\\\"></path><g><path d=\\\"M20.4292,19.4717l-4.9009-4.9009c-0.2087-0.2087-0.2087-0.5472,0-0.7559l0.6583-0.6583 c0.2087-0.2087,0.5472-0.2087,0.7559,0l4.9009,4.9009c0.2087,0.2087,0.2087,0.5472,0,0.7559l-0.6583,0.6583 C20.9764,19.6804,20.638,19.6804,20.4292,19.4717z\\\"></path><path d=\\\"M16.9425,19.4717l4.9009-4.9009c0.2087-0.2087,0.2087-0.5472,0-0.7559l-0.6583-0.6583 c-0.2087-0.2087-0.5472-0.2087-0.7559,0l-4.9009,4.9009c-0.2087,0.2087-0.2087,0.5472,0,0.7559l0.6583,0.6583 C16.3953,19.6804,16.7338,19.6804,16.9425,19.4717z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 2.92791V19.0643C7 20.1297 7.81329 20.9961 8.81334 20.9961H14.1867C15.1867 20.9961 16 20.1297 16 19.0643V2.92791C16 1.86246 15.1867 0.996094 14.1867 0.996094L8.81334 0.996094C7.81329 0.996094 7 1.86246 7 2.92791ZM14.1867 2.92791V19.0643C14.1867 19.1161 14.1721 19.1515 14.1721 19.167C14.1721 19.1734 14.174 19.177 14.1794 19.1779L8.85505 19.1888C8.84598 19.1825 8.81334 19.1415 8.81334 19.0643V17.3597L11.24 17.3598C11.3652 17.3598 11.4666 17.258 11.4666 17.1325V15.7689C11.4666 15.6434 11.3652 15.5416 11.24 15.5416L8.81334 15.5415V13.7234L12.1466 13.7234C12.2718 13.7234 12.3733 13.6217 12.3733 13.4962V12.1325C12.3733 12.007 12.2718 11.9052 12.1466 11.9052L8.81334 11.9052V10.087L11.24 10.0871C11.3652 10.0871 11.4666 9.98531 11.4666 9.85979V8.49616C11.4666 8.37064 11.3652 8.26888 11.24 8.26888L8.81334 8.26882V6.45064L12.1466 6.4507C12.2718 6.4507 12.3733 6.34895 12.3733 6.22343V4.85979C12.3733 4.73427 12.2718 4.63252 12.1466 4.63252L8.81334 4.63246V2.92791C8.81425 2.85609 8.83873 2.817 8.8206 2.81427L14.1449 2.80337C14.154 2.80973 14.1867 2.85064 14.1867 2.92791Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 18.0416C1.49324 18.1671 1.39176 18.2689 1.26657 18.2689H0.227122C0.0251827 18.2689 -0.0759488 18.5137 0.0668441 18.6569L2.23964 20.8354C2.32816 20.9242 2.47167 20.9242 2.56019 20.8354L4.73299 18.6569C4.87578 18.5137 4.77465 18.2689 4.57271 18.2689H3.53326C3.40807 18.2689 3.30659 18.1671 3.30659 18.0416L3.30659 16.678C3.30659 16.5525 3.2051 16.4507 3.07992 16.4507H1.71991C1.59473 16.4507 1.49324 16.5525 1.49324 16.678L1.49324 18.0416Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M3.30659 3.9507C3.30659 3.82518 3.40807 3.72343 3.53326 3.72343L4.57271 3.72343C4.77465 3.72343 4.87578 3.47862 4.73298 3.33545L2.56019 1.15686C2.47167 1.06811 2.32816 1.06811 2.23964 1.15686L0.0668439 3.33545C-0.075949 3.47862 0.0251829 3.72343 0.227123 3.72343L1.26657 3.72343C1.39176 3.72343 1.49324 3.82518 1.49324 3.9507L1.49324 5.31434C1.49324 5.43986 1.59472 5.54161 1.71991 5.54161L3.07992 5.54161C3.2051 5.54161 3.30659 5.43986 3.30659 5.31434L3.30659 3.9507Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 12.1325C1.49324 12.007 1.59472 11.9052 1.71991 11.9052H3.07992C3.2051 11.9052 3.30659 12.007 3.30659 12.1325V13.9507C3.30659 14.0762 3.2051 14.178 3.07992 14.178H1.71991C1.59472 14.178 1.49324 14.0762 1.49324 13.9507V12.1325Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 7.58707C1.49324 7.46155 1.59472 7.35979 1.71991 7.35979H3.07992C3.2051 7.35979 3.30659 7.46155 3.30659 7.58707V9.40525C3.30659 9.53077 3.2051 9.63252 3.07992 9.63252H1.71991C1.59472 9.63252 1.49324 9.53077 1.49324 9.40525V7.58707Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.2014 6.95828V5.27772C16.2014 4.35342 15.4451 3.59717 14.5208 3.59717H9.47917C8.55486 3.59717 7.79861 4.35342 7.79861 5.27772V6.95828H4.4375V8.63883H6.11806V18.7222C6.11806 19.6465 6.87431 20.4027 7.79861 20.4027H16.2014C17.1257 20.4027 17.8819 19.6465 17.8819 18.7222V8.63883H19.5625V6.95828H16.2014ZM9.47917 5.27772H14.5208V6.95828H9.47917V5.27772ZM7.79861 18.7222V8.63883H16.2014V18.7222H7.79861ZM12.8403 10.3194H14.5208V17.0416H12.8403V10.3194ZM9.47917 10.3194H11.1597V17.0416H9.47917V10.3194Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M7.90288 16.142C8.11772 16.142 8.29228 16.0829 8.42656 15.9647C8.56083 15.8466 8.63066 15.6895 8.63603 15.4934H9.72771C9.72502 15.7888 9.64445 16.0601 9.48601 16.3071C9.32756 16.5515 9.11003 16.7422 8.83342 16.8792C8.55949 17.0134 8.25603 17.0806 7.92302 17.0806C7.29997 17.0806 6.80852 16.8832 6.44865 16.4884C6.08879 16.0909 5.90886 15.5431 5.90886 14.8448V14.7683C5.90886 14.0969 6.08745 13.5612 6.44462 13.161C6.8018 12.7609 7.29191 12.5608 7.91496 12.5608C8.46013 12.5608 8.89653 12.7166 9.22416 13.0281C9.55449 13.3369 9.72233 13.7491 9.72771 14.2648H8.63603C8.63066 14.0392 8.56083 13.8566 8.42656 13.7169C8.29228 13.5746 8.11503 13.5034 7.89482 13.5034C7.62358 13.5034 7.41813 13.6028 7.27849 13.8015C7.14152 13.9976 7.07304 14.3171 7.07304 14.7603V14.8811C7.07304 15.3296 7.14152 15.6519 7.27849 15.8479C7.41545 16.0439 7.62358 16.142 7.90288 16.142Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M12.5881 17C12.5344 16.8953 12.4955 16.765 12.4713 16.6093C12.1893 16.9235 11.8228 17.0806 11.3716 17.0806C10.9446 17.0806 10.5901 16.957 10.3081 16.71C10.0288 16.4629 9.88916 16.1514 9.88916 15.7754C9.88916 15.3135 10.0597 14.959 10.4008 14.7119C10.7445 14.4648 11.24 14.34 11.8872 14.3373H12.423V14.0875C12.423 13.8861 12.3706 13.725 12.2659 13.6041C12.1638 13.4833 12.0013 13.4229 11.7784 13.4229C11.5824 13.4229 11.428 13.4698 11.3152 13.5638C11.2051 13.6578 11.15 13.7867 11.15 13.9506H9.98584C9.98584 13.6981 10.0637 13.4645 10.2195 13.2496C10.3752 13.0348 10.5955 12.8669 10.8801 12.7461C11.1648 12.6226 11.4844 12.5608 11.8389 12.5608C12.376 12.5608 12.8016 12.6964 13.1158 12.9677C13.4327 13.2362 13.5912 13.6149 13.5912 14.1036V15.9929C13.5939 16.4065 13.6516 16.7194 13.7644 16.9315V17H12.5881ZM11.6254 16.1903C11.7972 16.1903 11.9557 16.1527 12.1007 16.0775C12.2457 15.9996 12.3531 15.8962 12.423 15.7673V15.0181H11.9879C11.4052 15.0181 11.095 15.2195 11.0574 15.6223L11.0533 15.6908C11.0533 15.8358 11.1044 15.9553 11.2064 16.0493C11.3085 16.1433 11.4481 16.1903 11.6254 16.1903Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M13.9742 14.7885C13.9742 14.109 14.1259 13.5679 14.4294 13.165C14.7356 12.7622 15.1532 12.5608 15.6822 12.5608C16.1065 12.5608 16.457 12.7192 16.7336 13.0361V10.8125H17.9018V17H16.8504L16.794 16.5367C16.504 16.8993 16.1307 17.0806 15.6742 17.0806C15.1612 17.0806 14.749 16.8792 14.4375 16.4763C14.1286 16.0708 13.9742 15.5082 13.9742 14.7885ZM15.1384 14.873C15.1384 15.2812 15.2096 15.5941 15.3519 15.8116C15.4942 16.0292 15.701 16.1379 15.9722 16.1379C16.3321 16.1379 16.5859 15.9862 16.7336 15.6827V13.9626C16.5886 13.6592 16.3375 13.5074 15.9803 13.5074C15.419 13.5074 15.1384 13.9626 15.1384 14.873Z\\\" fill=\\\"#0A93E4\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M5.78801 14.7885C5.78801 14.109 5.93974 13.5679 6.24321 13.165C6.54936 12.7622 6.96696 12.5608 7.49602 12.5608C7.92033 12.5608 8.2708 12.7192 8.54741 13.0361V10.8125H9.71562V17H8.66423L8.60783 16.5367C8.31779 16.8993 7.9445 17.0806 7.48796 17.0806C6.97502 17.0806 6.56279 16.8792 6.25126 16.4763C5.94243 16.0708 5.78801 15.5082 5.78801 14.7885ZM6.95219 14.873C6.95219 15.2812 7.02336 15.5941 7.16569 15.8116C7.30803 16.0292 7.51481 16.1379 7.78605 16.1379C8.14592 16.1379 8.3997 15.9862 8.54741 15.6827V13.9626C8.40239 13.6592 8.15129 13.5074 7.79411 13.5074C7.23283 13.5074 6.95219 13.9626 6.95219 14.873Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M10.1067 14.7804C10.1067 14.348 10.1899 13.9626 10.3564 13.6243C10.5229 13.2859 10.762 13.024 11.0735 12.8387C11.3877 12.6534 11.7516 12.5608 12.1652 12.5608C12.7533 12.5608 13.2327 12.7407 13.6033 13.1006C13.9766 13.4604 14.1847 13.9492 14.2277 14.5669L14.2357 14.865C14.2357 15.5337 14.0491 16.0708 13.6758 16.4763C13.3025 16.8792 12.8016 17.0806 12.1732 17.0806C11.5448 17.0806 11.0426 16.8792 10.6666 16.4763C10.2933 16.0735 10.1067 15.5256 10.1067 14.8328V14.7804ZM11.2709 14.865C11.2709 15.2786 11.3488 15.5955 11.5045 15.8157C11.6603 16.0332 11.8832 16.142 12.1732 16.142C12.4552 16.142 12.6754 16.0345 12.8339 15.8197C12.9923 15.6022 13.0715 15.2557 13.0715 14.7804C13.0715 14.3749 12.9923 14.0607 12.8339 13.8378C12.6754 13.6149 12.4525 13.5034 12.1652 13.5034C11.8805 13.5034 11.6603 13.6149 11.5045 13.8378C11.3488 14.058 11.2709 14.4004 11.2709 14.865Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M16.4355 16.142C16.6503 16.142 16.8249 16.0829 16.9592 15.9647C17.0935 15.8466 17.1633 15.6895 17.1687 15.4934H18.2603C18.2576 15.7888 18.1771 16.0601 18.0186 16.3071C17.8602 16.5515 17.6427 16.7422 17.366 16.8792C17.0921 17.0134 16.7887 17.0806 16.4556 17.0806C15.8326 17.0806 15.3411 16.8832 14.9813 16.4884C14.6214 16.0909 14.4415 15.5431 14.4415 14.8448V14.7683C14.4415 14.0969 14.6201 13.5612 14.9773 13.161C15.3344 12.7609 15.8245 12.5608 16.4476 12.5608C16.9928 12.5608 17.4292 12.7166 17.7568 13.0281C18.0871 13.3369 18.255 13.7491 18.2603 14.2648H17.1687C17.1633 14.0392 17.0935 13.8566 16.9592 13.7169C16.8249 13.5746 16.6477 13.5034 16.4274 13.5034C16.1562 13.5034 15.9508 13.6028 15.8111 13.8015C15.6742 13.9976 15.6057 14.3171 15.6057 14.7603V14.8811C15.6057 15.3296 15.6742 15.6519 15.8111 15.8479C15.9481 16.0439 16.1562 16.142 16.4355 16.142Z\\\" fill=\\\"#2A5AB3\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#707C8D\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#FFB143\\\"></path><path d=\\\"M6.98039 17H5.81218V12.6414H6.98039V17ZM5.7437 11.5134C5.7437 11.3389 5.80144 11.1952 5.91691 11.0824C6.03508 10.9696 6.19487 10.9132 6.39628 10.9132C6.59501 10.9132 6.75346 10.9696 6.87163 11.0824C6.98979 11.1952 7.04887 11.3389 7.04887 11.5134C7.04887 11.6907 6.98845 11.8357 6.8676 11.9485C6.74943 12.0613 6.59233 12.1177 6.39628 12.1177C6.20024 12.1177 6.04179 12.0613 5.92094 11.9485C5.80278 11.8357 5.7437 11.6907 5.7437 11.5134Z\\\" fill=\\\"#FFB143\\\"></path><path d=\\\"M8.70483 12.6414L8.74109 13.1288C9.04993 12.7501 9.46753 12.5608 9.9939 12.5608C10.5552 12.5608 10.9406 12.7823 11.15 13.2255C11.4562 12.7823 11.8926 12.5608 12.4592 12.5608C12.9319 12.5608 13.2837 12.6991 13.5146 12.9757C13.7456 13.2496 13.8611 13.6632 13.8611 14.2164V17H12.6929V14.2205C12.6929 13.9734 12.6445 13.7935 12.5479 13.6807C12.4512 13.5652 12.2806 13.5074 12.0363 13.5074C11.6871 13.5074 11.4454 13.674 11.3112 14.007L11.3152 17H10.151V14.2245C10.151 13.972 10.1013 13.7894 10.002 13.6766C9.90259 13.5638 9.7334 13.5074 9.49438 13.5074C9.16406 13.5074 8.92505 13.6444 8.77734 13.9183V17H7.61316V12.6414H8.70483Z\\\" fill=\\\"#FFB143\\\"></path><path d=\\\"M14.2602 14.7885C14.2602 14.1198 14.4187 13.5813 14.7356 13.1731C15.0551 12.7649 15.4848 12.5608 16.0246 12.5608C16.5026 12.5608 16.8746 12.7246 17.1405 13.0522L17.1888 12.6414H18.2442V16.855C18.2442 17.2363 18.1569 17.568 17.9824 17.85C17.8105 18.132 17.5675 18.3468 17.2533 18.4945C16.939 18.6422 16.5711 18.7161 16.1495 18.7161C15.8299 18.7161 15.5184 18.6516 15.2149 18.5227C14.9115 18.3965 14.6818 18.2327 14.5261 18.0312L15.0417 17.3223C15.3317 17.6472 15.6835 17.8097 16.0971 17.8097C16.406 17.8097 16.6463 17.7264 16.8182 17.5599C16.9901 17.3961 17.076 17.1625 17.076 16.859V16.6254C16.8075 16.9288 16.4543 17.0806 16.0166 17.0806C15.4929 17.0806 15.0686 16.8765 14.7436 16.4683C14.4213 16.0574 14.2602 15.5135 14.2602 14.8368V14.7885ZM15.4244 14.873C15.4244 15.2678 15.5036 15.578 15.6621 15.8036C15.8205 16.0265 16.038 16.1379 16.3147 16.1379C16.6691 16.1379 16.9229 16.005 17.076 15.7391V13.9062C16.9202 13.6404 16.6691 13.5074 16.3227 13.5074C16.0434 13.5074 15.8232 13.6216 15.6621 13.8499C15.5036 14.0781 15.4244 14.4192 15.4244 14.873Z\\\" fill=\\\"#FFB143\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M10.5737 14.861C10.5737 15.5323 10.4206 16.0708 10.1144 16.4763C9.81096 16.8792 9.40007 17.0806 8.88176 17.0806C8.44133 17.0806 8.08549 16.9275 7.81425 16.6213V18.6758H6.65007V12.6414H7.72966L7.76994 13.0684C8.05192 12.73 8.41984 12.5608 8.8737 12.5608C9.41081 12.5608 9.82841 12.7595 10.1265 13.157C10.4246 13.5544 10.5737 14.1023 10.5737 14.8005V14.861ZM9.40947 14.7764C9.40947 14.3708 9.33696 14.058 9.19194 13.8378C9.0496 13.6176 8.84147 13.5074 8.56755 13.5074C8.20231 13.5074 7.95122 13.6471 7.81425 13.9264V15.7109C7.95659 15.9983 8.21037 16.142 8.57561 16.142C9.13151 16.142 9.40947 15.6868 9.40947 14.7764Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M10.7875 14.7885C10.7875 14.109 10.9392 13.5679 11.2427 13.165C11.5488 12.7622 11.9664 12.5608 12.4955 12.5608C12.9198 12.5608 13.2703 12.7192 13.5469 13.0361V10.8125H14.7151V17H13.6637L13.6073 16.5367C13.3173 16.8993 12.944 17.0806 12.4874 17.0806C11.9745 17.0806 11.5623 16.8792 11.2507 16.4763C10.9419 16.0708 10.7875 15.5082 10.7875 14.7885ZM11.9517 14.873C11.9517 15.2812 12.0228 15.5941 12.1652 15.8116C12.3075 16.0292 12.5143 16.1379 12.7855 16.1379C13.1454 16.1379 13.3992 15.9862 13.5469 15.6827V13.9626C13.4019 13.6592 13.1508 13.5074 12.7936 13.5074C12.2323 13.5074 11.9517 13.9626 11.9517 14.873Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M15.6057 17V13.4954H14.9571V12.6414H15.6057V12.2708C15.6057 11.782 15.7453 11.4033 16.0246 11.1348C16.3066 10.8635 16.7 10.7279 17.2049 10.7279C17.366 10.7279 17.5634 10.7548 17.7971 10.8085L17.785 11.7108C17.6883 11.6866 17.5701 11.6746 17.4305 11.6746C16.9928 11.6746 16.7739 11.88 16.7739 12.2909V12.6414H17.64V13.4954H16.7739V17H15.6057Z\\\" fill=\\\"#BF3535\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M10.6582 14.861C10.6582 15.5323 10.5052 16.0708 10.199 16.4763C9.89555 16.8792 9.48466 17.0806 8.96635 17.0806C8.52592 17.0806 8.17009 16.9275 7.89885 16.6213V18.6758H6.73466V12.6414H7.81425L7.85454 13.0684C8.13652 12.73 8.50444 12.5608 8.9583 12.5608C9.49541 12.5608 9.91301 12.7595 10.2111 13.157C10.5092 13.5544 10.6582 14.1023 10.6582 14.8005V14.861ZM9.49406 14.7764C9.49406 14.3708 9.42155 14.058 9.27653 13.8378C9.1342 13.6176 8.92607 13.5074 8.65214 13.5074C8.28691 13.5074 8.03581 13.6471 7.89885 13.9264V15.7109C8.04118 15.9983 8.29497 16.142 8.6602 16.142C9.21611 16.142 9.49406 15.6868 9.49406 14.7764Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M14.9769 14.861C14.9769 15.5323 14.8239 16.0708 14.5177 16.4763C14.2142 16.8792 13.8033 17.0806 13.285 17.0806C12.8446 17.0806 12.4888 16.9275 12.2175 16.6213V18.6758H11.0533V12.6414H12.1329L12.1732 13.0684C12.4552 12.73 12.8231 12.5608 13.277 12.5608C13.8141 12.5608 14.2317 12.7595 14.5298 13.157C14.8279 13.5544 14.9769 14.1023 14.9769 14.8005V14.861ZM13.8127 14.7764C13.8127 14.3708 13.7402 14.058 13.5952 13.8378C13.4529 13.6176 13.2448 13.5074 12.9708 13.5074C12.6056 13.5074 12.3545 13.6471 12.2175 13.9264V15.7109C12.3599 15.9983 12.6136 16.142 12.9789 16.142C13.5348 16.142 13.8127 15.6868 13.8127 14.7764Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M16.7658 11.5698V12.6414H17.5111V13.4954H16.7658V15.6707C16.7658 15.8318 16.7967 15.9473 16.8585 16.0171C16.9202 16.0869 17.0384 16.1218 17.213 16.1218C17.3419 16.1218 17.456 16.1124 17.5554 16.0936V16.9758C17.3271 17.0457 17.0921 17.0806 16.8504 17.0806C16.034 17.0806 15.6178 16.6683 15.6016 15.8439V13.4954H14.9652V12.6414H15.6016V11.5698H16.7658Z\\\" fill=\\\"#FF723F\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.11943 13.9425L9.85258 12.6414H11.0973L9.85661 14.7764L11.1497 17H9.90092L9.12346 15.6304L8.35002 17H7.09721L8.3903 14.7764L7.15361 12.6414H8.40239L9.11943 13.9425Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M12.5559 17H11.3877V10.8125H12.5559V17Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.5493 15.7955C15.5493 15.6532 15.4781 15.5417 15.3358 15.4612C15.1961 15.3779 14.9705 15.3041 14.659 15.2396C13.6224 15.0221 13.1041 14.5817 13.1041 13.9183C13.1041 13.5316 13.2639 13.2094 13.5835 12.9515C13.9057 12.691 14.326 12.5608 14.8443 12.5608C15.3975 12.5608 15.8393 12.691 16.1696 12.9515C16.5026 13.212 16.6691 13.5504 16.6691 13.9667H15.505C15.505 13.8002 15.4513 13.6632 15.3438 13.5558C15.2364 13.4457 15.0686 13.3906 14.8403 13.3906C14.6442 13.3906 14.4925 13.4349 14.3851 13.5236C14.2777 13.6122 14.224 13.725 14.224 13.8619C14.224 13.9908 14.2844 14.0956 14.4052 14.1761C14.5288 14.254 14.7356 14.3225 15.0256 14.3816C15.3156 14.438 15.56 14.5024 15.7587 14.575C16.3737 14.8005 16.6812 15.1913 16.6812 15.7472C16.6812 16.1447 16.5107 16.4669 16.1696 16.714C15.8286 16.9584 15.3881 17.0806 14.8483 17.0806C14.4831 17.0806 14.1582 17.0161 13.8735 16.8872C13.5915 16.7556 13.37 16.577 13.2088 16.3514C13.0477 16.1232 12.9671 15.8774 12.9671 15.6143H14.0709C14.0816 15.821 14.1582 15.9795 14.3005 16.0896C14.4428 16.1997 14.6335 16.2548 14.8725 16.2548C15.0954 16.2548 15.2633 16.2131 15.3761 16.1299C15.4915 16.0439 15.5493 15.9325 15.5493 15.7955Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M9.11943 13.9425L9.85258 12.6414H11.0973L9.85661 14.7764L11.1497 17H9.90092L9.12346 15.6304L8.35002 17H7.09721L8.3903 14.7764L7.15361 12.6414H8.40239L9.11943 13.9425Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M12.5559 17H11.3877V10.8125H12.5559V17Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.5493 15.7955C15.5493 15.6532 15.4781 15.5417 15.3358 15.4612C15.1961 15.3779 14.9705 15.3041 14.659 15.2396C13.6224 15.0221 13.1041 14.5817 13.1041 13.9183C13.1041 13.5316 13.2639 13.2094 13.5835 12.9515C13.9057 12.691 14.326 12.5608 14.8443 12.5608C15.3975 12.5608 15.8393 12.691 16.1696 12.9515C16.5026 13.212 16.6691 13.5504 16.6691 13.9667H15.505C15.505 13.8002 15.4513 13.6632 15.3438 13.5558C15.2364 13.4457 15.0686 13.3906 14.8403 13.3906C14.6442 13.3906 14.4925 13.4349 14.3851 13.5236C14.2777 13.6122 14.224 13.725 14.224 13.8619C14.224 13.9908 14.2844 14.0956 14.4052 14.1761C14.5288 14.254 14.7356 14.3225 15.0256 14.3816C15.3156 14.438 15.56 14.5024 15.7587 14.575C16.3737 14.8005 16.6812 15.1913 16.6812 15.7472C16.6812 16.1447 16.5107 16.4669 16.1696 16.714C15.8286 16.9584 15.3881 17.0806 14.8483 17.0806C14.4831 17.0806 14.1582 17.0161 13.8735 16.8872C13.5915 16.7556 13.37 16.577 13.2088 16.3514C13.0477 16.1232 12.9671 15.8774 12.9671 15.6143H14.0709C14.0816 15.821 14.1582 15.9795 14.3005 16.0896C14.4428 16.1997 14.6335 16.2548 14.8725 16.2548C15.0954 16.2548 15.2633 16.2131 15.3761 16.1299C15.4915 16.0439 15.5493 15.9325 15.5493 15.7955Z\\\" fill=\\\"#0E8857\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" d=\\\"M21.5 10H2.5V8H21.5V10Z\\\"></path><path fill=\\\"default\\\" d=\\\"M11.2071 5.70711L7.20711 9.70711L5.79289 8.29289L9.79289 4.29289L11.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M19.2071 5.70711L15.2071 9.70711L13.7929 8.29289L17.7929 4.29289L19.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M17.0208 17.107C16.8256 16.9117 16.8256 16.5951 17.0208 16.3999L17.8996 15.5211C18.0948 15.3259 18.4114 15.3259 18.6067 15.5211L23.6357 20.5502C23.8309 20.7454 23.8309 21.062 23.6357 21.2573L22.7569 22.136C22.5617 22.3313 22.2451 22.3313 22.0498 22.136L17.0208 17.107Z\\\"></path><path fill=\\\"default\\\" d=\\\"M21.896 15.6755C22.0913 15.4802 22.4079 15.4802 22.6031 15.6755L23.4819 16.5542C23.6771 16.7495 23.6771 17.0661 23.4819 17.2613L18.5578 22.1854C18.3626 22.3807 18.046 22.3807 17.8507 22.1854L16.972 21.3067C16.7767 21.1114 16.7767 20.7948 16.972 20.5996L21.896 15.6755Z\\\"></path><path fill=\\\"default\\\" d=\\\"M4.5 6H20.5V13H22.5V6C22.5 4.89543 21.6046 4 20.5 4H4.5C3.39543 4 2.5 4.89543 2.5 6V18C2.5 19.1046 3.39543 20 4.5 20H15.5V18H4.5V6Z\\\"></path><path d=\\\"M8.5 12.5C8.5 12.2239 8.72386 12 9 12H10C10.2761 12 10.5 12.2239 10.5 12.5V15.5C10.5 15.7761 10.2761 16 10 16H9C8.72386 16 8.5 15.7761 8.5 15.5V12.5Z\\\"></path><path d=\\\"M14.5 12.5C14.5 12.2239 14.7239 12 15 12H16C16.2761 12 16.5 12.2239 16.5 12.5V15.5C16.5 15.7761 16.2761 16 16 16H15C14.7239 16 14.5 15.7761 14.5 15.5V12.5Z\\\"></path><path d=\\\"M11.5 11.5C11.5 11.2239 11.7239 11 12 11H13C13.2761 11 13.5 11.2239 13.5 11.5V16.5C13.5 16.7761 13.2761 17 13 17H12C11.7239 17 11.5 16.7761 11.5 16.5V11.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 7C3.44772 7 3 7.44772 3 8V16C3 16.5523 3.44772 17 4 17H20C20.5523 17 21 16.5523 21 16V8C21 7.44772 20.5523 7 20 7H4ZM13.8562 8.94727L15.0937 10.1847L13.2375 12.0409L15.0937 13.897L13.8562 15.1345L12.0001 13.2783L10.1439 15.1344L8.90649 13.897L10.7626 12.0409L8.9065 10.1847L10.1439 8.94727L12.0001 10.8034L13.8562 8.94727Z\\\"></path><path d=\\\"M3 4.5C3 3.94772 3.44772 3.5 4 3.5H5V5.25H3V4.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3.5H9V5.25H7V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3.5H13V5.25H11V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3.5H17V5.25H15V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3.5H20C20.5523 3.5 21 3.94772 21 4.5V5.25H19V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19.5V18.75H5V20.5H4C3.44772 20.5 3 20.0523 3 19.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 18.75H9V20.5H7V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 18.75H13V20.5H11V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 18.75H17V20.5H15V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 18.75H21V19.5C21 20.0523 20.5523 20.5 20 20.5H19V18.75Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 6H20V8H4V6ZM4 11H20V13H4V11ZM4 16H20V18H4V16Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 7L3 7L3 5L21 5V7Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 11L9 11V9L21 9V11Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 15L9 15V13L21 13V15Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 19L3 19L3 17L21 17V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 15L7 9L3 12L7 15Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 7H3V5H21V7Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 11H9V9H21V11Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 15H9V13H21V15Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 19H3V17H21V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 9L3 15L7 12L3 9Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M17.5575 8.00667V5.37583C17.558 5.17855 17.4059 5.01443 17.2092 5H4.37583C4.16827 5 4 5.16827 4 5.37583V7.97C4.00927 8.1736 4.17223 8.33656 4.37583 8.34583H5.155C5.34905 8.34676 5.5119 8.1998 5.53083 8.00667V6.97083H9.57333V17.5125H8.16167C7.9541 17.5125 7.78583 17.6808 7.78583 17.8883V18.64C7.78583 18.8476 7.9541 19.0158 8.16167 19.0158H13.4233C13.6309 19.0158 13.7992 18.8476 13.7992 18.64V17.8883C13.7992 17.6808 13.6309 17.5125 13.4233 17.5125H12.0117V6.97083H16.0817V7.97C16.0817 8.17757 16.2499 8.34583 16.4575 8.34583H17.2092C17.391 8.32966 17.5365 8.18801 17.5575 8.00667Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 16L17 19V13L21 16Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-parahraph\\\"><path id=\\\"shape\\\" d=\\\"M9 16H11V20H13V6H15V20H17V6H20V4H9C5.691 4 3 6.691 3 10C3 13.309 5.691 16 9 16ZM9 6H11V14H9C6.794 14 5 12.206 5 10C5 7.794 6.794 6 9 6Z\\\" fill=\\\"black\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.5575 8.00667V5.37583C16.558 5.17855 16.4059 5.01443 16.2092 5H3.37583C3.16827 5 3 5.16827 3 5.37583V7.97C3.00927 8.1736 3.17223 8.33656 3.37583 8.34583H4.155C4.34905 8.34676 4.5119 8.1998 4.53083 8.00667V6.97083H8.57333V17.5125H7.16167C6.9541 17.5125 6.78583 17.6808 6.78583 17.8883V18.64C6.78583 18.8476 6.9541 19.0158 7.16167 19.0158H12.4233C12.6309 19.0158 12.7992 18.8476 12.7992 18.64V17.8883C12.7992 17.6808 12.6309 17.5125 12.4233 17.5125H11.0117V6.97083H15.0817V7.97C15.0817 8.17757 15.2499 8.34583 15.4575 8.34583H16.2092C16.391 8.32966 16.5365 8.18801 16.5575 8.00667Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 14V11H19V14H17V12L13 15L17 18V16H19C20.1046 16 21 15.1046 21 14Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.33 3H6.67C5.74768 3 5 3.74768 5 4.67V19.67C5 20.5923 5.74768 21.34 6.67 21.34H18.33C19.2523 21.34 20 20.5923 20 19.67V4.67C20 3.74768 19.2523 3 18.33 3ZM6.67 19.67V4.67H18.33V19.67H6.67Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.33 15H14.66V16.8H8.33V15Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.34 6.78H16.67V8.58H8.34V6.78Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.34 10.83H16.67V12.63H8.34V10.83Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><polygon fill=\\\"none\\\" points=\\\"0 0 24 0 24 24 0 24\\\"></polygon><path d=\\\"M16.7375649,4 L21.236068,11.9970061 L16.7348397,19.9994626 L7.5018203,20.0006467 L3,11.9970061 L7.49832909,4.0003479 L16.7375649,4 Z M8.73606798,5.99700608 L7.63018536,7.88746878 L13.4671162,17.9973295 L15.5,17.9970061 L16.5126451,16.2389926 L10.5994314,5.99700608 L8.73606798,5.99700608 Z M6.6434864,9.58428881 L5.23606798,11.9970061 L8.73606798,17.9970061 L11.5579671,17.9970061 L6.6434864,9.58428881 Z M17.5249398,14.5298193 L19,11.9970061 L15.5,5.99700608 L12.5985178,5.99700608 L17.5249398,14.5298193 Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.81,5a8.1,8.1,0,0,0-2-.76l-9.59,9.6a8,8,0,0,0,.77,2L15.83,5Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M19,8.11,8.1,19a8.14,8.14,0,0,0,2.28.86l9.44-9.51A8,8,0,0,0,19,8.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m22 20.7c-4.8 0-9.7 0-14.5 0-.2 0-.3 0-.4-.2-1.7-1.7-3.3-3.3-5-5 0 0-.1-.1-.1-.1l.2-.2c4-4 7.9-7.9 11.9-11.9.1-.1.2-.1.4 0 2.5 2.5 4.9 4.9 7.4 7.4 0 0 .1.1.2.1-2.7 2.7-5.4 5.4-8.1 8.1h8.1c-.1.7-.1 1.2-.1 1.8zm-17.5-5.2 3.5 3.5h.2 3.1c.1 0 .2 0 .3-.1.9-.9 1.7-1.7 2.6-2.6 0 0 .1-.1.1-.1-1.8-1.8-3.5-3.5-5.2-5.2-1.6 1.4-3.1 2.9-4.6 4.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.70864175 17.0129114h12.29135825v2h-12.14119637c-.00132452.0293711-.00277091.0589835-.00433457.0888699-.11198252 2.140328-1.54526173 3.4612105-3.2460842 3.1445917-1.4379189-.2676777-2.36548818-1.5917777-2.25554648-3.2334616h-2.35283838v-2h2.85101727c.48375742-1.3216041 1.16546925-2.3853848 2.02795171-3.2480075-.18264567-.7591819-.33094514-1.4552523-.44245747-2.1059993-.9997212.2428217-2.08194563.3540068-3.23651146.3540068v-2c1.10093119 0 2.10387085-.11329307 3.00514278-.36403478-.067061-1.39749009.10114233-2.64169381.54012175-3.99140074.87824528-2.70029457 2.67433987-4.143459 4.41683292-3.50917134 1.7190901.62576874 2.1426897 2.84674853 1.0095184 5.01231865-.9488917 1.8133989-2.24059781 3.04654081-3.81728229 3.81582451.06790982.4503952.1575239.9279247.26809133 1.4410646.1343057-.0803068.27128125-.1579953.41089297-.2331767.0955675-.0514634.17416199-.0940935.35123288-.1903527.03012452-.0163737.03012452-.0163737.06032177-.0327821 2.53273324-1.3760604 3.63912134-1.7128543 4.87690454-.7320646.4256558.3372795.6993633.7334951.8408663 1.1649785.1573732-.1151393.3108908-.221996.4636277-.3224267 1.5449353-1.015857 2.9140936-1.2813901 4.0466138-.3145683 1.3543316 1.15618 1.1007616 2.8053072-.3680178 4.5663418l-1.535906-1.2810123c.8571484-1.0277023.9280413-1.4887639.6053709-1.7642245-.2529064-.2159039-.7655734-.1164778-1.6492414.4645694-.3820124.2511885-.7916868.5675309-1.2936989.9899347-.1417474.1192693-1.1521636.9929139-1.4170698 1.2079504-.9360832.7598614-2.1683444-.4799627-1.4027696-1.4113791.6859267-.8345146.7958988-1.4729018.4681355-1.7326135-.2727291-.216104-.9839554.0003993-2.6800163.9218869-.0299657.0162827-.0299657.0162827-.0600012.032608-.1779933.0967622-.2593885.1409114-.35809563.1940655-.30441957.163931-.59162724.3413674-.86158259.5349668.28483671 1.1242685.47243846 1.9072203.58864967 2.5326976zm-2.69257941 0h.65153892c-.05070864-.2442087-.11255084-.5178056-.18713872-.8311195-.16893029.2580643-.32374025.5344537-.4644002.8311195zm.84029009 2h-1.49615156c-.10563245.7406814.19047954 1.1883605.61420846 1.2672403.43307507.0806197.82635111-.279308.8819431-1.2672403zm2.54320537-12.77954768c.6348876-1.21331479.4730078-2.0620683.0784308-2.20569892-.4476461-.16294835-1.25839789.48849183-1.83079041 2.24839701-.26955538.82878773-.41470838 1.62140209-.44392294 2.47338461.88768275-.59409074 1.6219516-1.41849581 2.19628255-2.5160827z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.52134855 16-.71695295 3h-2.8043956l1.02103611-3zm-1.13893097-4 2.38241762-7h2.443956l2.3956044 7h-2.3895877l-1.2279947-3.71428571-1.2145741 3.71428571zm8.59089482 4 1.0266876 3h-2.8043956l-.7241225-3zm-11.9733124-3h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m14.3076923 14.3214286h-4.62417582l-.87912088 2.6785714h-2.8043956l4.7648352-13h2.443956l4.7912088 13h-2.8043956zm-3.9120879-2.1696429h3.2l-1.6087912-4.86607141zm-5.3956044 6.3482143h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m17 3h-10c-1.1 0-1.99.9-1.99 2l-.01 16 7-5 7 5v-16c0-1.1-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9 16.17-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16.59 8.59-4.59 4.58-4.59-4.58-1.41 1.41 6 6 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m15.41 7.41-1.41-1.41-6 6 6 6 1.41-1.41-4.58-4.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10 6-1.41 1.41 4.58 4.59-4.58 4.59 1.41 1.41 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 8-6 6 1.41 1.41 4.59-4.58 4.59 4.58 1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19 6.41-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16 1h-12c-1.1 0-2 .9-2 2v14h2v-14h12zm3 4h-11c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16h-11v-14h11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19,7c0-1.103-0.897-2-2-2H7V2H5v3H2v2h3h2h10v15h2v-3h3v-2h-3V7z\\\"></path><path d=\\\"M5,9v8c0,1.103,0.897,2,2,2h8v-2H7V9H5z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.1716 2H4C2.8954 2 2 2.8954 2 4V18C2 19.1046 2.8954 20 4 20H8V18H4V4H11V7.5C11 7.7761 11.2239 8 11.5 8H15V10.8432L17 8.8432V7.8284C17 7.298 16.7893 6.7892 16.4142 6.4142L12.5858 2.5858C12.2107 2.2107 11.702 2 11.1716 2Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21.5606 12.0339L20.1464 10.6197C19.8535 10.3268 19.4696 10.1804 19.0857 10.1804C18.7018 10.1804 18.3179 10.3268 18.025 10.6197L10.1803 18.4644V22H13.7158L21.5605 14.1553C22.1465 13.5695 22.1465 12.6198 21.5606 12.0339ZM13.0946 20.5H11.6804V19.0857L16.9919 13.7733L18.4066 15.188L13.0946 20.5ZM19.4673 14.1273L18.0526 12.7125L19.0844 11.6805L19.0859 11.6804L20.5 13.0946L19.4673 14.1273Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#ABB0C4;} </style><title>icon - attachment</title><g><path class=\\\"st0\\\" d=\\\"M5,7L5,7v8c0,3.9,3.2,7,7.1,6.9c1.8,0,3.6-0.7,4.9-2c1.3-1.3,2.1-3.1,2.1-4.9V7h-2v8c0,2.8-2.2,5-5,5 s-5-2.2-5-5V7l0,0c0-0.8,0.3-1.6,0.9-2.1c1.2-1.2,3.1-1.2,4.2,0C12.7,5.4,13,6.2,13,7v8c0,0.6-0.4,1-1,1c-0.3,0-0.5-0.1-0.7-0.3 C11.1,15.5,11,15.3,11,15V7H9v8c0,1.7,1.4,3,3,3c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.3,0.9-2.1V7c0-2.8-2.2-5-5-5S5,4.2,5,7z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path><path d=\\\"M11.99 18.54l-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27-7.38 5.74zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27L12 16z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 5.75C7 5.47386 7.22386 5.25 7.5 5.25H10.5C10.7761 5.25 11 5.47386 11 5.75V18.25C11 18.5261 10.7761 18.75 10.5 18.75H7.5C7.22386 18.75 7 18.5261 7 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M13 5.75C13 5.47386 13.2239 5.25 13.5 5.25H16.5C16.7761 5.25 17 5.47386 17 5.75V18.25C17 18.5261 16.7761 18.75 16.5 18.75H13.5C13.2239 18.75 13 18.5261 13 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.1895 11.1653C18.7884 11.5606 18.7884 12.4393 18.1895 12.8346L8.50495 19.2264C7.8401 19.6652 6.9541 19.1884 6.9541 18.3918L6.9541 5.60811C6.9541 4.81151 7.84009 4.3347 8.50494 4.7735L18.1895 11.1653Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10.314997 14.1097181-3.10191769-.0150391c-.14580656-.0010433-.28962115-.0339596-.42136544-.0964422-.49900706-.2366652-.71167717-.8330454-.475012-1.3320524l4.78752513-10.09446718c.0995136-.20982395.2689515-.37847202.4792381-.47700427.5001074-.23433112 1.0954874-.01887692 1.3298186.48123043l4.7618949 10.16279272c.0632461.1349793.0955164.2823905.0944499.4314488-.0039515.5522706-.4548585.9967711-1.0071292.9928196l-3.1442014-.0153416v7.5319189c0 .5515432-.4454773.9970205-.9970206.9970205h-1.3092597c-.5515433 0-.9970206-.4454773-.9970206-.9970205z\\\" transform=\\\"matrix(.93969262 -.34202014 .34202014 .93969262 -3.496571 4.846563)\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 18.11H6.83V16.22H4.94V14.34H3.05V17.17C3.04999 17.421 3.15039 17.6616 3.32885 17.8382C3.5073 18.0148 3.74897 18.1126 4 18.11ZM18.17 3.93997C18.1382 3.41124 17.6997 2.99901 17.17 2.99997H14.39V4.88997H16.28V6.77997H18.17V3.93997ZM4.94 4.88997H6.83V2.99997H4C3.74048 2.98337 3.48567 3.07502 3.29618 3.25314C3.1067 3.43125 2.99947 3.67991 3 3.93997V6.77997H4.94V4.88997ZM3.05 8.66997H4.94V12.45H3.05V8.66997ZM8.72 2.99997H12.5V4.88997H8.72V2.99997Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.67518 8.36206C8.67494 8.04026 9.05891 7.87893 9.28347 8.10648L14.5 13.3924L19.714 8.10925C19.9385 7.8817 20.3225 8.04303 20.3222 8.36483L20.3214 9.44967C20.3212 9.83233 20.171 10.1992 19.904 10.4698L15.7599 14.6689L17.3189 16.2487C18.2643 15.7302 19.4705 15.8757 20.2694 16.6853C21.2435 17.6724 21.2435 19.2727 20.2694 20.2597C19.2954 21.2467 17.716 21.2467 16.742 20.2597C16.0384 19.5468 15.843 18.5139 16.1558 17.6232L14.5 15.9455L12.8442 17.6233C13.157 18.5139 12.9616 19.5468 12.258 20.2597C11.284 21.2468 9.70465 21.2468 8.73056 20.2597C7.75648 19.2727 7.75648 17.6724 8.73056 16.6853C9.52954 15.8757 10.7357 15.7302 11.6811 16.2487L13.2402 14.6689L9.09345 10.4671C8.82642 10.1965 8.67627 9.82956 8.67599 9.4469L8.67518 8.36206ZM17.7498 19.2385C18.1673 19.6615 18.8441 19.6615 19.2616 19.2385C19.679 18.8154 19.679 18.1296 19.2616 17.7066C18.8441 17.2836 18.1673 17.2836 17.7498 17.7066C17.3323 18.1296 17.3323 18.8154 17.7498 19.2385ZM11.2502 19.2385C10.8327 19.6615 10.1559 19.6615 9.73841 19.2385C9.32095 18.8155 9.32095 18.1296 9.73841 17.7066C10.1559 17.2836 10.8327 17.2836 11.2502 17.7066C11.6677 18.1296 11.6677 18.8155 11.2502 19.2385ZM14.5043 15.222C14.7995 15.222 15.0388 14.9796 15.0388 14.6804C15.0388 14.3813 14.7995 14.1388 14.5043 14.1388C14.2091 14.1388 13.9698 14.3813 13.9698 14.6804C13.9698 14.9796 14.2091 15.222 14.5043 15.222Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\"><g id=\\\"surface1\\\"><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 11.34375 4.0625 C 11.035156 4.128906 10.570312 4.390625 8.0625 5.925781 L 5.359375 7.585938 L 3.863281 7.609375 C 2.226562 7.632812 2.058594 7.65625 1.539062 7.929688 C 0.882812 8.277344 0.355469 8.890625 0.136719 9.570312 C 0.0234375 9.914062 0.0234375 9.921875 0.0234375 12.023438 L 0.0234375 14.132812 L 0.144531 14.46875 C 0.398438 15.15625 0.867188 15.703125 1.5 16.046875 C 2.058594 16.351562 2.199219 16.367188 3.863281 16.390625 L 5.359375 16.414062 L 8.0625 18.074219 C 9.546875 18.984375 10.878906 19.777344 11.019531 19.832031 C 11.226562 19.921875 11.367188 19.941406 11.765625 19.941406 C 12.230469 19.945312 12.277344 19.9375 12.570312 19.789062 C 12.917969 19.621094 13.199219 19.339844 13.359375 19.003906 C 13.597656 18.511719 13.59375 18.75 13.59375 12 C 13.59375 5.039062 13.609375 5.398438 13.296875 4.878906 C 13.109375 4.570312 12.851562 4.335938 12.515625 4.179688 C 12.3125 4.082031 12.171875 4.058594 11.859375 4.050781 C 11.640625 4.046875 11.410156 4.050781 11.34375 4.0625 Z M 11.71875 12.003906 C 11.71875 17.164062 11.710938 18.050781 11.652344 18.03125 C 11.617188 18.019531 10.292969 17.210938 8.714844 16.246094 L 5.835938 14.484375 L 4.226562 14.484375 C 2.726562 14.484375 2.609375 14.480469 2.441406 14.394531 C 2.207031 14.273438 1.988281 14.015625 1.925781 13.796875 C 1.859375 13.554688 1.859375 10.445312 1.925781 10.203125 C 1.988281 9.984375 2.207031 9.726562 2.441406 9.605469 C 2.609375 9.519531 2.726562 9.515625 4.226562 9.515625 L 5.835938 9.515625 L 8.742188 7.734375 C 10.339844 6.753906 11.664062 5.953125 11.6875 5.953125 C 11.703125 5.953125 11.71875 8.675781 11.71875 12.003906 Z M 11.71875 12.003906 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 20.085938 4.402344 C 19.984375 4.449219 19.785156 4.601562 19.65625 4.75 C 19.421875 4.996094 19.40625 5.019531 19.40625 5.265625 C 19.40625 5.558594 19.429688 5.597656 20.007812 6.242188 C 21.027344 7.382812 21.726562 8.804688 22.035156 10.359375 C 22.128906 10.8125 22.144531 11.054688 22.148438 11.859375 C 22.148438 12.890625 22.117188 13.175781 21.886719 14.054688 C 21.515625 15.460938 20.8125 16.710938 19.773438 17.789062 C 19.222656 18.359375 19.191406 18.652344 19.609375 19.109375 C 19.878906 19.40625 20.058594 19.5 20.359375 19.5 C 20.625 19.5 20.84375 19.351562 21.285156 18.867188 C 23.132812 16.835938 24.089844 14.234375 23.984375 11.53125 C 23.925781 9.992188 23.605469 8.699219 22.941406 7.335938 C 22.351562 6.117188 21.085938 4.492188 20.625 4.359375 C 20.398438 4.292969 20.300781 4.304688 20.085938 4.402344 Z M 20.085938 4.402344 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 17.585938 6.847656 C 17.328125 6.976562 16.976562 7.367188 16.941406 7.570312 C 16.890625 7.84375 16.960938 7.996094 17.324219 8.398438 C 17.9375 9.078125 18.300781 9.707031 18.535156 10.503906 C 18.886719 11.722656 18.769531 12.988281 18.195312 14.132812 C 17.96875 14.597656 17.722656 14.945312 17.320312 15.371094 C 16.925781 15.796875 16.828125 16.007812 16.917969 16.28125 C 16.992188 16.507812 17.304688 16.847656 17.546875 16.964844 C 17.960938 17.164062 18.300781 17.054688 18.730469 16.566406 C 19.8125 15.347656 20.394531 14.011719 20.53125 12.445312 C 20.695312 10.554688 20.023438 8.605469 18.75 7.25 C 18.261719 6.730469 18.003906 6.640625 17.585938 6.847656 Z M 17.585938 6.847656 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 15.445312 8.992188 C 15.34375 9.042969 15.136719 9.210938 14.992188 9.367188 C 14.757812 9.609375 14.71875 9.675781 14.71875 9.828125 C 14.71875 10.039062 14.785156 10.148438 15.121094 10.5 C 15.445312 10.835938 15.652344 11.273438 15.6875 11.703125 C 15.742188 12.328125 15.539062 12.851562 15.066406 13.34375 C 14.601562 13.828125 14.59375 14.042969 15.007812 14.476562 C 15.285156 14.757812 15.417969 14.835938 15.664062 14.882812 C 16.007812 14.949219 16.320312 14.757812 16.707031 14.253906 C 17.792969 12.84375 17.796875 10.953125 16.71875 9.542969 C 16.367188 9.078125 16.179688 8.9375 15.882812 8.921875 C 15.707031 8.90625 15.578125 8.929688 15.445312 8.992188 Z M 15.445312 8.992188 \\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 8h4v-4h-4zm6 12h4v-4h-4zm-6 0h4v-4h-4zm0-6h4v-4h-4zm6 0h4v-4h-4zm6-10v4h4v-4zm-6 4h4v-4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.76749 15.1756H9.45332C9.75708 15.1756 10.0033 14.9293 10.0033 14.6256V13.4339C10.0033 13.288 9.94537 13.1481 9.84223 13.045C9.73908 12.9419 9.59919 12.8839 9.45332 12.8839H6.70332C5.04223 12.9052 3.59478 11.7564 3.23832 10.1339C3.02293 9.11823 3.27688 8.05958 3.92959 7.25214C4.5823 6.44469 5.56422 5.97451 6.60249 5.97224H13.4775V8.63974C13.4747 8.782 13.5545 8.91302 13.6821 8.97587C13.8098 9.03871 13.9623 9.02203 14.0733 8.93308L18.8492 5.11058C18.9349 5.03917 18.9844 4.93338 18.9844 4.82183C18.9844 4.71027 18.9349 4.60448 18.8492 4.53308L14.0367 0.747245C13.9256 0.65829 13.7731 0.641611 13.6455 0.704455C13.5178 0.7673 13.438 0.898321 13.4408 1.04058V3.70808H6.56582C4.91384 3.70968 3.34269 4.42316 2.25435 5.66596C1.16602 6.90877 0.666092 8.56033 0.882486 10.1981C1.3299 13.0918 3.83961 15.2145 6.76749 15.1756Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.33994 5.99974H13.1141C14.7752 5.97845 16.2226 7.12721 16.5791 8.74975C16.7913 9.76407 16.5359 10.82 15.8836 11.6252C15.2312 12.4304 14.2512 12.8994 13.2149 12.9022H10.3274C10.18 12.9022 10.0387 12.9614 9.93525 13.0666C9.83184 13.1717 9.77498 13.314 9.77744 13.4614V14.6531C9.77744 14.9568 10.0237 15.2031 10.3274 15.2031H13.0133C15.9674 15.2633 18.5068 13.1203 18.9441 10.1981C19.1605 8.56033 18.6606 6.90877 17.5722 5.66596C16.4839 4.42316 14.9128 3.70968 13.2608 3.70808H6.33994V1.04058C6.34272 0.898321 6.26294 0.7673 6.13529 0.704455C6.00764 0.641611 5.85515 0.65829 5.7441 0.747245L0.968271 4.56975C0.882564 4.64115 0.833008 4.74694 0.833008 4.85849C0.833008 4.97005 0.882564 5.07584 0.968271 5.14724L5.7441 8.96974C5.86027 9.06472 6.02258 9.07933 6.15383 9.00663C6.28509 8.93393 6.35881 8.7886 6.33994 8.63974V5.99974Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14.1716 2H6C4.8954 2 4 2.8954 4 4V20C4 21.1046 4.8954 22 6 22H18C19.1046 22 20 21.1046 20 20V7.8284C20 7.298 19.7893 6.7893 19.4142 6.4142L15.5858 2.5858C15.2107 2.2107 14.702 2 14.1716 2ZM6 20V4H14V7.5C14 7.7761 14.2239 8 14.5 8H18V20H6Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.75 10H11.25V12.25H9V13.75H11.25V16H12.75V13.75H15V12.25H12.75V10Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path><path d=\\\"M12.75 10H11.25V12.25H9V13.75H11.25V16H12.75V13.75H15V12.25H12.75V10Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 26 26\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20.25 4H9.75C8.78487 4 8 4.78487 8 5.75V16.25C8 17.2151 8.78487 18 9.75 18H20.25C21.2151 18 22 17.2151 22 16.25V5.75C22 4.78487 21.2151 4 20.25 4ZM9.75 16.25V5.75H20.25L20.2518 16.25H9.75Z\\\"></path><path d=\\\"M5.78902 9.46883H4V20.2098C4 21.1971 4.80237 22 5.78902 22H16.5231V20.2098H5.78902V9.46883ZM13.7797 12.6186L12.2357 11.0737L10.9709 12.3394L13.8995 15.2699L19 9.1475L17.6242 8L13.7797 12.6186Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / approved line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-132.000000, -179.000000)\\\" fill=\\\"#239700\\\"><g transform=\\\"translate(130.000000, 176.000000)\\\"><path d=\\\"M20,9 L14.388,9 L15.511,5.633 C15.713,5.025 15.611,4.351 15.236,3.831 C14.861,3.311 14.253,3 13.612,3 L12,3 C11.703,3 11.422,3.132 11.231,3.36 L6.531,9 L4,9 C2.897,9 2,9.897 2,11 L2,20 C2,21.103 2.897,22 4,22 L7,22 L17.307,22 C18.136,22 18.888,21.479 19.18,20.702 L21.937,13.351 C21.979,13.239 22,13.12 22,13 L22,11 C22,9.897 21.103,9 20,9 Z M4,11 L6,11 L6,20 L4,20 L4,11 Z M20,12.819 L17.307,20 L8,20 L8,10.362 L12.468,5 L13.614,5 L12.052,9.683 C11.949,9.988 12.001,10.323 12.189,10.584 C12.377,10.846 12.679,11 13,11 L20,11 L20,12.819 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / cancelled / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-170.000000, -178.000000)\\\"><g transform=\\\"translate(168.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#BA0000\\\" points=\\\"15.292 7.295 12 10.587 8.708 7.295 7.294 8.709 10.586 12.001 7.294 15.293 8.708 16.707 12 13.415 15.292 16.707 16.706 15.293 13.414 12.001 16.706 8.709\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / completed/ line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-213.000000, -178.000000)\\\" fill-rule=\\\"nonzero\\\"><g transform=\\\"translate(211.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.448,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#239700\\\" points=\\\"11 13.586 8.707 11.293 7.293 12.707 11 16.414 17.207 10.207 15.793 8.793\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / marked</title><g id=\\\"forms-/-marked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g><circle id=\\\"Oval\\\" fill=\\\"#868E96\\\" cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / none / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-250.000000, -178.000000)\\\"><g transform=\\\"translate(248.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\"></path><polygon points=\\\"8 11 16 11 16 13 8 13\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / rejected / fill</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-89.000000, -179.000000)\\\" fill=\\\"#BA0000\\\"><g transform=\\\"translate(87.000000, 176.000000)\\\"><path d=\\\"M20,3 L17,3 L6.693,3 C5.864,3 5.112,3.521 4.82,4.298 L2.063,11.649 C2.021,11.761 2,11.88 2,12 L2,14 C2,15.103 2.897,16 4,16 L9.612,16 L8.49,19.367 C8.287,19.975 8.389,20.649 8.764,21.169 C9.14,21.689 9.746,22 10.388,22 L12,22 C12.297,22 12.578,21.868 12.769,21.64 L17.469,16 L20,16 C21.103,16 22,15.103 22,14 L22,5 C22,3.897 21.103,3 20,3 Z M11.531,20 L10.386,20 L11.948,15.316 C12.051,15.011 11.999,14.676 11.811,14.415 C11.623,14.154 11.321,14 11,14 L4,14 L4,12.181 L6.693,5 L16,5 L16,14.638 L11.531,20 Z M18,14 L18,5 L20,5 L20.001,14 L18,14 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / unmarked</title><g id=\\\"forms-/-unmarked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -2 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 19L18 12H13V6H11V12H6L12 19Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 12L12 18L12 13L18 13L18 11L12 11L12 6L5 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 12L12 6V11H6V13H12L12 18L19 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6 18H18V20H6V18ZM11 4V10H6L12 16L18 10H13V4H11Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M13 5V4.382V2H11V4.382V5H8L12 9L16 5H13ZM13 22V19H16L12 15L8 19H11V22H13ZM3 11H6V13H3V11ZM8 11H11V13H8V11ZM13 11H16V13H13V11ZM18 11H21V13H18V11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 4H18V6H6V4ZM11 14V20H13V14H18L12 8L6 14H11Z\\\" class=\\\"color484848 svgShape\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 5L6 12L11 12L11 18L13 18L13 12L18 12L12 5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 12 12\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.66666 1.5H2.33332C1.82916 1.5 1.41666 1.9125 1.41666 2.41667V7C1.41666 7.50417 1.82916 7.91667 2.33332 7.91667H3.70832V10.2542L6.64166 7.91667H9.66666C10.1708 7.91667 10.5833 7.50417 10.5833 7V2.41667C10.5833 1.9125 10.1708 1.5 9.66666 1.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - down</title><path class=\\\"cls-1\\\" d=\\\"M9,3.5l-3,3-3-3-1,1,4,4,4-4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - left</title><path class=\\\"cls-1\\\" d=\\\"M7.5,2l-4,4,4,4,1-1-3-3,3-3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - right</title><path class=\\\"cls-1\\\" d=\\\"M4.5,10l4-4-4-4-1,1,3,3-3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - up</title><path class=\\\"cls-1\\\" d=\\\"M10,7.5l-4-4-4,4,1,1,3-3,3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - close</title><path class=\\\"cls-1\\\" d=\\\"M16.22,6.28,12,10.5,7.78,6.28a.4.4,0,0,0-.56,0l-.94.94a.4.4,0,0,0,0,.56L10.5,12,6.28,16.22a.4.4,0,0,0,0,.56l.94.94a.4.4,0,0,0,.56,0L12,13.5l4.22,4.22a.4.4,0,0,0,.56,0l.94-.94a.4.4,0,0,0,0-.56L13.5,12l4.22-4.22a.4.4,0,0,0,0-.56l-.94-.94A.4.4,0,0,0,16.22,6.28Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -6 22 18\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 4H13V6H3V4ZM0 0H16V2H0V0ZM6 8H10V10H6V8Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 64 65\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5.77337 52.636C6.26937 53.3827 7.10404 53.8333 8.00004 53.8333H48C49.0667 53.8333 50.032 53.1987 50.4507 52.2173L58.4507 33.5507C58.8054 32.7267 58.72 31.7827 58.2267 31.0333C57.7307 30.284 56.896 29.8333 56 29.8333H53.3334V19.1667C53.3334 16.2253 50.9414 13.8333 48 13.8333H31.7334L25.6427 9.068C25.1734 8.7 24.5974 8.5 24 8.5H10.6667C7.72537 8.5 5.33337 10.892 5.33337 13.8333V51.1667H5.35204C5.35204 51.6787 5.48271 52.1933 5.77337 52.636ZM46.2427 48.5H12.0454L17.76 35.1667H51.9574L46.2427 48.5ZM48 19.1667V29.8333H16C14.9334 29.8333 13.968 30.468 13.5494 31.4493L10.6667 38.1773V19.1667H30.816H32H48Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18 0H8C6.897 0 6 0.897 6 2V6H2C0.897 6 0 6.897 0 8V18C0 19.103 0.897 20 2 20H12C13.103 20 14 19.103 14 18V14H18C19.103 14 20 13.103 20 12V2C20 0.897 19.103 0 18 0ZM2 18V8H12L12.002 18H2ZM18 12H14V8C14 6.897 13.103 6 12 6H8V2H18V12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.5006 1.82662C17.9462 1.82628 18.1696 2.36506 17.8545 2.68017L10.5347 10L17.8507 17.3162C18.1658 17.6313 17.9424 18.1701 17.4967 18.1698L15.9945 18.1686C15.4646 18.1682 14.9565 17.9576 14.5818 17.5829L8.76692 11.7678L6.57926 13.9555C7.29731 15.282 7.09577 16.9745 5.97464 18.0957C4.60781 19.4625 2.39172 19.4625 1.02489 18.0957C-0.341949 16.7288 -0.341949 14.5127 1.02489 13.1459C2.01215 12.1586 3.44248 11.8845 4.67582 12.3234L6.99918 10L4.67579 7.67657C3.44245 8.1155 2.01213 7.84134 1.02487 6.85408C-0.341969 5.48724 -0.341969 3.27117 1.02487 1.90433C2.3917 0.537495 4.60778 0.537495 5.97461 1.90433C7.09574 3.02545 7.29728 4.71794 6.57923 6.04448L8.76694 8.23225L14.5856 2.41353C14.9603 2.03883 15.4684 1.82815 15.9983 1.82775L17.5006 1.82662ZM2.43911 14.5601C1.85332 15.1459 1.85332 16.0957 2.43911 16.6814C3.02489 17.2672 3.97464 17.2672 4.56043 16.6814C5.14622 16.0957 5.14622 15.1459 4.56043 14.5601C3.97464 13.9743 3.02489 13.9743 2.43911 14.5601ZM2.43908 5.43986C1.85329 4.85408 1.85329 3.90433 2.43908 3.31854C3.02486 2.73276 3.97461 2.73276 4.5604 3.31854C5.14618 3.90433 5.14618 4.85408 4.5604 5.43986C3.97461 6.02565 3.02486 6.02565 2.43908 5.43986ZM8.00098 10.006C8.00098 10.4202 8.33676 10.756 8.75098 10.756C9.16519 10.756 9.50098 10.4202 9.50098 10.006C9.50098 9.59179 9.16519 9.256 8.75098 9.256C8.33676 9.256 8.00098 9.59179 8.00098 10.006Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 160 120\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 0H160V120H0V0Z\\\" fill=\\\"black\\\"></path><g clip-path=\\\"url(#clip0_954_17386)\\\"><path d=\\\"M24 24H160V120H24V24Z\\\" fill=\\\"#343A40\\\"></path><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V40H24V28Z\\\" fill=\\\"#16181C\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 39V40H160V39H24Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29 30.5C29 29.9477 29.4477 29.5 30 29.5H34C34.5523 29.5 35 29.9477 35 30.5V34.5C35 35.0523 34.5523 35.5 34 35.5H30C29.4477 35.5 29 35.0523 29 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M39 30.5C39 29.9477 39.4477 29.5 40 29.5H44C44.5523 29.5 45 29.9477 45 30.5V34.5C45 35.0523 44.5523 35.5 44 35.5H40C39.4477 35.5 39 35.0523 39 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M49 30.5C49 29.9477 49.4477 29.5 50 29.5H64C64.5523 29.5 65 29.9477 65 30.5V34.5C65 35.0523 64.5523 35.5 64 35.5H50C49.4477 35.5 49 35.0523 49 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M24 40H72V120H24V40Z\\\" fill=\\\"#16181C\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M71 120H72V40H71V120Z\\\" fill=\\\"#485056\\\"></path></g><path d=\\\"M23 28C23 25.2386 25.2386 23 28 23H160V25H28C26.3431 25 25 26.3431 25 28H23ZM160 120H24H160ZM23 120V28C23 25.2386 25.2386 23 28 23V25C26.3431 25 25 26.3431 25 28V120H23ZM160 24V120V24Z\\\" fill=\\\"#485056\\\" mask=\\\"url(#path-2-inside-1_954_17386)\\\"></path><defs><clipPath id=\\\"clip0_954_17386\\\"><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V120H24V28Z\\\" fill=\\\"white\\\"></path></clipPath></defs></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - delete - line</title><path class=\\\"cls-1\\\" d=\\\"M18,6H17V4a2,2,0,0,0-2-2H9A2,2,0,0,0,7,4V6H3V8H5V20a2,2,0,0,0,2,2H17a2,2,0,0,0,2-2V8h2V6ZM9,4h6V6H9ZM7,20V8H17V20Zm6-10h2v8H13ZM9,10h2v8H9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - detach</title><path class=\\\"cls-1\\\" d=\\\"M4.8,2H6.4a.4.4,0,0,1,.4.4V13.6a.4.4,0,0,1-.4.4H4.8a.4.4,0,0,1-.4-.4V2.4A.4.4,0,0,1,4.8,2Zm4.4.4V13.6a.4.4,0,0,0,.4.4h1.6a.4.4,0,0,0,.4-.4V2.4a.4.4,0,0,0-.4-.4H9.6A.4.4,0,0,0,9.2,2.4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - download</title><path class=\\\"cls-1\\\" d=\\\"M11.55,17,5.09,9.66a.6.6,0,0,1,.45-1H8.67V2.6a.6.6,0,0,1,.6-.6h5.46a.6.6,0,0,1,.6.6V8.67h3.13a.6.6,0,0,1,.45,1L12.45,17A.6.6,0,0,1,11.55,17ZM3.11,20.18V21.6a.4.4,0,0,0,.4.4h17a.4.4,0,0,0,.4-.4V20.18a.4.4,0,0,0-.4-.4h-17A.4.4,0,0,0,3.11,20.18Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -2 14 12\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 29</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-545.000000, -716.000000)\\\" fill=\\\"#E7E7E7\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-29\\\" transform=\\\"translate(0.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Shape</title><g id=\\\"Symbols---Light\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-operation-/-annotations-/-line\\\" transform=\\\"translate(-3.000000, -3.000000)\\\" fill=\\\"#868E96\\\"><path d=\\\"M19.0416689,12.7184193 L20.7833366,10.7017527 L20.7833366,19.3184193 C20.7844507,20.3973559 19.9361575,21.286044 18.8583355,21.335086 L5.10833553,21.335086 C4.56059488,21.3498468 4.02967481,21.1450706 3.63371079,20.7663225 C3.23774678,20.3875743 3.00958797,19.866275 3.0000011,19.3184193 L3.0000011,5.47675266 C2.99888704,4.3978161 3.84718022,3.50912801 4.92500219,3.46008599 L13.6333355,3.46008599 L11.8916689,5.20175266 L4.65000219,5.20175266 L4.65000219,19.5934193 L18.9500022,19.5934193 L18.9500022,12.7184193 L19.0416689,12.7184193 Z M21.3333355,6.57675266 C21.3310126,7.0882508 21.1344108,7.57975545 20.7833355,7.95175266 L11.2500022,17.3934193 L6.94166886,17.3934193 L6.94166886,12.9934193 L16.4750022,3.55175266 C17.244066,2.81608245 18.4559384,2.81608245 19.2250022,3.55175266 L20.7833355,5.11008599 C21.1507066,5.50867428 21.3480365,6.03488736 21.3333355,6.57675266 L21.3333355,6.57675266 Z M16.6583355,9.60175266 L14.6416689,7.58508599 L8.50000219,13.8184193 L8.50000219,15.835086 L10.4250022,15.835086 L16.6583355,9.60175266 Z M19.6833355,6.66841933 L17.6666689,4.65175266 L15.9250022,6.39341933 L17.9416689,8.41008599 L19.6833355,6.66841933 Z\\\" id=\\\"Shape\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / checkmark / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-585.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-checkmark-/-line\\\" transform=\\\"translate(135.000000, 1.000000)\\\"><path d=\\\"M19.19,3 L4.8,3 C3.80588745,3 3,3.80588745 3,4.8 L3,19.2 C3,20.1941125 3.80588745,21 4.8,21 L19.19,21 C20.1818401,20.9945352 20.9845352,20.1918401 20.99,19.2 L20.99,4.8 C20.9845352,3.80815987 20.1818401,3.00546481 19.19,3 Z M4.8,19.2 L4.8,4.8 L19.19,4.8 L19.19,19.2 L4.8,19.2 Z\\\" id=\\\"box\\\"></path><polygon id=\\\"checkmark\\\" points=\\\"11.01 12.99 9 10.99 7.73 12.26 11.13 15.66 16.26 9.5 14.88 8.35\\\"></polygon></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / combo box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-675.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-combo-box-/-line\\\" transform=\\\"translate(225.000000, 0.000000)\\\"><path d=\\\"M20,2 L4,2 C3.04293208,2.00550048 2.27,2.78291627 2.27,3.74 L2.27,20.26 C2.27,21.2170837 3.04293208,21.9944995 4,22 L13.56,22 C14.5209755,22 15.3,21.2209755 15.3,20.26 L15.3,10.32 L20,10.32 C20.9609755,10.32 21.74,9.54097546 21.74,8.58 L21.74,3.74 C21.74,2.77902454 20.9609755,2 20,2 Z M13.6,20.28 L4,20.28 L4,10.28 L13.56,10.28 L13.6,20.28 Z M13.6,8.58 L4,8.58 L4,3.76 L13.56,3.76 L13.6,8.58 Z M20.02,8.58 L15.34,8.58 L15.34,3.74 L20,3.74 L20.02,8.58 Z M11.89,14.4 L5.89,14.4 L5.89,12.66 L11.89,12.66 L11.89,14.4 Z M11.89,18.75 L5.89,18.75 L5.89,17 L11.89,17 L11.89,18.75 Z M11.88,7 L6,7 L6,5.3 L11.9,5.3 L11.88,7 Z M17.14,6.13 L16.52,5.26 L19,5.26 L18.37,6.13 L17.78,7 L17.14,6.13 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / list box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-540.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-list-box-/-line\\\" transform=\\\"translate(90.000000, 1.000000)\\\"><path d=\\\"M19.2,3.9 L4.8,3.9 C3.80815987,3.90546481 3.00546481,4.70815987 3,5.7 L3,18.3 C3.00546481,19.2918401 3.80815987,20.0945352 4.8,20.1 L19.2,20.1 C20.1918401,20.0945352 20.9945352,19.2918401 21,18.3 L21,5.7 C20.9945352,4.70815987 20.1918401,3.90546481 19.2,3.9 Z M4.8,18.3 L4.8,5.7 L19.2,5.7 L19.2,18.3 L4.8,18.3 Z M10.2,11.1 L17.4,11.1 L17.4,12.9 L10.2,12.9 L10.2,11.1 Z M10.2,7.5 L17.4,7.5 L17.4,9.3 L10.2,9.3 L10.2,7.5 Z M6.6,7.5 L8.4,7.5 L8.4,9.3 L6.6,9.3 L6.6,7.5 Z M10.2,14.7 L17.4,14.7 L17.4,16.5 L10.2,16.5 L10.2,14.7 Z M6.6,11.11 L8.4,11.11 L8.4,12.91 L6.6,12.91 L6.6,11.11 Z M6.6,14.7 L8.4,14.7 L8.4,16.5 L6.6,16.5 L6.6,14.7 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / radio button / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-630.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-radio-button-/-line\\\" transform=\\\"translate(180.000000, 0.000000)\\\"><path d=\\\"M12,3 C7.02943725,3 3,7.02943725 3,12 C3,16.9705627 7.02943725,21 12,21 C16.9705627,21 21,16.9705627 21,12 C21,7.02943725 16.9705627,3 12,3 Z M12,18.71 C8.29416933,18.71 5.29,15.7058307 5.29,12 C5.29,8.29416933 8.29416933,5.29 12,5.29 C15.7058307,5.29 18.71,8.29416933 18.71,12 L18.71,12 C18.6990169,15.7012718 15.7012718,18.6990169 12,18.71 L12,18.71 Z M15.66,12 C15.66,14.0213622 14.0213622,15.66 12,15.66 C9.97863782,15.66 8.34,14.0213622 8.34,12 C8.34,9.97863782 9.97863782,8.34 12,8.34 L12,8.34 C14.0123305,8.36163983 15.6383602,9.98766948 15.66,12 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / signature field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-495.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-signature-field\\\" transform=\\\"translate(45.000000, 1.000000)\\\"><rect id=\\\"line-field\\\" x=\\\"4.16\\\" y=\\\"19.33\\\" width=\\\"3.95\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"15.47\\\" y=\\\"19.33\\\" width=\\\"3.97\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"10.37\\\" y=\\\"19.33\\\" width=\\\"2.85\\\" height=\\\"1.84\\\"></rect><path d=\\\"M19.3,12.6 C18.8011172,12.4852642 18.2961435,12.7658051 18.13,13.25 C17.94,13.95 17.26,16.02 15.94,16.41 C16.01,16.02 16.14,15.53 16.23,15.19 C16.61,13.75 16.89,12.71 16.02,12.19 C15.6305081,11.9024916 15.1425194,11.7820074 14.6639713,11.8551971 C14.1854232,11.9283868 13.7557535,12.1892188 13.47,12.58 C13.2677271,12.8426752 13.096585,13.1279121 12.96,13.43 C12.5316039,14.4369418 11.8577559,15.3205077 11,16 C10.6861675,16.1561782 10.3479766,16.2576354 10,16.3 C9.63781935,16.2361941 9.29545661,16.0889781 9,15.87 C8.9247858,15.7926735 8.86082555,15.705149 8.81,15.61 C13.7,11 14,6.89 13.91,5.68 C13.972568,4.66130281 13.5588159,3.67125316 12.79,3 C12.5592553,2.84166356 12.2727216,2.78725842 12,2.85 C9.38,3.4 7.76,6.55 6.9,12.78 C6.9,12.84 6.9,12.92 6.9,13.01 C6.74597659,13.6647619 6.69203125,14.3390787 6.74,15.01 C6.5,15.23 6.24,15.45 5.98,15.66 C5.63702664,16.0240749 5.23032934,16.3223196 4.78,16.54 C4.7855838,16.3090848 4.86242608,16.0855436 5,15.9 C5.14271894,15.6990247 5.19676153,15.4483085 5.14951078,15.2063846 C5.10226003,14.9644608 4.95785172,14.7525045 4.75,14.62 C4.31340093,14.3574805 3.74923757,14.4651452 3.44,14.87 C2.70616674,15.8294173 2.7738487,17.1788265 3.6,18.06 C3.89826724,18.3062994 4.27318448,18.4407037 4.66,18.4400027 C5.67361336,18.3025207 6.59829516,17.7884119 7.25,17 L7.43,16.85 L7.65,17.11 C8.24513418,17.6589582 8.99672851,18.008537 9.8,18.11 C10.620381,18.105293 11.4234173,17.8733816 12.12,17.44 C13.0831903,16.7387801 13.8592846,15.8115878 14.38,14.74 C14,16.19 13.8,17.11 14.25,17.74 C14.4499118,18.0242398 14.7640794,18.2068954 15.11,18.24 C17.29,18.48 19.11,16.77 19.96,13.68 C20.0619294,13.2018163 19.7720279,12.727432 19.3,12.6 Z M11.88,4.87 C11.9748135,5.23881339 12.0152403,5.61949948 12,6 C12,6.89 11.71,9.58 8.81,12.94 C9.29,9.69 10.18,5.89 11.88,4.87 Z M21.11,10.63 C21.1553574,11.1765896 20.8605349,11.6949686 20.3675712,11.9353938 C19.8746076,12.175819 19.2846111,12.0889784 18.8818287,11.7167099 C18.4790464,11.3444414 18.3460901,10.7630983 18.5470152,10.2527586 C18.7479402,9.74241896 19.2415363,9.40775489 19.79,9.41 C20.4895514,9.38737528 21.0775571,9.93083513 21.11,10.63 L21.11,10.63 Z\\\" id=\\\"signature\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / text field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-450.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-text-field\\\" transform=\\\"translate(0.000000, 1.000000)\\\"><path d=\\\"M4.8,3.12 L6.6,3.12 L6.6,4.92 L4.8,4.92 L4.8,6.72 L3,6.72 L3,4.92 C3.00546481,3.92815987 3.80815987,3.12546481 4.8,3.12 L4.8,3.12 Z M15.6,3.12 L8.4,3.12 L8.4,4.92 L15.6,4.92 L15.6,3.12 Z M4.8,9 L3,9 L3,15.24 L4.8,15.24 L4.8,9 Z M8.4,21 L15.6,21 L15.6,19.2 L8.4,19.2 L8.4,21 Z M4.8,17.4 L3,17.4 L3,19.2 C3.00546481,20.1918401 3.80815987,20.9945352 4.8,21 L6.6,21 L6.6,19.2 L4.8,19.2 L4.8,17.4 Z M19.2,19.2 L17.4,19.2 L17.4,21 L19.2,21 C20.1918401,20.9945352 20.9945352,20.1918401 21,19.2 L21,17.4 L19.2,17.4 L19.2,19.2 Z M19.2,3.11 L17.4,3.11 L17.4,4.91 L19.2,4.91 L19.2,6.71 L21,6.71 L21,4.92 C20.9945352,3.92815987 20.1918401,3.12546481 19.2,3.12 L19.2,3.11 Z M19.2,15.2 L21,15.2 L21,9 L19.2,9 L19.2,15.2 Z M15.8,8 L8.2,8 C8.10312734,8.00633297 8.02185672,8.07541299 8,8.17 L8,9.69 C7.99726713,9.75006018 8.01923348,9.80862219 8.0607914,9.8520691 C8.10234931,9.89551601 8.15987771,9.92006214 8.22,9.92 L8.67,9.92 C8.79702549,9.92 8.9,9.81702549 8.9,9.69 L8.9,9.08 L11.27,9.08 L11.27,15.38 L10.44,15.38 C10.319066,15.3900236 10.2246415,15.4887401 10.22,15.61 L10.22,16.06 L10.22,16.06 C10.2225927,16.1183688 10.248297,16.173309 10.291444,16.2127042 C10.3345911,16.2520993 10.3916366,16.2727133 10.45,16.27 L13.6,16.27 C13.6583476,16.27 13.7143055,16.2468215 13.7555635,16.2055635 C13.7968215,16.1643055 13.82,16.1083476 13.82,16.05 L13.82,15.61 C13.8045398,15.4964187 13.7044578,15.4137422 13.59,15.42 L12.75,15.42 L12.75,9.12 L15.14,9.12 L15.14,9.73 C15.1399379,9.79012229 15.164484,9.84765069 15.2079309,9.8892086 C15.2513778,9.93076652 15.3099398,9.95273287 15.37,9.95 L15.82,9.95 C15.925681,9.93047497 16.0017885,9.83745465 16.0000309,9.73 L16.0000309,8.17 C15.9781433,8.07541299 15.8968727,8.00633297 15.8,8 L15.8,8 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - chat - line</title><path class=\\\"cls-1\\\" d=\\\"M16.39,6.12h-12a2,2,0,0,0-2,2v8a2,2,0,0,0,2,2h1v3.76L6.9,21l4.76-2.85h4.73a2,2,0,0,0,2-2v-8A2,2,0,0,0,16.39,6.12Zm0,10H11.11L7.39,18.35V16.12h-3v-8h12Zm6-12v9h-2v-9h-13v-2h13A2,2,0,0,1,22.39,4.12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 4H3C1.89543 4 1 4.89543 1 6V18C1 19.1046 1.89543 20 3 20H21C22.1046 20 23 19.1046 23 18V6C23 4.89543 22.1046 4 21 4ZM11 18H3V6H11V18ZM21 18H13V6H21V18Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.74 13.59H8.26L8.91 15H10.11L7.75 9.26999C7.64698 9.10354 7.46575 9.0016 7.27 8.99999H6.79C6.57724 8.99864 6.3843 9.12464 6.3 9.31999L3.89 15H5.09L5.74 13.59ZM7 10.6L7.71 12.39H6.28L7 10.6Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.5 13.2C19.5012 12.7008 19.2904 12.2247 18.92 11.89C19.1656 11.5797 19.2995 11.1957 19.3 10.8C19.2945 9.80816 18.4918 9.00547 17.5 9H14.5V15H17.7C18.6918 14.9945 19.4945 14.1918 19.5 13.2ZM15.7 10.2H17.5C17.8314 10.2 18.1 10.4686 18.1 10.8C18.1 11.1314 17.8314 11.4 17.5 11.4H15.7V10.2ZM15.7 12.6H17.7C18.0314 12.6 18.3 12.8686 18.3 13.2C18.3 13.5314 18.0314 13.8 17.7 13.8H15.7V12.6Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M3.16,19.22a.93.93,0,0,0,.79.43H18.17a1,1,0,0,0,.88-.57l2.84-6.64A1,1,0,0,0,21,11.11h-.95V7.32a1.9,1.9,0,0,0-1.9-1.9H12.39L10.22,3.73a.93.93,0,0,0-.58-.2H4.9A1.9,1.9,0,0,0,3,5.42V18.7H3A.88.88,0,0,0,3.16,19.22Zm14.39-1.47H5.39l2-4.74H19.58Zm.62-10.43v3.79H6.79a1,1,0,0,0-.87.58l-1,2.39V7.32H18.17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen - exit</title><path class=\\\"cls-1\\\" d=\\\"M9.5,2H7V7H2V9.5H9.5ZM7,22H9.5V14.5H2V17H7Zm15-7.5H14.5V22H17V17h5ZM22,7H17V2H14.5V9.5H22Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen</title><path class=\\\"cls-1\\\" d=\\\"M4.22,4.22H9.78V2H2V9.78H4.22ZM9.78,19.78H4.22V14.22H2V22H9.78ZM22,14.22H19.78v5.56H14.22V22H22ZM19.78,9.78H22V2H14.22V4.22h5.56Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.825 6.68301L15.85 2.83301L18.875 6.68301H16.675C17.0417 8.88301 18.9667 10.533 21.1667 10.533V11.9997C18.05 11.9997 15.4833 9.70801 15.1167 6.68301H12.825ZM13.8333 12.1831V19.7915C13.8333 20.5248 13.1916 21.1665 12.4583 21.1665H4.20825C3.47492 21.1665 2.83325 20.5248 2.83325 19.7915V8.79145C2.83325 8.05812 3.47492 7.41645 4.20825 7.41645H9.06659C9.15825 7.41645 9.15825 7.41645 9.24992 7.41645H9.34159C9.43325 7.41645 9.52492 7.50812 9.52492 7.59978L13.6499 11.7248C13.7416 11.8165 13.7416 11.8165 13.7416 11.9081V11.9998C13.8333 11.9998 13.8333 12.0915 13.8333 12.1831ZM11.9999 19.3331V12.9165H9.06659C8.60825 12.9165 8.33325 12.6414 8.33325 12.1831V9.24978H4.66659V19.3331H11.9999Z\\\" fill=\\\"#868E96\\\"></path><line x1=\\\"15\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"21\\\" x2=\\\"18\\\" y2=\\\"15\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - line</title><path class=\\\"cls-1\\\" d=\\\"M10.75,10.43v.7a4,4,0,0,0-.84.5l-.61-.36a.45.45,0,0,0-.61.16L7.82,13a.44.44,0,0,0,.17.6H8l.6.35a4.18,4.18,0,0,0,0,1L8,15.3a.44.44,0,0,0-.17.58l.89,1.53a.45.45,0,0,0,.61.16l.61-.36a4,4,0,0,0,.84.5v.71a.46.46,0,0,0,.45.44H13a.44.44,0,0,0,.44-.44v-.71a3.39,3.39,0,0,0,.84-.5l.62.36a.45.45,0,0,0,.61-.16l.89-1.53a.45.45,0,0,0-.17-.61l-.6-.35a4.18,4.18,0,0,0,0-1l.6-.35a.44.44,0,0,0,.17-.6h0l-.89-1.54a.45.45,0,0,0-.61-.16l-.62.36a3.39,3.39,0,0,0-.84-.5v-.7A.44.44,0,0,0,13,10H11.2A.45.45,0,0,0,10.75,10.43Zm1.35,2.22a1.78,1.78,0,1,1-1.77,1.79h0a1.78,1.78,0,0,1,1.75-1.78Zm7.84-4V8.6a.84.84,0,0,0-.2-.29l-6-6a1.15,1.15,0,0,0-.29-.2h-.1A.79.79,0,0,0,13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8.94A1,1,0,0,0,19.94,8.69ZM18,20H6V4h6l6,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - cover - line</title><path class=\\\"cls-1\\\" d=\\\"M2.13,14.13H1V12.59H2.13Zm0,1.18H1V16.5a1.12,1.12,0,0,0,1.13,1.12H3.31V16.5H2.13Zm0-5.44H1v1.54H2.13Zm0-2.37H3.31V6.38H2.13A1.12,1.12,0,0,0,1,7.5V8.68H2.13Zm4.2.83,1-1-.83-.83a.57.57,0,0,0-.16-.11l-.06,0-.14,0H4.49V7.5h1ZM8.88,16.5H7.69v1.12H8.88A1.12,1.12,0,0,0,10,16.5V15.32H8.88ZM4.49,17.62h2V16.5h-2Zm4.39-3.49H10V10.61L8.88,11.74Zm.55-4.62-1.3-1.3-1,1,1.3,1.3Zm11.57.8V16.5a1.12,1.12,0,0,1-1.13,1.12H13.12A1.12,1.12,0,0,1,12,16.5v-9a1.12,1.12,0,0,1,1.12-1.12h4l.14,0,.06,0a.57.57,0,0,1,.16.11l3.38,3.37a1,1,0,0,1,.11.17s0,0,0,.05a.4.4,0,0,1,0,.15ZM19.88,16.5V10.88H17.06a.57.57,0,0,1-.56-.57V7.5H13.12v9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - double page - line</title><path class=\\\"cls-1\\\" d=\\\"M11,10.13s0,0,0-.05a1,1,0,0,0-.11-.17L7.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,2,7.5v9a1.12,1.12,0,0,0,1.13,1.12H9.88A1.12,1.12,0,0,0,11,16.5V10.28A.4.4,0,0,0,11,10.13ZM3.13,16.5v-9H6.5v2.81a.57.57,0,0,0,.56.57H9.88V16.5ZM22,10.28a.4.4,0,0,0,0-.15s0,0,0-.05a1,1,0,0,0-.11-.17L18.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,13,7.5v9a1.12,1.12,0,0,0,1.13,1.12h6.74A1.12,1.12,0,0,0,22,16.5V10.28ZM14.13,16.5v-9H17.5v2.81a.57.57,0,0,0,.56.57h2.81V16.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - single page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,8.94a2,2,0,0,0,0-.26.36.36,0,0,0,0-.09,1.17,1.17,0,0,0-.19-.3l-6-6a1.17,1.17,0,0,0-.3-.19l-.09,0L13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V9S20,9,20,8.94ZM6,20V4h6V9a1,1,0,0,0,1,1h5V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - clockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22,7.83,18.67,12,15.33,7.83h2.43a5,5,0,0,0-4.93-4.16V2a6.64,6.64,0,0,1,6.61,5.83ZM14,12.2s0,0,0,.05V20.5A1.5,1.5,0,0,1,12.5,22h-9A1.5,1.5,0,0,1,2,20.5V8.5A1.5,1.5,0,0,1,3.5,7H8.8a.65.65,0,0,1,.19,0l.07,0a.86.86,0,0,1,.22.15l4.5,4.5a.66.66,0,0,1,.15.22s0,.05,0,.07A.65.65,0,0,1,14,12.2ZM12,20V13H8.75A.76.76,0,0,1,8,12.25V9H4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - counterclockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22.39,11.17H20.72a5,5,0,0,0-4.17-4.93V8.67L12.39,5.33,16.55,2V4.56a6.66,6.66,0,0,1,5.84,6.61Zm-8,1s0,0,0,.05V20.5a1.5,1.5,0,0,1-1.5,1.5h-9a1.5,1.5,0,0,1-1.5-1.5V8.5A1.5,1.5,0,0,1,3.89,7H9.18a.71.71,0,0,1,.2,0l.07,0a1.07,1.07,0,0,1,.22.15l4.5,4.5a.86.86,0,0,1,.15.22.19.19,0,0,0,0,.07A1.29,1.29,0,0,1,14.38,12.2Zm-2,7.8V13H9.14a.75.75,0,0,1-.75-.75V9h-4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - continuous page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2V9a2,2,0,0,1-2,2H6A2,2,0,0,1,4,9V2H6V9H18V2Zm0,17.94s0,0,0,.06v2H18V21H13a1,1,0,0,1-1-1V15H6v7H4V15a2,2,0,0,1,2-2h7.06l.26.05.09,0a1.17,1.17,0,0,1,.3.19l6,6a1.17,1.17,0,0,1,.19.3.36.36,0,0,1,0,.09A2,2,0,0,1,20,19.94Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - page by page - line</title><path class=\\\"cls-1\\\" d=\\\"M17,17V7.83s0,0,0,0a1.7,1.7,0,0,0,0-.22l0-.07a.82.82,0,0,0-.16-.25l-5-5a.82.82,0,0,0-.25-.16l-.08,0-.21,0H5.34A1.67,1.67,0,0,0,3.67,3.67V17a1.67,1.67,0,0,0,1.67,1.67h10A1.67,1.67,0,0,0,17,17ZM5.67,4h4.66V7.83a.84.84,0,0,0,.84.83H15v8H5.67ZM20.33,9.51V20.33A1.67,1.67,0,0,1,18.66,22H11.17V20h7.16V9.51Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / page manipulation / reflow / reader</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"D---view\\\" transform=\\\"translate(-75.000000, -147.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-Copy\\\" transform=\\\"translate(63.000000, 37.000000)\\\"><g id=\\\"page-transitions\\\" transform=\\\"translate(0.000000, 10.000000)\\\"><g id=\\\"page-by-page-copy\\\" transform=\\\"translate(0.000000, 96.000000)\\\"><g id=\\\"icon-/-page-manipulation-/-reflow-/-reader\\\" transform=\\\"translate(12.000000, 4.000000)\\\"><path d=\\\"M17.33,3 L5.67,3 C4.74768447,3 4,3.74768447 4,4.67 L4,19.67 C4,20.5923155 4.74768447,21.34 5.67,21.34 L17.33,21.34 C18.2523155,21.34 19,20.5923155 19,19.67 L19,4.67 C19,3.74768447 18.2523155,3 17.33,3 Z M5.67,19.67 L5.67,4.67 L17.33,4.67 L17.33,19.67 L5.67,19.67 Z\\\" id=\\\"page\\\"></path><path d=\\\"M13.66,15 L13.66,16.8 L7.33,16.8 L7.33,15 L13.66,15 Z M15.67,10.83 L15.67,12.63 L7.34,12.63 L7.34,10.83 L15.67,10.83 Z M15.67,6.78 L15.67,8.58 L7.34,8.58 L7.34,6.78 L15.67,6.78 Z\\\" id=\\\"text-2\\\"></path></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-header-pan20</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-369.000000, -78.000000)\\\"><g transform=\\\"translate(-22.000000, 0.000000)\\\"><g transform=\\\"translate(391.000000, 78.000000)\\\"><rect fill=\\\"none\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"20\\\" height=\\\"20\\\"></rect><path d=\\\"M4.84116789,10.6404137 C4.46186271,10.6404137 3.96297997,10.9126703 3.804829,11.1798615 C3.56953121,11.5774827 3.81897258,11.930783 3.98998135,12.1055337 L4.90417112,13.043869 C5.82350401,13.9872696 6.74283689,14.9294038 7.66345556,15.8690054 C9.43397498,17.6696974 11.5349399,18.024264 13.7413389,16.8921834 C15.5478601,15.9639786 16.5301962,14.4798639 16.66006,12.4816276 C16.7089197,11.7281735 16.7024908,10.9506595 16.6947761,10.1984717 L16.689633,9.37283798 C16.689633,9.37283798 16.6909188,7.17705742 16.6857756,6.07663452 C16.6844899,5.86516085 16.6214866,5.70560586 16.4993375,5.60176848 C16.3797599,5.49919742 16.1971792,5.44474611 15.9721676,5.44474611 L15.9631671,5.44474611 C15.5607179,5.44601242 15.1454109,5.73346466 15.1454109,6.20959701 L15.1441251,9.50833309 C15.1441251,9.63876296 15.1454109,9.78945378 15.0618352,9.92494889 C14.8496814,10.2630535 14.5938112,10.4302064 14.2955101,10.4302064 C13.8622022,10.4302064 13.5960457,10.0515798 13.5021837,9.88949223 C13.4288942,9.77045914 13.43018,9.63496403 13.4314658,9.54505606 L13.4314658,8.23949103 C13.4327516,6.96431743 13.4327516,5.68661122 13.4288942,4.41017131 C13.4327516,4.10372442 13.1254501,3.7656198 12.6239958,3.74789147 C12.3899838,3.75675564 12.2151177,3.84666361 12.1199699,3.9391042 C11.9605332,4.09359395 11.8923868,4.29493715 11.8949584,4.42663333 C11.9232456,5.8993512 11.9219598,7.41765621 11.9193882,8.90050456 L11.9193882,9.48427321 C11.9193882,9.61090415 11.9103878,9.74260033 11.8460987,9.86923128 C11.7830955,9.9933296 11.5426546,10.3985486 11.0939173,10.3985486 C10.6541804,10.3985486 10.3725946,10.0249873 10.3083056,9.89329116 C10.2337303,9.7375351 10.2337303,9.5767138 10.2337303,9.44881654 L10.2337303,7.43031931 C10.2337303,6.08423238 10.2337303,4.74067807 10.229873,3.39585745 C10.2388734,3.22743829 10.1758702,3.06914962 10.0562926,2.94378498 C9.89557009,2.77663214 9.65770074,2.68419155 9.38768689,2.68419155 C8.82708669,2.68419155 8.52621411,3.11726937 8.52492833,3.4300478 C8.52364255,4.64950379 8.52492833,5.78791597 8.52621411,6.94025756 L8.52878567,9.50200154 L8.52492833,10.8506211 C8.72551005,11.0063771 9.30539695,11.4470528 9.70913195,11.754766 C10.0640073,12.0257562 10.381595,12.2650887 10.487029,12.3511978 C10.6593236,12.4904918 10.6914681,12.8159333 10.6708956,12.9995482 C10.6400369,13.2756037 10.4960295,13.4896099 10.2671606,13.6048441 C10.0112903,13.7327414 9.60755531,13.7276761 9.41725983,13.5947136 C9.09452899,13.362979 8.38092094,12.8627868 7.84475058,12.4866929 C7.4783032,12.2296321 7.19414576,12.0308215 7.1658586,12.0080279 C6.73897955,11.7142441 5.72449892,11.0127087 5.56377639,10.9000072 C5.36319467,10.7936372 5.18832856,10.7163923 5.02117712,10.6657399 C4.96588857,10.6480116 4.9054569,10.6404137 4.84116789,10.6404137 M11.253354,19.2323232 C9.51112179,19.2323232 7.84475058,18.4750702 6.43424963,17.0403416 C5.66792459,16.2577624 4.90288534,15.4726505 4.13784608,14.688805 L2.75691808,13.2705384 C1.9353045,12.429709 1.76686728,11.2748347 2.32875326,10.3301679 C2.87392409,9.41335988 4.28442503,8.68396565 5.52134564,9.05499431 C5.80678886,9.14110335 6.09223208,9.26520168 6.42139183,9.44501762 L6.81869793,9.71220891 L6.81612637,3.42751519 C6.81741215,2.25997789 7.80103405,1 9.38768689,1 C10.1334394,1 10.8136172,1.27858808 11.2996421,1.78764447 C11.4359348,1.92820482 11.5542266,2.0877598 11.6493744,2.25617896 C11.9631048,2.12321647 12.3051223,2.05230314 12.6805701,2.06496623 C13.851916,2.10802075 14.8355379,2.89946415 15.0798361,3.9125117 C15.3575646,3.81373956 15.6532941,3.76308719 15.9554525,3.76182088 C16.6729178,3.76182088 17.2798061,3.99228919 17.7259719,4.42663333 C18.1605656,4.8521133 18.3920061,5.41941993 18.3945776,6.06903666 C18.4010065,7.17199218 18.398435,9.37410429 18.398435,9.37410429 L18.4035781,10.1883413 C18.4112928,10.9671216 18.4190074,11.7724944 18.3662905,12.5879976 C18.2004248,15.1776004 16.8734996,17.1821683 14.5320937,18.3851622 C13.4353231,18.9486699 12.3321237,19.2323232 11.253354,19.2323232\\\"></path></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - print - line</title><path class=\\\"cls-1\\\" d=\\\"M20,6H18V2H6V6H4A2,2,0,0,0,2,8v9a2,2,0,0,0,2,2H6v3H18V19h2a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM8,4h8V6H8Zm8,16H8V16h8Zm4-3H18V14H6v3H4V8H20Zm-4-7h2v2H16Zm-3,0h2v2H13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - search</title><path class=\\\"cls-1\\\" d=\\\"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - select - line</title><path class=\\\"cls-1\\\" d=\\\"M21.56,15.57l-2.12-2.49L18.33,11.7l1.38-1.11,1.37-1.11a.81.81,0,0,0,.34-.84c-.08-.39-.32-.54-.68-.7l-11-2.7c-.62-.06-1.17.38-1.1.89V17.7a.8.8,0,0,0,.54.81.72.72,0,0,0,.9-.15l1.38-1.11,1.37-1.11,1.67,2.06L16.05,20a1.67,1.67,0,0,0,2.49.27l2.75-2.22A1.66,1.66,0,0,0,21.56,15.57Zm-3.84,3-1.46-1.67L14,14.13l-.67-.7-1,.78-1.79,1.44v-8l7.73,1.71-1.66,1.46-1,.77,2.21,2.76,2.14,2.36ZM5.37,5.24V18.86h.25a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1h.38V5.24H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1H5.62a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - settings - line</title><path class=\\\"cls-1\\\" d=\\\"M12,8a4,4,0,1,0,4,4A4,4,0,0,0,12,8Zm0,6a2,2,0,1,1,2-2A2,2,0,0,1,12,14Zm8.42-.6-.5-.29a7.74,7.74,0,0,0,0-2.22l.5-.29a2,2,0,0,0,.73-2.74l-1-1.72a2.06,2.06,0,0,0-2.73-.74l-.53.31A8.07,8.07,0,0,0,15,4.6V4a2,2,0,0,0-2-2H11A2,2,0,0,0,9,4v.6A8.07,8.07,0,0,0,7.1,5.71L6.57,5.4a2.07,2.07,0,0,0-2.73.73l-1,1.73a2,2,0,0,0,.73,2.74l.5.29a7.74,7.74,0,0,0,0,2.22l-.5.29a2,2,0,0,0-.73,2.74l1,1.73a2.05,2.05,0,0,0,2.72.73l.53-.31A8.07,8.07,0,0,0,9,19.4V20a2,2,0,0,0,2,2h2a2,2,0,0,0,2-2v-.6a8.07,8.07,0,0,0,1.9-1.11l.53.31a2.07,2.07,0,0,0,2.73-.73l1-1.73A2,2,0,0,0,20.42,13.4Zm-2.59-2.78A5.86,5.86,0,0,1,18,12a5.92,5.92,0,0,1-.17,1.38,1,1,0,0,0,.47,1.11l1.12.64-1,1.73-1.15-.66a1,1,0,0,0-1.19.15,6.05,6.05,0,0,1-2.38,1.39,1,1,0,0,0-.71,1V20H11V18.7a1,1,0,0,0-.71-1,6.05,6.05,0,0,1-2.38-1.39,1,1,0,0,0-.69-.28,1,1,0,0,0-.5.13l-1.14.67-1-1.73,1.12-.65a1,1,0,0,0,.47-1.11A5.92,5.92,0,0,1,6,12a5.86,5.86,0,0,1,.17-1.38A1,1,0,0,0,5.7,9.51L4.58,8.86l1-1.73,1.15.67a1,1,0,0,0,1.19-.15,6.05,6.05,0,0,1,2.38-1.39,1,1,0,0,0,.71-1V4h2V5.3a1,1,0,0,0,.71,1,6.05,6.05,0,0,1,2.38,1.39,1,1,0,0,0,1.19.15l1.14-.66,1,1.73-1.12.64A1,1,0,0,0,17.83,10.62Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - sidebar - line</title><path class=\\\"cls-1\\\" d=\\\"M19.78,2H4.22A2.23,2.23,0,0,0,2,4.22V19.78A2.23,2.23,0,0,0,4.22,22H19.78A2.23,2.23,0,0,0,22,19.78V4.22A2.23,2.23,0,0,0,19.78,2ZM7.56,19.78H4.22V4.22H7.56Zm2.22,0V4.22h10V19.78Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to page</title><path class=\\\"cls-1\\\" d=\\\"M9.76,13.06l-5,5L3.07,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.71A.4.4,0,0,0,8,21.32L6.32,19.64l5-5a.4.4,0,0,0,0-.57l-1-1A.39.39,0,0,0,9.76,13.06Zm7-10.38,1.67,1.68-5,5a.4.4,0,0,0,0,.57l1,1A.4.4,0,0,0,15,11l5-5L21.71,7.6a.4.4,0,0,0,.68-.28V2.4A.4.4,0,0,0,22,2H17.07A.4.4,0,0,0,16.79,2.68Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to width</title><path class=\\\"cls-1\\\" d=\\\"M5.93,4.36,9.17,7.6a.39.39,0,0,1,0,.56l-1,1a.39.39,0,0,1-.56,0L4.36,5.93,2.68,7.6A.4.4,0,0,1,2,7.32V2.4A.4.4,0,0,1,2.4,2H7.32a.4.4,0,0,1,.28.68ZM7.6,14.83,4.36,18.07,2.68,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.32a.4.4,0,0,0,.28-.68L5.93,19.64,9.17,16.4a.39.39,0,0,0,0-.56l-1-1A.39.39,0,0,0,7.6,14.83ZM16.4,2.68l1.67,1.68L14.83,7.6a.39.39,0,0,0,0,.56l1,1a.39.39,0,0,0,.56,0l3.24-3.24L21.32,7.6A.4.4,0,0,0,22,7.32V2.4a.4.4,0,0,0-.4-.4H16.68A.4.4,0,0,0,16.4,2.68Zm-.56,12.15-1,1a.39.39,0,0,0,0,.56l3.24,3.24L16.4,21.32a.4.4,0,0,0,.28.68H21.6a.4.4,0,0,0,.4-.4V16.68a.4.4,0,0,0-.68-.28l-1.68,1.67L16.4,14.83A.39.39,0,0,0,15.84,14.83Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - in - line</title><path class=\\\"cls-1\\\" d=\\\"M13,11h4v2H13v4H11V13H7V11h4V7h2Zm9,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - marquee</title><path class=\\\"cls-1\\\" d=\\\"M3.05,18.84H6.21v-2.1H4.11V14.63H2v3.16A1,1,0,0,0,3.05,18.84ZM18.84,3.05a1,1,0,0,0-1.05-1H14.63V4.11h2.11v2.1h2.1ZM4.11,4.11h2.1V2H3.05a1,1,0,0,0-1,1V6.21H4.11ZM2,8.32H4.11v4.21H2Zm14.74,0h2.1v3.15h-2.1ZM22,21l-1.81-1.82a3.53,3.53,0,0,0,.59-1.95,3.64,3.64,0,1,0-1.65,3L21,22Zm-6.9-3.77a2.08,2.08,0,1,1,2.08,2.08A2.08,2.08,0,0,1,15.1,17.18ZM8.32,2h4.21V4.11H8.32Zm0,14.74h3.15v2.1H8.32Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - out - line</title><path class=\\\"cls-1\\\" d=\\\"M7,11H17v2H7Zm15,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.1502 3H4.85016C3.75016 3 2.8335 3.91667 2.8335 5.01667V19.3167C2.8335 20.4167 3.75016 21.3333 4.85016 21.3333H19.1502C20.2502 21.3333 21.1668 20.4167 21.1668 19.3167V5.01667C21.1668 3.91667 20.2502 3 19.1502 3ZM4.85016 19.3167V5.01667H19.1502V19.3167H4.85016Z\\\" fill=\\\"#008000\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6502 8.59167L18.1418 15.7417H5.8585L8.70016 11.6167L10.2585 14L13.6502 8.59167Z\\\" fill=\\\"#008000\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M8.66671 11.3333V7.33325H7.33337V11.3333H8.66671Z\\\"></path><path d=\\\"M8.66671 5.99992V4.66659H7.33337V5.99992H8.66671Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.33337 7.99992C1.33337 4.32392 4.32404 1.33325 8.00004 1.33325C11.676 1.33325 14.6667 4.32392 14.6667 7.99992C14.6667 11.6759 11.676 14.6666 8.00004 14.6666C4.32404 14.6666 1.33337 11.6759 1.33337 7.99992ZM2.66671 7.99992C2.66671 10.9406 5.05937 13.3333 8.00004 13.3333C10.9407 13.3333 13.3334 10.9406 13.3334 7.99992C13.3334 5.05925 10.9407 2.66659 8.00004 2.66659C5.05937 2.66659 2.66671 5.05925 2.66671 7.99992Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 6.7H3C2.83431 6.7 2.7 6.83431 2.7 7V17C2.7 17.1657 2.83431 17.3 3 17.3H21C21.1657 17.3 21.3 17.1657 21.3 17V7C21.3 6.83431 21.1657 6.7 21 6.7ZM3 5C1.89543 5 1 5.89543 1 7V17C1 18.1046 1.89543 19 3 19H21C22.1046 19 23 18.1046 23 17V7C23 5.89543 22.1046 5 21 5H3Z\\\" fill=\\\"#868E96\\\"></path><rect x=\\\"5\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"5\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"7\\\" y=\\\"14.3\\\" width=\\\"10\\\" height=\\\"1.7\\\" fill=\\\"#868E96\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 160 120\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect width=\\\"160\\\" height=\\\"120\\\" fill=\\\"white\\\"></rect><g clip-path=\\\"url(#clip0_954_17345)\\\"><path d=\\\"M24 24H160V120H24V24Z\\\" fill=\\\"#E7EBEE\\\"></path><mask id=\\\"path-5-inside-2_954_17345\\\" fill=\\\"white\\\"><path d=\\\"M24 24H160V40H24V24Z\\\"></path></mask><path d=\\\"M24 24H160V40H24V24Z\\\" fill=\\\"#F8F9FA\\\"></path><path d=\\\"M24 24H160H24ZM160 41H24V39H160V41ZM24 40V24V40ZM160 24V40V24Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-5-inside-2_954_17345)\\\"></path><mask id=\\\"path-7-inside-3_954_17345\\\" fill=\\\"white\\\"><path d=\\\"M24 40H72V120H24V40Z\\\"></path></mask><path d=\\\"M24 40H72V120H24V40Z\\\" fill=\\\"#F8F9FA\\\"></path><path d=\\\"M24 40H72H24ZM72 120H24H72ZM24 120V40V120ZM73 40V120H71V40H73Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-7-inside-3_954_17345)\\\"></path><rect x=\\\"29\\\" y=\\\"29.5\\\" width=\\\"6\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect><rect x=\\\"39\\\" y=\\\"29.5\\\" width=\\\"6\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect><rect x=\\\"49\\\" y=\\\"29.5\\\" width=\\\"16\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect></g><path d=\\\"M23 28C23 25.2386 25.2386 23 28 23H160V25H28C26.3431 25 25 26.3431 25 28H23ZM160 120H24H160ZM23 120V28C23 25.2386 25.2386 23 28 23V25C26.3431 25 25 26.3431 25 28V120H23ZM160 24V120V24Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-2-inside-1_954_17345)\\\"></path><defs><clipPath id=\\\"clip0_954_17345\\\"><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V120H24V28Z\\\" fill=\\\"white\\\"></path></clipPath></defs></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 3\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.5 0C0.223858 0 -0.00436733 0.225538 0.0411288 0.497907C0.278305 1.91779 1.51277 3 3 3C4.04349 3 4.96254 2.46725 5.5 1.6589C6.03746 2.46725 6.95651 3 8 3C9.04349 3 9.96254 2.46724 10.5 1.65889C11.0375 2.46724 11.9565 3 13 3C14.0435 3 14.9625 2.46724 15.5 1.65889C16.0375 2.46724 16.9565 3 18 3C19.0435 3 19.9625 2.46724 20.5 1.65889C21.0375 2.46724 21.9565 3 23 3C24.0435 3 24.9625 2.46724 25.5 1.65889C26.0375 2.46724 26.9565 3 28 3C29.0435 3 29.9625 2.46724 30.5 1.65889C31.0375 2.46724 31.9565 3 33 3C34.0435 3 34.9625 2.46724 35.5 1.65889C36.0375 2.46724 36.9565 3 38 3C39.4872 3 40.7217 1.91779 40.9589 0.497906C41.0044 0.225537 40.7761 0 40.5 0C40.2239 0 40.0064 0.227334 39.9383 0.49494C39.718 1.36012 38.9337 2 38 2C37.0663 2 36.282 1.36012 36.0617 0.494941C35.9936 0.227334 35.7761 0 35.5 0C35.2239 0 35.0064 0.227334 34.9383 0.49494C34.718 1.36012 33.9337 2 33 2C32.0663 2 31.282 1.36012 31.0617 0.494941C30.9936 0.227334 30.7761 0 30.5 0C30.2239 0 30.0064 0.227334 29.9383 0.494941C29.718 1.36012 28.9337 2 28 2C27.0663 2 26.282 1.36012 26.0617 0.49494C25.9936 0.227334 25.7761 0 25.5 0C25.2239 0 25.0064 0.227334 24.9383 0.49494C24.718 1.36012 23.9337 2 23 2C22.0663 2 21.282 1.36012 21.0617 0.494941C20.9936 0.227334 20.7761 0 20.5 0C20.2239 0 20.0064 0.227334 19.9383 0.494941C19.718 1.36012 18.9337 2 18 2C17.0663 2 16.282 1.36012 16.0617 0.49494C15.9936 0.227334 15.7761 0 15.5 0C15.2239 0 15.0064 0.227334 14.9383 0.49494C14.718 1.36012 13.9337 2 13 2C12.0663 2 11.282 1.36012 11.0617 0.494941C10.9936 0.227334 10.7761 0 10.5 0C10.2239 0 10.0064 0.227334 9.93829 0.494941C9.71803 1.36012 8.93374 2 8 2C7.06626 2 6.28197 1.36012 6.06171 0.49494C5.99359 0.227334 5.77614 0 5.5 0C5.22386 0 5.00641 0.227334 4.93829 0.494941C4.71803 1.36012 3.93374 2 3 2C2.06626 2 1.28197 1.36012 1.06171 0.49494C0.993587 0.227334 0.776142 0 0.5 0Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.02273 1H0V0H1.02273V1ZM17.3864 1H5.11364V0H17.3864V1ZM23.5227 1H21.4773V0H23.5227V1ZM39.8864 1H27.6136V0H39.8864V1ZM45 1H43.9773V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.875 1H0V0H1.875V1ZM9.375 1H5.625V0H9.375V1ZM16.875 1H13.125V0H16.875V1ZM24.375 1H20.625V0H24.375V1ZM31.875 1H28.125V0H31.875V1ZM39.375 1H35.625V0H39.375V1ZM45 1H43.125V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.25 1H0V0H1.25V1ZM16.25 1H6.25V0H16.25V1ZM23.75 1H21.25V0H23.75V1ZM38.75 1H28.75V0H38.75V1ZM45 1H43.75V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.8125 1H0V0H2.8125V1ZM14.0625 1H8.4375V0H14.0625V1ZM25.3125 1H19.6875V0H25.3125V1ZM36.5625 1H30.9375V0H36.5625V1ZM45 1H42.1875V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.21429 1H0V0H3.21429V1ZM16.0714 1H6.42857V0H16.0714V1ZM25.7143 1H19.2857V0H25.7143V1ZM38.5714 1H28.9286V0H38.5714V1ZM45 1H41.7857V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7.5 1H0V0H7.5V1ZM30 1H15V0H30V1ZM45 1H37.5V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.6667 2.5H0V3.5H26.6667L30 6V0L26.6667 2.5ZM29 2V4L27.6667 3L29 2Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.8333 3.5H0V2.5H25.8333V0L30 3L25.8333 6L25.8333 3.5ZM26.8333 4.04777V1.95223L28.2886 3L26.8333 4.04777Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29.2929 0L30 0.707092L27.7071 3L30 5.29291L29.2929 6L27 3.70709L26.9948 3.71228L26.7825 3.5H0V2.5H26.7825L26.9948 2.28772L27 2.29291L29.2929 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M27.996 0L27.2889 0.707092L29.0818 2.5H0.995972V3.5H29.0777L27.2848 5.29291L27.9919 6L30.2869 3.70508L30.2929 3.71112L31 3.00403L30.994 2.99799L30.996 2.99597L30.2889 2.28888L30.2869 2.29089L27.996 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29 0H30V6H29V3.5H0V2.5H29V0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.03 3.30107L25.9689 3L26.03 2.69893C26.1689 2.01468 26.7755 1.5 27.5 1.5C28.3284 1.5 29 2.17157 29 3C29 3.82843 28.3284 4.5 27.5 4.5C26.7755 4.5 26.1689 3.98532 26.03 3.30107ZM25.05 3.5C25.2816 4.64112 26.2905 5.5 27.5 5.5C28.8807 5.5 30 4.38071 30 3C30 1.61929 28.8807 0.5 27.5 0.5C26.2905 0.5 25.2816 1.35888 25.05 2.5H0V3.5H25.05Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24.5 3.5H0V2.5H24.5L27 0L30 3L27 6L24.5 3.5ZM27 4.58579L25.4142 3L27 1.41421L28.5858 3L27 4.58579Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M26.004 5.49262L26.8701 6L29.9951 0.50739L29.129 5.09238e-06L27.7067 2.5L0.00402893 2.5L0.00402876 3.5L27.1377 3.5L26.004 5.49262Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25 3.5H0V2.5H25V0.5H30V5.5H25V3.5ZM26 4.5V1.5H29V4.5H26Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line y1=\\\"1\\\" x2=\\\"30\\\" y2=\\\"1\\\" stroke=\\\"#485056\\\"></line></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 1\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M45 1H0V0H45V1Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.33736 2.5H30.004V3.5H3.33736L0.00402832 6V0L3.33736 2.5ZM1.00403 2V4L2.33736 3L1.00403 2Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.16667 3.5H30V2.5H4.16667V0L0 3L4.16667 6L4.16667 3.5ZM3.16667 4.04777V1.95223L1.71144 3L3.16667 4.04777Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.711136 0L0.00402832 0.707092L2.29695 3L0.00402832 5.29291L0.711136 6L3.00404 3.70709L3.00923 3.71228L3.22152 3.5H30.004V2.5H3.22152L3.00923 2.28772L3.00404 2.29291L0.711136 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.00403 0L3.71114 0.707092L1.91823 2.5H30.004V3.5H1.92226L3.71516 5.29291L3.00806 6L0.713135 3.70508L0.707108 3.71112L0 3.00403L0.00604248 2.99799L0.00402832 2.99597L0.711136 2.28888L0.713135 2.29089L3.00403 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.00403 0H0.00402832V6H1.00403V3.5H30.004V2.5H1.00403V0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.96998 3.30107L4.03109 3L3.96998 2.69893C3.83108 2.01468 3.22452 1.5 2.5 1.5C1.67157 1.5 1 2.17157 1 3C1 3.82843 1.67157 4.5 2.5 4.5C3.22452 4.5 3.83108 3.98532 3.96998 3.30107ZM4.94999 3.5C4.71836 4.64112 3.70948 5.5 2.5 5.5C1.11929 5.5 0 4.38071 0 3C0 1.61929 1.11929 0.5 2.5 0.5C3.70948 0.5 4.71836 1.35888 4.94999 2.5H30V3.5H4.94999Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.50403 3.5H30.004V2.5H5.50403L3.00403 0L0.00402832 3L3.00403 6L5.50403 3.5ZM3.00403 4.58579L4.58981 3L3.00403 1.41421L1.41824 3L3.00403 4.58579Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.870054 6L0.00402828 5.49261L3.12903 -2.73196e-07L3.99505 0.507385L2.86555 2.49264L30.004 2.49264L30.004 3.50741L2.2882 3.50742L0.870054 6Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.00403 3.5H30.004V2.5H5.00403V0.5H0.00402832V5.5H5.00403V3.5ZM4.00403 4.5V1.5H1.00403V4.5H4.00403Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 15 15\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-lock</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-lock\\\"><rect id=\\\"15-x-15\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"15\\\" height=\\\"15\\\"></rect><path d=\\\"M13.5,7.5 C13.5,6.67275 12.82725,6 12,6 L11.25,6 L11.25,3.75 C11.25,1.68225 9.56775,0 7.5,0 C5.43225,0 3.75,1.68225 3.75,3.75 L3.75,6 L3,6 C2.17275,6 1.5,6.67275 1.5,7.5 L1.5,13.5 C1.5,14.32725 2.17275,15 3,15 L12,15 C12.82725,15 13.5,14.32725 13.5,13.5 L13.5,7.5 Z M5.25,3.75 C5.25,2.5095 6.2595,1.5 7.5,1.5 C8.7405,1.5 9.75,2.5095 9.75,3.75 L9.75,6 L5.25,6 L5.25,3.75 Z\\\" id=\\\"Shape\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11 6H9V9H6V11H9V14H11V11H14V9H11V6Z\\\"></path><path d=\\\"M10 2C5.589 2 2 5.589 2 10C2 14.411 5.589 18 10 18C11.846 18 13.543 17.365 14.897 16.312L19.293 20.708L20.707 19.294L16.311 14.898C17.365 13.543 18 11.846 18 10C18 5.589 14.411 2 10 2ZM10 16C6.691 16 4 13.309 4 10C4 6.691 6.691 4 10 4C13.309 4 16 6.691 16 10C16 13.309 13.309 16 10 16Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add</title><path class=\\\"cls-1\\\" d=\\\"M13.6,6.94H9.06V2.4a.4.4,0,0,0-.4-.4H7.34a.4.4,0,0,0-.4.4V6.94H2.4a.4.4,0,0,0-.4.4V8.66a.4.4,0,0,0,.4.4H6.94V13.6a.4.4,0,0,0,.4.4H8.66a.4.4,0,0,0,.4-.4V9.06H13.6a.4.4,0,0,0,.4-.4V7.34A.4.4,0,0,0,13.6,6.94Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.84167 19.15H20.1583V21.1667H3.84167V19.15ZM6.86667 15.025H17.0417V17.0417H6.86667V15.025ZM3.84167 10.9917H20.1583V13.0084H3.84167V10.9917ZM3.84167 2.83337H20.1583V4.85004H3.84167V2.83337ZM6.86667 6.86671H17.0417V8.88337H6.86667V6.86671Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.84167 19.15H20.1583V21.1667H3.84167V19.15ZM3.84167 15.025H15.025V17.0417H3.84167V15.025ZM3.84167 10.9917H20.1583V13.0084H3.84167V10.9917ZM3.84167 2.83337H20.1583V4.85004H3.84167V2.83337ZM3.84167 6.86671H15.025V8.88337H3.84167V6.86671Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 19.3167H20.3167V21.3333H4V19.3167ZM9.13333 15.1917H20.3167V17.2083H9.13333V15.1917ZM4 11.1583H20.3167V13.175H4V11.1583ZM4 3H20.3167V5.01667H4V3ZM9.13333 7.03333H20.3167V9.05H9.13333V7.03333Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -1 22 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.841675 17.15H17.1583V19.1667H0.841675V17.15ZM0.841675 13.025H17.025V15.0417H0.841675V13.025ZM0.841675 8.99171H17.1583V11.0084H0.841675V8.99171ZM0.841675 0.833374H17.1583V2.85004H0.841675V0.833374ZM0.841675 4.86671H17.025V6.88337H0.841675V4.86671Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - centre align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm3.33-4.45H17.56v2.23H6.44ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM6.44,6.44H17.56V8.67H6.44Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>Artboard 270</title><g><path class=\\\"cls-1\\\" d=\\\"M9.22,15,5.57,11.38,4,13l5.22,5.22L20,7.4,18.43,5.83Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - left align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm0-4.45H15.33v2.23H3.11Zm0-4.44H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11Zm0,4.44H15.33V8.67H3.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - right align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm5.56-4.45H20.89v2.23H8.67ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM8.67,6.44H20.89V8.67H8.67Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add style - line</title><path class=\\\"cls-1\\\" d=\\\"M9,14.5A1.5,1.5,0,1,1,7.5,13,1.5,1.5,0,0,1,9,14.5ZM10.5,6A1.5,1.5,0,1,0,12,7.5,1.5,1.5,0,0,0,10.5,6Zm-3,3A1.5,1.5,0,1,0,9,10.5,1.5,1.5,0,0,0,7.5,9Zm7.2,6.36a2,2,0,0,0-.09,1.92l.2.41A3,3,0,0,1,12.14,22H12a9.74,9.74,0,0,1-2.62-.36A10,10,0,0,1,4.46,5.43,10,10,0,0,1,22,12.14a3,3,0,0,1-3,3,3.09,3.09,0,0,1-1.3-.3l-.41-.2A2,2,0,0,0,14.7,15.36Zm3.44-2.55.42.19A1,1,0,0,0,20,12.11a8,8,0,0,0-6.87-8A7.24,7.24,0,0,0,12,4,8,8,0,0,0,6,6.74a7.92,7.92,0,0,0-1.89,6.39A8.05,8.05,0,0,0,9.9,19.72,8.42,8.42,0,0,0,12,20h.11a1,1,0,0,0,.84-.48,1,1,0,0,0,.05-1l-.2-.42A3.92,3.92,0,0,1,13,14.3,4.05,4.05,0,0,1,18.14,12.81ZM14.5,6A1.5,1.5,0,1,0,16,7.5,1.5,1.5,0,0,0,14.5,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - text underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\" height: 13.86px; width: 18.39px; \\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.2337 6.93C3.2337 7.5932 2.69607 8.13083 2.03286 8.13083C1.36966 8.13083 0.832031 7.5932 0.832031 6.93C0.832031 6.2668 1.36966 5.72917 2.03286 5.72917C2.69607 5.72917 3.2337 6.2668 3.2337 6.93ZM2.03286 0C1.36966 0 0.832031 0.537631 0.832031 1.20083C0.832031 1.86404 1.36966 2.40167 2.03286 2.40167C2.69607 2.40167 3.2337 1.86404 3.2337 1.20083C3.2337 0.537631 2.69607 0 2.03286 0ZM2.03286 11.4583C1.36966 11.4583 0.832031 11.996 0.832031 12.6592C0.832031 13.3224 1.36966 13.86 2.03286 13.86C2.69607 13.86 3.2337 13.3224 3.2337 12.6592C3.2337 11.996 2.69607 11.4583 2.03286 11.4583ZM5.47036 8.07583H19.2204V5.78417H5.47036V8.07583ZM5.47036 0.055V2.34667H19.2204V0.055H5.47036ZM5.47036 13.805H19.2204V11.5133H5.47036V13.805Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\" height: 20px; width: 20px; \\\"><rect width=\\\"18\\\" height=\\\"18\\\" rx=\\\"9.5\\\" style=\\\" stroke: currentColor; stroke-width: 1px; stroke-linejoin: round; \\\" x=\\\"1\\\" y=\\\"1\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 17\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\" height: 17px; width: 20px; \\\"><path d=\\\"M5 4L2.5 0L0 4H1.75V13H0L2.5 17L5 13H3.25V4H5Z\\\"></path><path d=\\\"M20 2.5H7V4.5H20V2.5Z\\\"></path><path d=\\\"M20 8H7V10H20V8Z\\\"></path><path d=\\\"M20 13.5H7V15.5H20V13.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14.7333 12.9651L11.4 10.3937C11.2352 10.2666 11 10.3875 11 10.5994V15.7423C11 15.9542 11.2352 16.0751 11.4 15.948L14.7333 13.3765C14.8667 13.2737 14.8667 13.068 14.7333 12.9651Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 14.1994H7V12.1423H11V14.1994Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18.8334\\\" y1=\\\"13.1709\\\" x2=\\\"52\\\" y2=\\\"13.1709\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M14.7333 60.6233L11.4 58.0519C11.2352 57.9248 11 58.0457 11 58.2576V63.4005C11 63.6124 11.2352 63.7333 11.4 63.6062L14.7333 61.0348C14.8667 60.9319 14.8667 60.7262 14.7333 60.6233Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 61.8576H7V59.8005H11V61.8576Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18.8334\\\" y1=\\\"60.8291\\\" x2=\\\"52\\\" y2=\\\"60.8291\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"11\\\" cy=\\\"13\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"11\\\" cy=\\\"61\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7.5 13.5513L9.32075 15.4241C9.41892 15.525 9.58108 15.525 9.67925 15.4241L13.5 11.4941\\\" stroke=\\\"#485056\\\" stroke-linecap=\\\"round\\\"></path><line x1=\\\"18\\\" y1=\\\"13.4971\\\" x2=\\\"52\\\" y2=\\\"13.4971\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M7.5 60.5571L9.32075 62.4299C9.41892 62.5309 9.58108 62.5309 9.67925 62.4299L13.5 58.5\\\" stroke=\\\"#485056\\\" stroke-linecap=\\\"round\\\"></path><line x1=\\\"18\\\" y1=\\\"60.5029\\\" x2=\\\"52\\\" y2=\\\"60.5029\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.5541 11.204L11.0001 10.634L10.446 11.204L11.0001 11.7739L11.5541 11.204Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 9.82812L12.3377 11.2041L11 12.58L9.66229 11.2041L11 9.82812Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.5541 14.6235L11.0001 14.0536L10.446 14.6235L11.0001 15.1935L11.5541 14.6235Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 13.2477L11.6689 13.9357L12.3377 14.6236L11 15.9996L9.66229 14.6236L11 13.2477Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M9.89186 12.9138L9.33776 12.3438L8.78366 12.9138L9.33776 13.4837L9.89186 12.9138Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.33771 11.5379L10.6754 12.9138L9.33771 14.2898L8 12.9138L9.33771 11.5379Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M13.2164 12.9138L12.6623 12.3438L12.1082 12.9138L12.6623 13.4837L13.2164 12.9138Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.6623 11.5379L14 12.9138L12.6623 14.2898L11.3246 12.9138L12.6623 11.5379Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18\\\" y1=\\\"12.9141\\\" x2=\\\"52\\\" y2=\\\"12.9141\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M11.5541 59.3758L11.0001 58.8059L10.446 59.3758L11.0001 59.9458L11.5541 59.3758Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 58L12.3377 59.3759L11 60.7519L9.66229 59.3759L11 58Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.5541 62.7954L11.0001 62.2255L10.446 62.7954L11.0001 63.3653L11.5541 62.7954Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 61.4196L11.6689 62.1075L12.3377 62.7955L11 64.1714L9.66229 62.7955L11 61.4196Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M9.89186 61.0856L9.33776 60.5157L8.78366 61.0856L9.33776 61.6556L9.89186 61.0856Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.33771 59.7098L10.6754 61.0857L9.33771 62.4616L8 61.0857L9.33771 59.7098Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M13.2164 61.0856L12.6623 60.5157L12.1082 61.0856L12.6623 61.6556L13.2164 61.0856Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.6623 59.7098L14 61.0857L12.6623 62.4616L11.3246 61.0857L12.6623 59.7098Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18\\\" y1=\\\"61.0859\\\" x2=\\\"52\\\" y2=\\\"61.0859\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"38\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.248 11.7486L10.2355 9.12508C10.2055 9.04708 10.174 8.95708 10.141 8.85508C10.108 8.75008 10.0765 8.63908 10.0465 8.52208C9.9835 8.76508 9.919 8.96758 9.853 9.12958L8.8405 11.7486H11.248ZM13.066 14.1426H12.391C12.313 14.1426 12.25 14.1231 12.202 14.0841C12.154 14.0451 12.118 13.9956 12.094 13.9356L11.491 12.3786H8.5975L7.9945 13.9356C7.9765 13.9896 7.942 14.0376 7.891 14.0796C7.84 14.1216 7.777 14.1426 7.702 14.1426H7.027L9.6055 7.69408H10.4875L13.066 14.1426ZM13.5903 13.6476C13.5903 13.5696 13.6038 13.4961 13.6308 13.4271C13.6608 13.3581 13.6998 13.2981 13.7478 13.2471C13.7988 13.1961 13.8588 13.1556 13.9278 13.1256C13.9968 13.0956 14.0703 13.0806 14.1483 13.0806C14.2263 13.0806 14.2998 13.0956 14.3688 13.1256C14.4378 13.1556 14.4978 13.1961 14.5488 13.2471C14.5998 13.2981 14.6403 13.3581 14.6703 13.4271C14.7003 13.4961 14.7153 13.5696 14.7153 13.6476C14.7153 13.7286 14.7003 13.8036 14.6703 13.8726C14.6403 13.9386 14.5998 13.9971 14.5488 14.0481C14.4978 14.0991 14.4378 14.1381 14.3688 14.1651C14.2998 14.1951 14.2263 14.2101 14.1483 14.2101C14.0703 14.2101 13.9968 14.1951 13.9278 14.1651C13.8588 14.1381 13.7988 14.0991 13.7478 14.0481C13.6998 13.9971 13.6608 13.9386 13.6308 13.8726C13.6038 13.8036 13.5903 13.7286 13.5903 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM21.9731 24.962C21.9731 24.884 21.9866 24.8105 22.0136 24.7415C22.0436 24.6725 22.0826 24.6125 22.1306 24.5615C22.1816 24.5105 22.2416 24.47 22.3106 24.44C22.3796 24.41 22.4531 24.395 22.5311 24.395C22.6091 24.395 22.6826 24.41 22.7516 24.44C22.8206 24.47 22.8806 24.5105 22.9316 24.5615C22.9826 24.6125 23.0231 24.6725 23.0531 24.7415C23.0831 24.8105 23.0981 24.884 23.0981 24.962C23.0981 25.043 23.0831 25.118 23.0531 25.187C23.0231 25.253 22.9826 25.3115 22.9316 25.3625C22.8806 25.4135 22.8206 25.4525 22.7516 25.4795C22.6826 25.5095 22.6091 25.5245 22.5311 25.5245C22.4531 25.5245 22.3796 25.5095 22.3106 25.4795C22.2416 25.4525 22.1816 25.4135 22.1306 25.3625C22.0826 25.3115 22.0436 25.253 22.0136 25.187C21.9866 25.118 21.9731 25.043 21.9731 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM22.5356 38.3331C22.5356 38.2551 22.5491 38.1816 22.5761 38.1126C22.6061 38.0436 22.6451 37.9836 22.6931 37.9326C22.7441 37.8816 22.8041 37.8411 22.8731 37.8111C22.9421 37.7811 23.0156 37.7661 23.0936 37.7661C23.1716 37.7661 23.2451 37.7811 23.3141 37.8111C23.3831 37.8411 23.4431 37.8816 23.4941 37.9326C23.5451 37.9836 23.5856 38.0436 23.6156 38.1126C23.6456 38.1816 23.6606 38.2551 23.6606 38.3331C23.6606 38.4141 23.6456 38.4891 23.6156 38.5581C23.5856 38.6241 23.5451 38.6826 23.4941 38.7336C23.4431 38.7846 23.3831 38.8236 23.3141 38.8506C23.2451 38.8806 23.1716 38.8956 23.0936 38.8956C23.0156 38.8956 22.9421 38.8806 22.8731 38.8506C22.8041 38.8236 22.7441 38.7846 22.6931 38.7336C22.6451 38.6826 22.6061 38.6241 22.5761 38.5581C22.5491 38.4891 22.5356 38.4141 22.5356 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM30.6616 50.6769C30.6616 50.5989 30.6751 50.5254 30.7021 50.4564C30.7321 50.3874 30.7711 50.3274 30.8191 50.2764C30.8701 50.2254 30.9301 50.1849 30.9991 50.1549C31.0681 50.1249 31.1416 50.1099 31.2196 50.1099C31.2976 50.1099 31.3711 50.1249 31.4401 50.1549C31.5091 50.1849 31.5691 50.2254 31.6201 50.2764C31.6711 50.3274 31.7116 50.3874 31.7416 50.4564C31.7716 50.5254 31.7866 50.5989 31.7866 50.6769C31.7866 50.7579 31.7716 50.8329 31.7416 50.9019C31.7116 50.9679 31.6711 51.0264 31.6201 51.0774C31.5691 51.1284 31.5091 51.1674 31.4401 51.1944C31.3711 51.2244 31.2976 51.2394 31.2196 51.2394C31.1416 51.2394 31.0681 51.2244 30.9991 51.1944C30.9301 51.1674 30.8701 51.1284 30.8191 51.0774C30.7711 51.0264 30.7321 50.9679 30.7021 50.9019C30.6751 50.8329 30.6616 50.7579 30.6616 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M10.087 62.8216C10.336 62.8216 10.5505 62.7931 10.7305 62.7361C10.9105 62.6791 11.0575 62.5996 11.1715 62.4976C11.2885 62.3926 11.374 62.2696 11.428 62.1286C11.482 61.9846 11.509 61.8271 11.509 61.6561C11.509 61.3231 11.3905 61.0606 11.1535 60.8686C10.9165 60.6736 10.561 60.5761 10.087 60.5761H8.692V62.8216H10.087ZM8.692 57.7546V59.9551H9.844C10.09 59.9551 10.303 59.9281 10.483 59.8741C10.666 59.8201 10.816 59.7451 10.933 59.6491C11.053 59.5531 11.1415 59.4376 11.1985 59.3026C11.2555 59.1646 11.284 59.0146 11.284 58.8526C11.284 58.4716 11.17 58.1941 10.942 58.0201C10.714 57.8431 10.36 57.7546 9.88 57.7546H8.692ZM9.88 57.0661C10.276 57.0661 10.6165 57.1051 10.9015 57.1831C11.1895 57.2611 11.425 57.3721 11.608 57.5161C11.794 57.6601 11.9305 57.8371 12.0175 58.0471C12.1045 58.2541 12.148 58.4881 12.148 58.7491C12.148 58.9081 12.1225 59.0611 12.0715 59.2081C12.0235 59.3521 11.95 59.4871 11.851 59.6131C11.752 59.7391 11.626 59.8531 11.473 59.9551C11.323 60.0541 11.146 60.1351 10.942 60.1981C11.416 60.2881 11.7715 60.4576 12.0085 60.7066C12.2485 60.9526 12.3685 61.2766 12.3685 61.6786C12.3685 61.9516 12.3175 62.2006 12.2155 62.4256C12.1165 62.6506 11.9695 62.8441 11.7745 63.0061C11.5825 63.1681 11.3455 63.2941 11.0635 63.3841C10.7815 63.4711 10.4605 63.5146 10.1005 63.5146H7.8235V57.0661H9.88ZM13.3179 63.0196C13.3179 62.9416 13.3314 62.8681 13.3584 62.7991C13.3884 62.7301 13.4274 62.6701 13.4754 62.6191C13.5264 62.5681 13.5864 62.5276 13.6554 62.4976C13.7244 62.4676 13.7979 62.4526 13.8759 62.4526C13.9539 62.4526 14.0274 62.4676 14.0964 62.4976C14.1654 62.5276 14.2254 62.5681 14.2764 62.6191C14.3274 62.6701 14.3679 62.7301 14.3979 62.7991C14.4279 62.8681 14.4429 62.9416 14.4429 63.0196C14.4429 63.1006 14.4279 63.1756 14.3979 63.2446C14.3679 63.3106 14.3274 63.3691 14.2764 63.4201C14.2254 63.4711 14.1654 63.5101 14.0964 63.5371C14.0274 63.5671 13.9539 63.5821 13.8759 63.5821C13.7979 63.5821 13.7244 63.5671 13.6554 63.5371C13.5864 63.5101 13.5264 63.4711 13.4754 63.4201C13.4274 63.3691 13.3884 63.3106 13.3584 63.2446C13.3314 63.1756 13.3179 63.1006 13.3179 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"34\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"34\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"47\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM12.7202 13.6476C12.7202 13.5696 12.7337 13.4961 12.7607 13.4271C12.7907 13.3581 12.8297 13.2981 12.8777 13.2471C12.9287 13.1961 12.9887 13.1556 13.0577 13.1256C13.1267 13.0956 13.2002 13.0806 13.2782 13.0806C13.3562 13.0806 13.4297 13.0956 13.4987 13.1256C13.5677 13.1556 13.6277 13.1961 13.6787 13.2471C13.7297 13.2981 13.7702 13.3581 13.8002 13.4271C13.8302 13.4961 13.8452 13.5696 13.8452 13.6476C13.8452 13.7286 13.8302 13.8036 13.8002 13.8726C13.7702 13.9386 13.7297 13.9971 13.6787 14.0481C13.6277 14.0991 13.5677 14.1381 13.4987 14.1651C13.4297 14.1951 13.3562 14.2101 13.2782 14.2101C13.2002 14.2101 13.1267 14.1951 13.0577 14.1651C12.9887 14.1381 12.9287 14.0991 12.8777 14.0481C12.8297 13.9971 12.7907 13.9386 12.7607 13.8726C12.7337 13.8036 12.7202 13.7286 12.7202 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM12.7202 63.0196C12.7202 62.9416 12.7337 62.8681 12.7607 62.7991C12.7907 62.7301 12.8297 62.6701 12.8777 62.6191C12.9287 62.5681 12.9887 62.5276 13.0577 62.4976C13.1267 62.4676 13.2002 62.4526 13.2782 62.4526C13.3562 62.4526 13.4297 62.4676 13.4987 62.4976C13.5677 62.5276 13.6277 62.5681 13.6787 62.6191C13.7297 62.6701 13.7702 62.7301 13.8002 62.7991C13.8302 62.8681 13.8452 62.9416 13.8452 63.0196C13.8452 63.1006 13.8302 63.1756 13.8002 63.2446C13.7702 63.3106 13.7297 63.3691 13.6787 63.4201C13.6277 63.4711 13.5677 63.5101 13.4987 63.5371C13.4297 63.5671 13.3562 63.5821 13.2782 63.5821C13.2002 63.5821 13.1267 63.5671 13.0577 63.5371C12.9887 63.5101 12.9287 63.4711 12.8777 63.4201C12.8297 63.3691 12.7907 63.3106 12.7607 63.2446C12.7337 63.1756 12.7202 63.1006 12.7202 63.0196Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.581 24.845V25.457H18.125V24.845H19.5065V20.4485C19.5065 20.3165 19.511 20.183 19.52 20.048L18.3725 21.0335C18.3335 21.0665 18.2945 21.0875 18.2555 21.0965C18.2165 21.1025 18.1805 21.1025 18.1475 21.0965C18.1145 21.0905 18.083 21.0785 18.053 21.0605C18.026 21.0425 18.005 21.023 17.99 21.002L17.738 20.6555L19.6595 18.995H20.312V24.845H21.581ZM22.7202 24.962C22.7202 24.884 22.7337 24.8105 22.7607 24.7415C22.7907 24.6725 22.8297 24.6125 22.8777 24.5615C22.9287 24.5105 22.9887 24.47 23.0577 24.44C23.1267 24.41 23.2002 24.395 23.2782 24.395C23.3562 24.395 23.4297 24.41 23.4987 24.44C23.5677 24.47 23.6277 24.5105 23.6787 24.5615C23.7297 24.6125 23.7702 24.6725 23.8002 24.7415C23.8302 24.8105 23.8452 24.884 23.8452 24.962C23.8452 25.043 23.8302 25.118 23.8002 25.187C23.7702 25.253 23.7297 25.3115 23.6787 25.3625C23.6277 25.4135 23.5677 25.4525 23.4987 25.4795C23.4297 25.5095 23.3562 25.5245 23.2782 25.5245C23.2002 25.5245 23.1267 25.5095 23.0577 25.4795C22.9887 25.4525 22.9287 25.4135 22.8777 25.3625C22.8297 25.3115 22.7907 25.253 22.7607 25.187C22.7337 25.118 22.7202 25.043 22.7202 24.962ZM28.9287 24.845V25.457H25.4727V24.845H26.8542V20.4485C26.8542 20.3165 26.8587 20.183 26.8677 20.048L25.7202 21.0335C25.6812 21.0665 25.6422 21.0875 25.6032 21.0965C25.5642 21.1025 25.5282 21.1025 25.4952 21.0965C25.4622 21.0905 25.4307 21.0785 25.4007 21.0605C25.3737 21.0425 25.3527 21.023 25.3377 21.002L25.0857 20.6555L27.0072 18.995H27.6597V24.845H28.9287Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.581 38.2161V38.8281H18.125V38.2161H19.5065V33.8196C19.5065 33.6876 19.511 33.5541 19.52 33.4191L18.3725 34.4046C18.3335 34.4376 18.2945 34.4586 18.2555 34.4676C18.2165 34.4736 18.1805 34.4736 18.1475 34.4676C18.1145 34.4616 18.083 34.4496 18.053 34.4316C18.026 34.4136 18.005 34.3941 17.99 34.3731L17.738 34.0266L19.6595 32.3661H20.312V38.2161H21.581ZM22.7202 38.3331C22.7202 38.2551 22.7337 38.1816 22.7607 38.1126C22.7907 38.0436 22.8297 37.9836 22.8777 37.9326C22.9287 37.8816 22.9887 37.8411 23.0577 37.8111C23.1267 37.7811 23.2002 37.7661 23.2782 37.7661C23.3562 37.7661 23.4297 37.7811 23.4987 37.8111C23.5677 37.8411 23.6277 37.8816 23.6787 37.9326C23.7297 37.9836 23.7702 38.0436 23.8002 38.1126C23.8302 38.1816 23.8452 38.2551 23.8452 38.3331C23.8452 38.4141 23.8302 38.4891 23.8002 38.5581C23.7702 38.6241 23.7297 38.6826 23.6787 38.7336C23.6277 38.7846 23.5677 38.8236 23.4987 38.8506C23.4297 38.8806 23.3562 38.8956 23.2782 38.8956C23.2002 38.8956 23.1267 38.8806 23.0577 38.8506C22.9887 38.8236 22.9287 38.7846 22.8777 38.7336C22.8297 38.6826 22.7907 38.6241 22.7607 38.5581C22.7337 38.4891 22.7202 38.4141 22.7202 38.3331ZM28.7892 38.0676C28.8762 38.0676 28.9452 38.0931 28.9962 38.1441C29.0472 38.1951 29.0727 38.2611 29.0727 38.3421V38.8281H24.7707V38.5536C24.7707 38.4966 24.7827 38.4381 24.8067 38.3781C24.8307 38.3181 24.8682 38.2626 24.9192 38.2116L26.9847 36.1371C27.1557 35.9631 27.3117 35.7966 27.4527 35.6376C27.5937 35.4756 27.7137 35.3136 27.8127 35.1516C27.9117 34.9896 27.9882 34.8261 28.0422 34.6611C28.0962 34.4931 28.1232 34.3146 28.1232 34.1256C28.1232 33.9366 28.0932 33.7716 28.0332 33.6306C27.9732 33.4866 27.8907 33.3681 27.7857 33.2751C27.6837 33.1821 27.5622 33.1131 27.4212 33.0681C27.2802 33.0201 27.1287 32.9961 26.9667 32.9961C26.8017 32.9961 26.6502 33.0201 26.5122 33.0681C26.3742 33.1161 26.2512 33.1836 26.1432 33.2706C26.0382 33.3546 25.9497 33.4551 25.8777 33.5721C25.8057 33.6891 25.7547 33.8181 25.7247 33.9591C25.6887 34.0641 25.6392 34.1346 25.5762 34.1706C25.5162 34.2036 25.4307 34.2126 25.3197 34.1976L24.9012 34.1256C24.9432 33.8316 25.0242 33.5721 25.1442 33.3471C25.2672 33.1191 25.4202 32.9286 25.6032 32.7756C25.7892 32.6226 26.0007 32.5071 26.2377 32.4291C26.4747 32.3481 26.7312 32.3076 27.0072 32.3076C27.2802 32.3076 27.5352 32.3481 27.7722 32.4291C28.0092 32.5101 28.2147 32.6286 28.3887 32.7846C28.5627 32.9376 28.6992 33.1251 28.7982 33.3471C28.8972 33.5691 28.9467 33.8211 28.9467 34.1031C28.9467 34.3431 28.9107 34.5666 28.8387 34.7736C28.7667 34.9776 28.6692 35.1726 28.5462 35.3586C28.4232 35.5446 28.2807 35.7261 28.1187 35.9031C27.9597 36.0801 27.7902 36.2586 27.6102 36.4386L25.9092 38.1756C26.0292 38.1426 26.1507 38.1171 26.2737 38.0991C26.3967 38.0781 26.5152 38.0676 26.6292 38.0676H28.7892Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M28.581 50.5599V51.1719H25.125V50.5599H26.5065V46.1634C26.5065 46.0314 26.511 45.8979 26.52 45.7629L25.3725 46.7484C25.3335 46.7814 25.2945 46.8024 25.2555 46.8114C25.2165 46.8174 25.1805 46.8174 25.1475 46.8114C25.1145 46.8054 25.083 46.7934 25.053 46.7754C25.026 46.7574 25.005 46.7379 24.99 46.7169L24.738 46.3704L26.6595 44.7099H27.312V50.5599H28.581ZM29.7202 50.6769C29.7202 50.5989 29.7337 50.5254 29.7607 50.4564C29.7907 50.3874 29.8297 50.3274 29.8777 50.2764C29.9287 50.2254 29.9887 50.1849 30.0577 50.1549C30.1267 50.1249 30.2002 50.1099 30.2782 50.1099C30.3562 50.1099 30.4297 50.1249 30.4987 50.1549C30.5677 50.1849 30.6277 50.2254 30.6787 50.2764C30.7297 50.3274 30.7702 50.3874 30.8002 50.4564C30.8302 50.5254 30.8452 50.5989 30.8452 50.6769C30.8452 50.7579 30.8302 50.8329 30.8002 50.9019C30.7702 50.9679 30.7297 51.0264 30.6787 51.0774C30.6277 51.1284 30.5677 51.1674 30.4987 51.1944C30.4297 51.2244 30.3562 51.2394 30.2782 51.2394C30.2002 51.2394 30.1267 51.2244 30.0577 51.1944C29.9887 51.1674 29.9287 51.1284 29.8777 51.0774C29.8297 51.0264 29.7907 50.9679 29.7607 50.9019C29.7337 50.8329 29.7202 50.7579 29.7202 50.6769ZM35.7892 50.4114C35.8762 50.4114 35.9452 50.4369 35.9962 50.4879C36.0472 50.5389 36.0727 50.6049 36.0727 50.6859V51.1719H31.7707V50.8974C31.7707 50.8404 31.7827 50.7819 31.8067 50.7219C31.8307 50.6619 31.8682 50.6064 31.9192 50.5554L33.9847 48.4809C34.1557 48.3069 34.3117 48.1404 34.4527 47.9814C34.5937 47.8194 34.7137 47.6574 34.8127 47.4954C34.9117 47.3334 34.9882 47.1699 35.0422 47.0049C35.0962 46.8369 35.1232 46.6584 35.1232 46.4694C35.1232 46.2804 35.0932 46.1154 35.0332 45.9744C34.9732 45.8304 34.8907 45.7119 34.7857 45.6189C34.6837 45.5259 34.5622 45.4569 34.4212 45.4119C34.2802 45.3639 34.1287 45.3399 33.9667 45.3399C33.8017 45.3399 33.6502 45.3639 33.5122 45.4119C33.3742 45.4599 33.2512 45.5274 33.1432 45.6144C33.0382 45.6984 32.9497 45.7989 32.8777 45.9159C32.8057 46.0329 32.7547 46.1619 32.7247 46.3029C32.6887 46.4079 32.6392 46.4784 32.5762 46.5144C32.5162 46.5474 32.4307 46.5564 32.3197 46.5414L31.9012 46.4694C31.9432 46.1754 32.0242 45.9159 32.1442 45.6909C32.2672 45.4629 32.4202 45.2724 32.6032 45.1194C32.7892 44.9664 33.0007 44.8509 33.2377 44.7729C33.4747 44.6919 33.7312 44.6514 34.0072 44.6514C34.2802 44.6514 34.5352 44.6919 34.7722 44.7729C35.0092 44.8539 35.2147 44.9724 35.3887 45.1284C35.5627 45.2814 35.6992 45.4689 35.7982 45.6909C35.8972 45.9129 35.9467 46.1649 35.9467 46.4469C35.9467 46.6869 35.9107 46.9104 35.8387 47.1174C35.7667 47.3214 35.6692 47.5164 35.5462 47.7024C35.4232 47.8884 35.2807 48.0699 35.1187 48.2469C34.9597 48.4239 34.7902 48.6024 34.6102 48.7824L32.9092 50.5194C33.0292 50.4864 33.1507 50.4609 33.2737 50.4429C33.3967 50.4219 33.5152 50.4114 33.6292 50.4114H35.7892ZM37.0679 50.6769C37.0679 50.5989 37.0814 50.5254 37.1084 50.4564C37.1384 50.3874 37.1774 50.3274 37.2254 50.2764C37.2764 50.2254 37.3364 50.1849 37.4054 50.1549C37.4744 50.1249 37.5479 50.1099 37.6259 50.1099C37.7039 50.1099 37.7774 50.1249 37.8464 50.1549C37.9154 50.1849 37.9754 50.2254 38.0264 50.2764C38.0774 50.3274 38.1179 50.3874 38.1479 50.4564C38.1779 50.5254 38.1929 50.5989 38.1929 50.6769C38.1929 50.7579 38.1779 50.8329 38.1479 50.9019C38.1179 50.9679 38.0774 51.0264 38.0264 51.0774C37.9754 51.1284 37.9154 51.1674 37.8464 51.1944C37.7774 51.2244 37.7039 51.2394 37.6259 51.2394C37.5479 51.2394 37.4744 51.2244 37.4054 51.1944C37.3364 51.1674 37.2764 51.1284 37.2254 51.0774C37.1774 51.0264 37.1384 50.9679 37.1084 50.9019C37.0814 50.8329 37.0679 50.7579 37.0679 50.6769ZM43.2763 50.5599V51.1719H39.8203V50.5599H41.2018V46.1634C41.2018 46.0314 41.2063 45.8979 41.2153 45.7629L40.0678 46.7484C40.0288 46.7814 39.9898 46.8024 39.9508 46.8114C39.9118 46.8174 39.8758 46.8174 39.8428 46.8114C39.8098 46.8054 39.7783 46.7934 39.7483 46.7754C39.7213 46.7574 39.7003 46.7379 39.6853 46.7169L39.4333 46.3704L41.3548 44.7099H42.0073V50.5599H43.2763Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"35\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM12.7202 13.6476C12.7202 13.5696 12.7337 13.4961 12.7607 13.4271C12.7907 13.3581 12.8297 13.2981 12.8777 13.2471C12.9287 13.1961 12.9887 13.1556 13.0577 13.1256C13.1267 13.0956 13.2002 13.0806 13.2782 13.0806C13.3562 13.0806 13.4297 13.0956 13.4987 13.1256C13.5677 13.1556 13.6277 13.1961 13.6787 13.2471C13.7297 13.2981 13.7702 13.3581 13.8002 13.4271C13.8302 13.4961 13.8452 13.5696 13.8452 13.6476C13.8452 13.7286 13.8302 13.8036 13.8002 13.8726C13.7702 13.9386 13.7297 13.9971 13.6787 14.0481C13.6277 14.0991 13.5677 14.1381 13.4987 14.1651C13.4297 14.1951 13.3562 14.2101 13.2782 14.2101C13.2002 14.2101 13.1267 14.1951 13.0577 14.1651C12.9887 14.1381 12.9287 14.0991 12.8777 14.0481C12.8297 13.9971 12.7907 13.9386 12.7607 13.8726C12.7337 13.8036 12.7202 13.7286 12.7202 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM21.9731 24.962C21.9731 24.884 21.9866 24.8105 22.0136 24.7415C22.0436 24.6725 22.0826 24.6125 22.1306 24.5615C22.1816 24.5105 22.2416 24.47 22.3106 24.44C22.3796 24.41 22.4531 24.395 22.5311 24.395C22.6091 24.395 22.6826 24.41 22.7516 24.44C22.8206 24.47 22.8806 24.5105 22.9316 24.5615C22.9826 24.6125 23.0231 24.6725 23.0531 24.7415C23.0831 24.8105 23.0981 24.884 23.0981 24.962C23.0981 25.043 23.0831 25.118 23.0531 25.187C23.0231 25.253 22.9826 25.3115 22.9316 25.3625C22.8806 25.4135 22.8206 25.4525 22.7516 25.4795C22.6826 25.5095 22.6091 25.5245 22.5311 25.5245C22.4531 25.5245 22.3796 25.5095 22.3106 25.4795C22.2416 25.4525 22.1816 25.4135 22.1306 25.3625C22.0826 25.3115 22.0436 25.253 22.0136 25.187C21.9866 25.118 21.9731 25.043 21.9731 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM22.5356 38.3331C22.5356 38.2551 22.5491 38.1816 22.5761 38.1126C22.6061 38.0436 22.6451 37.9836 22.6931 37.9326C22.7441 37.8816 22.8041 37.8411 22.8731 37.8111C22.9421 37.7811 23.0156 37.7661 23.0936 37.7661C23.1716 37.7661 23.2451 37.7811 23.3141 37.8111C23.3831 37.8411 23.4431 37.8816 23.4941 37.9326C23.5451 37.9836 23.5856 38.0436 23.6156 38.1126C23.6456 38.1816 23.6606 38.2551 23.6606 38.3331C23.6606 38.4141 23.6456 38.4891 23.6156 38.5581C23.5856 38.6241 23.5451 38.6826 23.4941 38.7336C23.4431 38.7846 23.3831 38.8236 23.3141 38.8506C23.2451 38.8806 23.1716 38.8956 23.0936 38.8956C23.0156 38.8956 22.9421 38.8806 22.8731 38.8506C22.8041 38.8236 22.7441 38.7846 22.6931 38.7336C22.6451 38.6826 22.6061 38.6241 22.5761 38.5581C22.5491 38.4891 22.5356 38.4141 22.5356 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM30.6616 50.6769C30.6616 50.5989 30.6751 50.5254 30.7021 50.4564C30.7321 50.3874 30.7711 50.3274 30.8191 50.2764C30.8701 50.2254 30.9301 50.1849 30.9991 50.1549C31.0681 50.1249 31.1416 50.1099 31.2196 50.1099C31.2976 50.1099 31.3711 50.1249 31.4401 50.1549C31.5091 50.1849 31.5691 50.2254 31.6201 50.2764C31.6711 50.3274 31.7116 50.3874 31.7416 50.4564C31.7716 50.5254 31.7866 50.5989 31.7866 50.6769C31.7866 50.7579 31.7716 50.8329 31.7416 50.9019C31.7116 50.9679 31.6711 51.0264 31.6201 51.0774C31.5691 51.1284 31.5091 51.1674 31.4401 51.1944C31.3711 51.2244 31.2976 51.2394 31.2196 51.2394C31.1416 51.2394 31.0681 51.2244 30.9991 51.1944C30.9301 51.1674 30.8701 51.1284 30.8191 51.0774C30.7711 51.0264 30.7321 50.9679 30.7021 50.9019C30.6751 50.8329 30.6616 50.7579 30.6616 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM12.7202 63.0196C12.7202 62.9416 12.7337 62.8681 12.7607 62.7991C12.7907 62.7301 12.8297 62.6701 12.8777 62.6191C12.9287 62.5681 12.9887 62.5276 13.0577 62.4976C13.1267 62.4676 13.2002 62.4526 13.2782 62.4526C13.3562 62.4526 13.4297 62.4676 13.4987 62.4976C13.5677 62.5276 13.6277 62.5681 13.6787 62.6191C13.7297 62.6701 13.7702 62.7301 13.8002 62.7991C13.8302 62.8681 13.8452 62.9416 13.8452 63.0196C13.8452 63.1006 13.8302 63.1756 13.8002 63.2446C13.7702 63.3106 13.7297 63.3691 13.6787 63.4201C13.6277 63.4711 13.5677 63.5101 13.4987 63.5371C13.4297 63.5671 13.3562 63.5821 13.2782 63.5821C13.2002 63.5821 13.1267 63.5671 13.0577 63.5371C12.9887 63.5101 12.9287 63.4711 12.8777 63.4201C12.8297 63.3691 12.7907 63.3106 12.7607 63.2446C12.7337 63.1756 12.7202 63.1006 12.7202 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"35\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM13.5212 11.3121C13.5212 10.6701 13.4387 10.0461 13.2737 9.44008C13.1117 8.83408 12.8732 8.25808 12.5582 7.71208C12.5342 7.66708 12.5192 7.62808 12.5132 7.59508C12.5072 7.55908 12.5087 7.52908 12.5177 7.50508C12.5267 7.47808 12.5402 7.45558 12.5582 7.43758C12.5792 7.41658 12.6017 7.39858 12.6257 7.38358L12.9812 7.16308C13.2062 7.51108 13.3967 7.85458 13.5527 8.19358C13.7117 8.53258 13.8392 8.87308 13.9352 9.21508C14.0342 9.55408 14.1062 9.89758 14.1512 10.2456C14.1962 10.5936 14.2187 10.9491 14.2187 11.3121C14.2187 11.6781 14.1962 12.0351 14.1512 12.3831C14.1062 12.7281 14.0342 13.0716 13.9352 13.4136C13.8392 13.7556 13.7117 14.0961 13.5527 14.4351C13.3967 14.7741 13.2062 15.1161 12.9812 15.4611L12.6257 15.2451C12.6017 15.2301 12.5792 15.2121 12.5582 15.1911C12.5402 15.1731 12.5267 15.1506 12.5177 15.1236C12.5087 15.0996 12.5072 15.0696 12.5132 15.0336C12.5192 14.9976 12.5342 14.9571 12.5582 14.9121C12.8732 14.3661 13.1117 13.7901 13.2737 13.1841C13.4387 12.5781 13.5212 11.9541 13.5212 11.3121Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM22.6159 22.6265C22.6159 21.9845 22.5334 21.3605 22.3684 20.7545C22.2064 20.1485 21.9679 19.5725 21.6529 19.0265C21.6289 18.9815 21.6139 18.9425 21.6079 18.9095C21.6019 18.8735 21.6034 18.8435 21.6124 18.8195C21.6214 18.7925 21.6349 18.77 21.6529 18.752C21.6739 18.731 21.6964 18.713 21.7204 18.698L22.0759 18.4775C22.3009 18.8255 22.4914 19.169 22.6474 19.508C22.8064 19.847 22.9339 20.1875 23.0299 20.5295C23.1289 20.8685 23.2009 21.212 23.2459 21.56C23.2909 21.908 23.3134 22.2635 23.3134 22.6265C23.3134 22.9925 23.2909 23.3495 23.2459 23.6975C23.2009 24.0425 23.1289 24.386 23.0299 24.728C22.9339 25.07 22.8064 25.4105 22.6474 25.7495C22.4914 26.0885 22.3009 26.4305 22.0759 26.7755L21.7204 26.5595C21.6964 26.5445 21.6739 26.5265 21.6529 26.5055C21.6349 26.4875 21.6214 26.465 21.6124 26.438C21.6034 26.414 21.6019 26.384 21.6079 26.348C21.6139 26.312 21.6289 26.2715 21.6529 26.2265C21.9679 25.6805 22.2064 25.1045 22.3684 24.4985C22.5334 23.8925 22.6159 23.2685 22.6159 22.6265Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM23.073 35.9976C23.073 35.3556 22.9905 34.7316 22.8255 34.1256C22.6635 33.5196 22.425 32.9436 22.11 32.3976C22.086 32.3526 22.071 32.3136 22.065 32.2806C22.059 32.2446 22.0605 32.2146 22.0695 32.1906C22.0785 32.1636 22.092 32.1411 22.11 32.1231C22.131 32.1021 22.1535 32.0841 22.1775 32.0691L22.533 31.8486C22.758 32.1966 22.9485 32.5401 23.1045 32.8791C23.2635 33.2181 23.391 33.5586 23.487 33.9006C23.586 34.2396 23.658 34.5831 23.703 34.9311C23.748 35.2791 23.7705 35.6346 23.7705 35.9976C23.7705 36.3636 23.748 36.7206 23.703 37.0686C23.658 37.4136 23.586 37.7571 23.487 38.0991C23.391 38.4411 23.2635 38.7816 23.1045 39.1206C22.9485 39.4596 22.758 39.8016 22.533 40.1466L22.1775 39.9306C22.1535 39.9156 22.131 39.8976 22.11 39.8766C22.092 39.8586 22.0785 39.8361 22.0695 39.8091C22.0605 39.7851 22.059 39.7551 22.065 39.7191C22.071 39.6831 22.086 39.6426 22.11 39.5976C22.425 39.0516 22.6635 38.4756 22.8255 37.8696C22.9905 37.2636 23.073 36.6396 23.073 35.9976Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM31.4626 48.3414C31.4626 47.6994 31.3801 47.0754 31.2151 46.4694C31.0531 45.8634 30.8146 45.2874 30.4996 44.7414C30.4756 44.6964 30.4606 44.6574 30.4546 44.6244C30.4486 44.5884 30.4501 44.5584 30.4591 44.5344C30.4681 44.5074 30.4816 44.4849 30.4996 44.4669C30.5206 44.4459 30.5431 44.4279 30.5671 44.4129L30.9226 44.1924C31.1476 44.5404 31.3381 44.8839 31.4941 45.2229C31.6531 45.5619 31.7806 45.9024 31.8766 46.2444C31.9756 46.5834 32.0476 46.9269 32.0926 47.2749C32.1376 47.6229 32.1601 47.9784 32.1601 48.3414C32.1601 48.7074 32.1376 49.0644 32.0926 49.4124C32.0476 49.7574 31.9756 50.1009 31.8766 50.4429C31.7806 50.7849 31.6531 51.1254 31.4941 51.4644C31.3381 51.8034 31.1476 52.1454 30.9226 52.4904L30.5671 52.2744C30.5431 52.2594 30.5206 52.2414 30.4996 52.2204C30.4816 52.2024 30.4681 52.1799 30.4591 52.1529C30.4501 52.1289 30.4486 52.0989 30.4546 52.0629C30.4606 52.0269 30.4756 51.9864 30.4996 51.9414C30.8146 51.3954 31.0531 50.8194 31.2151 50.2134C31.3801 49.6074 31.4626 48.9834 31.4626 48.3414Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM13.5212 60.6841C13.5212 60.0421 13.4387 59.4181 13.2737 58.8121C13.1117 58.2061 12.8732 57.6301 12.5582 57.0841C12.5342 57.0391 12.5192 57.0001 12.5132 56.9671C12.5072 56.9311 12.5087 56.9011 12.5177 56.8771C12.5267 56.8501 12.5402 56.8276 12.5582 56.8096C12.5792 56.7886 12.6017 56.7706 12.6257 56.7556L12.9812 56.5351C13.2062 56.8831 13.3967 57.2266 13.5527 57.5656C13.7117 57.9046 13.8392 58.2451 13.9352 58.5871C14.0342 58.9261 14.1062 59.2696 14.1512 59.6176C14.1962 59.9656 14.2187 60.3211 14.2187 60.6841C14.2187 61.0501 14.1962 61.4071 14.1512 61.7551C14.1062 62.1001 14.0342 62.4436 13.9352 62.7856C13.8392 63.1276 13.7117 63.4681 13.5527 63.8071C13.3967 64.1461 13.2062 64.4881 12.9812 64.8331L12.6257 64.6171C12.6017 64.6021 12.5792 64.5841 12.5582 64.5631C12.5402 64.5451 12.5267 64.5226 12.5177 64.4956C12.5087 64.4716 12.5072 64.4416 12.5132 64.4056C12.5192 64.3696 12.5342 64.3291 12.5582 64.2841C12.8732 63.7381 13.1117 63.1621 13.2737 62.5561C13.4387 61.9501 13.5212 61.3261 13.5212 60.6841Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"38\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M8.6965 14.1426H7.8235V7.69408H8.6965V14.1426ZM10.022 13.6476C10.022 13.5696 10.0355 13.4961 10.0625 13.4271C10.0925 13.3581 10.1315 13.2981 10.1795 13.2471C10.2305 13.1961 10.2905 13.1556 10.3595 13.1256C10.4285 13.0956 10.502 13.0806 10.58 13.0806C10.658 13.0806 10.7315 13.0956 10.8005 13.1256C10.8695 13.1556 10.9295 13.1961 10.9805 13.2471C11.0315 13.2981 11.072 13.3581 11.102 13.4271C11.132 13.4961 11.147 13.5696 11.147 13.6476C11.147 13.7286 11.132 13.8036 11.102 13.8726C11.072 13.9386 11.0315 13.9971 10.9805 14.0481C10.9295 14.0991 10.8695 14.1381 10.8005 14.1651C10.7315 14.1951 10.658 14.2101 10.58 14.2101C10.502 14.2101 10.4285 14.1951 10.3595 14.1651C10.2905 14.1381 10.2305 14.0991 10.1795 14.0481C10.1315 13.9971 10.0925 13.9386 10.0625 13.8726C10.0355 13.8036 10.022 13.7286 10.022 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.248 23.063L20.2355 20.4395C20.2055 20.3615 20.174 20.2715 20.141 20.1695C20.108 20.0645 20.0765 19.9535 20.0465 19.8365C19.9835 20.0795 19.919 20.282 19.853 20.444L18.8405 23.063H21.248ZM23.066 25.457H22.391C22.313 25.457 22.25 25.4375 22.202 25.3985C22.154 25.3595 22.118 25.31 22.094 25.25L21.491 23.693H18.5975L17.9945 25.25C17.9765 25.304 17.942 25.352 17.891 25.394C17.84 25.436 17.777 25.457 17.702 25.457H17.027L19.6055 19.0085H20.4875L23.066 25.457ZM23.5903 24.962C23.5903 24.884 23.6038 24.8105 23.6308 24.7415C23.6608 24.6725 23.6998 24.6125 23.7478 24.5615C23.7988 24.5105 23.8588 24.47 23.9278 24.44C23.9968 24.41 24.0703 24.395 24.1483 24.395C24.2263 24.395 24.2998 24.41 24.3688 24.44C24.4378 24.47 24.4978 24.5105 24.5488 24.5615C24.5998 24.6125 24.6403 24.6725 24.6703 24.7415C24.7003 24.8105 24.7153 24.884 24.7153 24.962C24.7153 25.043 24.7003 25.118 24.6703 25.187C24.6403 25.253 24.5998 25.3115 24.5488 25.3625C24.4978 25.4135 24.4378 25.4525 24.3688 25.4795C24.2998 25.5095 24.2263 25.5245 24.1483 25.5245C24.0703 25.5245 23.9968 25.5095 23.9278 25.4795C23.8588 25.4525 23.7988 25.4135 23.7478 25.3625C23.6998 25.3115 23.6608 25.253 23.6308 25.187C23.6038 25.118 23.5903 25.043 23.5903 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.087 38.1351C20.336 38.1351 20.5505 38.1066 20.7305 38.0496C20.9105 37.9926 21.0575 37.9131 21.1715 37.8111C21.2885 37.7061 21.374 37.5831 21.428 37.4421C21.482 37.2981 21.509 37.1406 21.509 36.9696C21.509 36.6366 21.3905 36.3741 21.1535 36.1821C20.9165 35.9871 20.561 35.8896 20.087 35.8896H18.692V38.1351H20.087ZM18.692 33.0681V35.2686H19.844C20.09 35.2686 20.303 35.2416 20.483 35.1876C20.666 35.1336 20.816 35.0586 20.933 34.9626C21.053 34.8666 21.1415 34.7511 21.1985 34.6161C21.2555 34.4781 21.284 34.3281 21.284 34.1661C21.284 33.7851 21.17 33.5076 20.942 33.3336C20.714 33.1566 20.36 33.0681 19.88 33.0681H18.692ZM19.88 32.3796C20.276 32.3796 20.6165 32.4186 20.9015 32.4966C21.1895 32.5746 21.425 32.6856 21.608 32.8296C21.794 32.9736 21.9305 33.1506 22.0175 33.3606C22.1045 33.5676 22.148 33.8016 22.148 34.0626C22.148 34.2216 22.1225 34.3746 22.0715 34.5216C22.0235 34.6656 21.95 34.8006 21.851 34.9266C21.752 35.0526 21.626 35.1666 21.473 35.2686C21.323 35.3676 21.146 35.4486 20.942 35.5116C21.416 35.6016 21.7715 35.7711 22.0085 36.0201C22.2485 36.2661 22.3685 36.5901 22.3685 36.9921C22.3685 37.2651 22.3175 37.5141 22.2155 37.7391C22.1165 37.9641 21.9695 38.1576 21.7745 38.3196C21.5825 38.4816 21.3455 38.6076 21.0635 38.6976C20.7815 38.7846 20.4605 38.8281 20.1005 38.8281H17.8235V32.3796H19.88ZM23.3179 38.3331C23.3179 38.2551 23.3314 38.1816 23.3584 38.1126C23.3884 38.0436 23.4274 37.9836 23.4754 37.9326C23.5264 37.8816 23.5864 37.8411 23.6554 37.8111C23.7244 37.7811 23.7979 37.7661 23.8759 37.7661C23.9539 37.7661 24.0274 37.7811 24.0964 37.8111C24.1654 37.8411 24.2254 37.8816 24.2764 37.9326C24.3274 37.9836 24.3679 38.0436 24.3979 38.1126C24.4279 38.1816 24.4429 38.2551 24.4429 38.3331C24.4429 38.4141 24.4279 38.4891 24.3979 38.5581C24.3679 38.6241 24.3274 38.6826 24.2764 38.7336C24.2254 38.7846 24.1654 38.8236 24.0964 38.8506C24.0274 38.8806 23.9539 38.8956 23.8759 38.8956C23.7979 38.8956 23.7244 38.8806 23.6554 38.8506C23.5864 38.8236 23.5264 38.7846 23.4754 38.7336C23.4274 38.6826 23.3884 38.6241 23.3584 38.5581C23.3314 38.4891 23.3179 38.4141 23.3179 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M32.581 50.5599V51.1719H29.125V50.5599H30.5065V46.1634C30.5065 46.0314 30.511 45.8979 30.52 45.7629L29.3725 46.7484C29.3335 46.7814 29.2945 46.8024 29.2555 46.8114C29.2165 46.8174 29.1805 46.8174 29.1475 46.8114C29.1145 46.8054 29.083 46.7934 29.053 46.7754C29.026 46.7574 29.005 46.7379 28.99 46.7169L28.738 46.3704L30.6595 44.7099H31.312V50.5599H32.581ZM33.7202 50.6769C33.7202 50.5989 33.7337 50.5254 33.7607 50.4564C33.7907 50.3874 33.8297 50.3274 33.8777 50.2764C33.9287 50.2254 33.9887 50.1849 34.0577 50.1549C34.1267 50.1249 34.2002 50.1099 34.2782 50.1099C34.3562 50.1099 34.4297 50.1249 34.4987 50.1549C34.5677 50.1849 34.6277 50.2254 34.6787 50.2764C34.7297 50.3274 34.7702 50.3874 34.8002 50.4564C34.8302 50.5254 34.8452 50.5989 34.8452 50.6769C34.8452 50.7579 34.8302 50.8329 34.8002 50.9019C34.7702 50.9679 34.7297 51.0264 34.6787 51.0774C34.6277 51.1284 34.5677 51.1674 34.4987 51.1944C34.4297 51.2244 34.3562 51.2394 34.2782 51.2394C34.2002 51.2394 34.1267 51.2244 34.0577 51.1944C33.9887 51.1674 33.9287 51.1284 33.8777 51.0774C33.8297 51.0264 33.7907 50.9679 33.7607 50.9019C33.7337 50.8329 33.7202 50.7579 33.7202 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M8.6965 63.5146H7.8235V57.0661H8.6965V63.5146ZM11.219 63.5146H10.346V57.0661H11.219V63.5146ZM12.5444 63.0196C12.5444 62.9416 12.5579 62.8681 12.5849 62.7991C12.6149 62.7301 12.6539 62.6701 12.7019 62.6191C12.7529 62.5681 12.8129 62.5276 12.8819 62.4976C12.9509 62.4676 13.0244 62.4526 13.1024 62.4526C13.1804 62.4526 13.2539 62.4676 13.3229 62.4976C13.3919 62.5276 13.4519 62.5681 13.5029 62.6191C13.5539 62.6701 13.5944 62.7301 13.6244 62.7991C13.6544 62.8681 13.6694 62.9416 13.6694 63.0196C13.6694 63.1006 13.6544 63.1756 13.6244 63.2446C13.5944 63.3106 13.5539 63.3691 13.5029 63.4201C13.4519 63.4711 13.3919 63.5101 13.3229 63.5371C13.2539 63.5671 13.1804 63.5821 13.1024 63.5821C13.0244 63.5821 12.9509 63.5671 12.8819 63.5371C12.8129 63.5101 12.7529 63.4711 12.7019 63.4201C12.6539 63.3691 12.6149 63.3106 12.5849 63.2446C12.5579 63.1756 12.5444 63.1006 12.5444 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"8.5\\\" y=\\\"10.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"8.5\\\" y=\\\"58.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><defs><filter id=\\\"filter0_d_359_14319\\\" x=\\\"32.1913\\\" y=\\\"42.0117\\\" width=\\\"16.7461\\\" height=\\\"17.8586\\\" filterUnits=\\\"userSpaceOnUse\\\" color-interpolation-filters=\\\"sRGB\\\"><feFlood flood-opacity=\\\"0\\\" result=\\\"BackgroundImageFix\\\"></feFlood><feColorMatrix in=\\\"SourceAlpha\\\" type=\\\"matrix\\\" values=\\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\\\" result=\\\"hardAlpha\\\"></feColorMatrix><feOffset dy=\\\"1\\\"></feOffset><feGaussianBlur stdDeviation=\\\"0.4\\\"></feGaussianBlur><feColorMatrix type=\\\"matrix\\\" values=\\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\\\"></feColorMatrix><feBlend mode=\\\"normal\\\" in2=\\\"BackgroundImageFix\\\" result=\\\"effect1_dropShadow_359_14319\\\"></feBlend><feBlend mode=\\\"normal\\\" in=\\\"SourceGraphic\\\" in2=\\\"effect1_dropShadow_359_14319\\\" result=\\\"shape\\\"></feBlend></filter></defs></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"11\\\" cy=\\\"13\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"28.5\\\" y=\\\"46.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"11\\\" cy=\\\"61\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\" height: 15.67px; width: 19px; \\\"><path d=\\\"M1.9566 0.196289V3.80403H1.18854V1.18612L0.588146 1.79733L0.150024 1.33757L1.2859 0.196289H1.9566Z\\\"></path><path d=\\\"M19 1.50012H5V3.50012H19V1.50012Z\\\"></path><path d=\\\"M19 7.00012H5V9.00012H19V7.00012Z\\\"></path><path d=\\\"M5 12.5001H19V14.5001H5V12.5001Z\\\"></path><path d=\\\"M2.79641 9.83102V9.15491H1.32518C2.26093 8.47339 2.76936 7.9379 2.76936 7.32129C2.76936 6.6019 2.15816 6.16919 1.39009 6.16919C0.887062 6.16919 0.351579 6.35309 0 6.75876L0.438122 7.2672C0.681523 7.01298 0.99524 6.85071 1.40632 6.85071C1.70381 6.85071 1.99048 7.00757 1.99048 7.32129C1.99048 7.76482 1.55777 8.13803 0.0811337 9.23063V9.83102H2.79641Z\\\"></path><path d=\\\"M2.84509 14.8033C2.84509 15.4253 2.28797 15.8635 1.42254 15.8635C0.757248 15.8635 0.265037 15.6092 0 15.2847L0.40026 14.7709C0.64907 15.0305 1.04392 15.1819 1.3955 15.1819C1.83362 15.1819 2.07702 14.9926 2.07702 14.7222C2.07702 14.4355 1.85526 14.3057 1.35223 14.3057C1.20078 14.3057 0.957378 14.3111 0.903288 14.3165V13.6242C0.968195 13.6296 1.21701 13.6296 1.35223 13.6296C1.75249 13.6296 2.01752 13.5106 2.01752 13.2455C2.01752 12.9589 1.72544 12.8182 1.34682 12.8182C1.00065 12.8182 0.686932 12.9481 0.432713 13.1915L0.0486802 12.7101C0.340762 12.3801 0.79511 12.1367 1.42795 12.1367C2.27174 12.1367 2.791 12.5153 2.791 13.1157C2.791 13.5701 2.40156 13.8676 2.0013 13.9379C2.3691 13.9757 2.84509 14.2624 2.84509 14.8033Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 55 46\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.27337 44.636C1.76937 45.3827 2.60404 45.8333 3.50004 45.8333H43.5C44.5667 45.8333 45.532 45.1987 45.9507 44.2173L53.9507 25.5507C54.3054 24.7267 54.22 23.7827 53.7267 23.0333C53.2307 22.284 52.396 21.8333 51.5 21.8333H48.8334V11.1667C48.8334 8.22533 46.4414 5.83333 43.5 5.83333H27.2334L21.1427 1.068C20.6734 0.7 20.0974 0.5 19.5 0.5H6.16671C3.22537 0.5 0.833374 2.892 0.833374 5.83333V43.1667H0.852041C0.852041 43.6787 0.982707 44.1933 1.27337 44.636ZM41.7427 40.5H7.54537L13.26 27.1667H47.4574L41.7427 40.5ZM43.5 11.1667V21.8333H11.5C10.4334 21.8333 9.46804 22.468 9.04937 23.4493L6.16671 30.1773V11.1667H26.316H27.5H43.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - eraser</title><path class=\\\"cls-1\\\" d=\\\"M12.93,3.1,7.78,8.25,2.62,13.5a2.18,2.18,0,0,0,0,3.05L7.3,21.22a1.07,1.07,0,0,0,.76.32H20.68a.4.4,0,0,0,.4-.4V19.77a.4.4,0,0,0-.4-.4H13.53l7.84-7.84a2.17,2.17,0,0,0,0-3.06L16,3.1A2.17,2.17,0,0,0,12.93,3.1ZM8.51,19.37,4.17,15,9.32,9.78l.8-.81,5.37,5.37-4.94,4.94-.08.09h-2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - redo</title><path class=\\\"cls-1\\\" d=\\\"M8.47,20.13H11.4a.6.6,0,0,0,.6-.6v-1.3a.6.6,0,0,0-.6-.6h-3a3.82,3.82,0,0,1-3.78-3,3.76,3.76,0,0,1,3.67-4.54h7.5V13a.4.4,0,0,0,.65.32l5.21-4.17a.41.41,0,0,0,0-.63L16.4,4.39a.4.4,0,0,0-.65.32V7.62H8.25a6.26,6.26,0,0,0-6.2,7.08A6.41,6.41,0,0,0,8.47,20.13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - undo</title><path class=\\\"cls-1\\\" d=\\\"M8.25,10.12h7.39a3.82,3.82,0,0,1,3.78,3,3.76,3.76,0,0,1-3.67,4.53H12.6a.6.6,0,0,0-.6.61v1.3a.6.6,0,0,0,.6.6h2.93A6.41,6.41,0,0,0,22,14.7a6.26,6.26,0,0,0-6.2-7.08H8.25V4.71a.4.4,0,0,0-.65-.32L2.39,8.56a.41.41,0,0,0,0,.63L7.6,13.36A.4.4,0,0,0,8.25,13Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6 0C4.89543 0 4 0.89543 4 2V8.75H6V2H12V7H16.5V16.5H6V15.25H4V16.5C4 17.6046 4.89543 18.5 6 18.5H16.5C17.6046 18.5 18.5 17.6046 18.5 16.5V6.41421C18.5 5.88378 18.2893 5.37507 17.9142 5L13.5 0.58579C13.1249 0.21071 12.6162 0 12.0858 0H6Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M2.5 9.5V8H0.5V9.5C0.5 11.433 2.067 13 4 13L8 13.0004V14.5004C8 14.7064 8.2352 14.824 8.4 14.7004L11.4667 12.4004C11.7333 12.2004 11.7333 11.8004 11.4667 11.6004L8.4 9.30045C8.2352 9.17685 8 9.29445 8 9.50045V11.0004H4C3.17157 11.0004 2.5 10.3284 2.5 9.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.4917 13.5493H18.325V9.25016C18.329 9.23204 18.329 9.21328 18.325 9.19516C18.324 9.11363 18.3084 9.03293 18.2792 8.95683V8.87433C18.2352 8.77231 18.1731 8.67913 18.0958 8.59933L12.5958 3.09933C12.518 3.02624 12.4281 2.9673 12.33 2.92516H12.2475L12 2.8335H5.49166C4.47914 2.8335 3.65833 3.65431 3.65833 4.66683V19.3335C3.65833 20.346 4.47914 21.1668 5.49166 21.1668H10.9917V19.3335H5.49166V4.66683H10.9917V9.25016C10.9917 9.75642 11.4021 10.1668 11.9083 10.1668H16.4917V13.5493Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.25 17.5L17.0417 14.9975C16.9306 14.9085 16.7781 14.8919 16.6505 14.9547C16.5228 15.0175 16.4431 15.1486 16.4458 15.2908V16.895H12.7792V18.7283H16.4458V20.3417C16.4466 20.4823 16.5278 20.61 16.6547 20.6706C16.7816 20.7311 16.9319 20.7137 17.0417 20.6258L20.25 18.105C20.3461 18.0341 20.4028 17.9219 20.4028 17.8025C20.4028 17.6831 20.3461 17.5708 20.25 17.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 16.25L19 20L16 16.25H18.25V11H19.75V16.25H22Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 14.75L19 11L16 14.75H18.25V20H19.75V14.75H22Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24\\\" xml:space=\\\"preserve\\\"><path d=\\\"M2 4a2 2 0 0 1 2-2h9a1 1 0 0 1 .707.293l2 2A1 1 0 0 1 16 5h1.812a2 2 0 0 1 1.425.597l2.188 2.222A2 2 0 0 1 22 9.222V20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2H4a2 2 0 0 1-2-2V4zm10.586 0 1 1H10a2 2 0 0 0-2 2v7a1 1 0 0 1-1-1v-2H5v2a3 3 0 0 0 3 3v2H4V4h8.586zM10 16v4h10V10h-3V7h-7v7h2v-2.414L15.414 15 12 18.414V16h-2z\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - outlines</title><path class=\\\"cls-1\\\" d=\\\"M4.59,12a1.31,1.31,0,1,1-1.31-1.31A1.31,1.31,0,0,1,4.59,12ZM3.28,4.44A1.31,1.31,0,1,0,4.59,5.75,1.31,1.31,0,0,0,3.28,4.44Zm0,12.5a1.31,1.31,0,1,0,1.31,1.31A1.31,1.31,0,0,0,3.28,16.94ZM7,13.25H22v-2.5H7ZM20.53,4.5H7V7H22V4.5ZM7,19.5H22V17H7Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - thumbnail - line</title><path class=\\\"cls-1\\\" d=\\\"M16.5,5.66H3.81A1.81,1.81,0,0,0,2,7.47V20.15A1.82,1.82,0,0,0,3.81,22H16.5a1.82,1.82,0,0,0,1.81-1.82V7.47A1.81,1.81,0,0,0,16.5,5.66ZM3.81,20.15V7.47H16.5V20.15Zm6.34-5.43H5.62V9.28h4.53ZM12,16.53h2.71v1.81H5.62V16.53H12Zm0-7.25h2.71v1.81H12Zm0,3.63h2.71v1.81H12ZM22,3.85V12H20.19V3.85H8.41V2H20.19A1.82,1.82,0,0,1,22,3.85Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.2 8.1V2.7C16.2 1.7073 15.3927 0.9 14.4 0.9H11.7C11.7 0.4032 11.2977 0 10.8 0H5.4C4.9023 0 4.5 0.4032 4.5 0.9H1.8C0.8073 0.9 0 1.7073 0 2.7V14.4C0 15.3927 0.8073 16.2 1.8 16.2H8.1C8.1 17.1927 8.9073 18 9.9 18H16.2C17.1927 18 18 17.1927 18 16.2V9.9C18 8.9073 17.1927 8.1 16.2 8.1ZM8.1 9.9V14.4H1.8V2.7H4.5V4.5H11.7V2.7H14.4V8.1H9.9C8.9073 8.1 8.1 8.9073 8.1 9.9ZM9.9 16.2V9.9H16.2L16.2009 16.2H9.9Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M15 11H11V12.5H15V11Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M15 13.5H12V15H15V13.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.2 8.1V2.7C16.2 1.7073 15.3927 0.9 14.4 0.9H11.7C11.7 0.4032 11.2977 0 10.8 0H5.4C4.9023 0 4.5 0.4032 4.5 0.9H1.8C0.8073 0.9 0 1.7073 0 2.7V14.4C0 15.3927 0.8073 16.2 1.8 16.2H8.1C8.1 17.1927 8.9073 18 9.9 18H16.2C17.1927 18 18 17.1927 18 16.2V9.9C18 8.9073 17.1927 8.1 16.2 8.1ZM8.1 9.9V14.4H1.8V2.7H4.5V4.5H11.7V2.7H14.4V8.1H9.9C8.9073 8.1 8.1 8.9073 8.1 9.9ZM9.9 16.2V9.9H16.2L16.2009 16.2H9.9Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 14 14\\\" fill=\\\"#485056\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.00223 14.0001C2.05623 14.0001 2.11023 13.9934 2.16356 13.9801L4.83023 13.3134C4.94756 13.2841 5.05489 13.2234 5.14023 13.1381L13.3356 4.94274C13.5876 4.69074 13.7262 4.35607 13.7262 4.00007C13.7262 3.64407 13.5876 3.3094 13.3356 3.0574L12.2782 2.00007C11.7742 1.49607 10.8969 1.49607 10.3929 2.00007L2.19756 10.1954C2.11223 10.2807 2.05156 10.3881 2.02223 10.5047L1.35556 13.1714C1.29823 13.3987 1.36556 13.6387 1.53089 13.8047C1.65689 13.9314 1.82756 14.0001 2.00223 14.0001ZM11.3356 2.94274L12.3929 4.00007L11.3356 5.0574L10.2782 4.00007L11.3356 2.94274ZM3.27089 11.0074L9.33556 4.94274L10.3929 6.00007L4.32756 12.0647L2.91823 12.4167L3.27089 11.0074Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#4F565E\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M13.67 2H6C4.8954 2 4 2.8954 4 4V20C4 21.1046 4.8954 22 6 22H18C19.1046 22 20 21.1046 20 20V8.33C20 7.7996 19.7893 7.2851 19.4142 6.91L15.09 2.5858C14.7149 2.2107 14.2004 2 13.67 2ZM6 20V4H13V8.5C13 8.7761 13.2239 9 13.5 9H18V20H6Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -2 21 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.4261 8.09498L1.42611 0.0949834C1.07611 -0.0680166 0.663114 -0.0170167 0.365114 0.227983C0.0661136 0.472983 -0.0628864 0.867984 0.0301136 1.24198L1.96911 8.99998L0.0301136 16.758C-0.0638864 17.132 0.0661136 17.528 0.365114 17.773C0.548114 17.923 0.772114 18 1.00011 18C1.14511 18 1.29011 17.969 1.42611 17.905L18.4261 9.90498C18.7761 9.73998 19.0001 9.38798 19.0001 8.99998C19.0001 8.61198 18.7761 8.25998 18.4261 8.09498ZM2.48111 15.197L3.32011 11.84L9.00011 8.99998L3.32011 6.15998L2.48111 2.80298L15.6511 8.99998L2.48111 15.197Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16 2H2L2 16H16V2ZM2 0C0.895431 0 0 0.89543 0 2V16C0 17.1046 0.89543 18 2 18H16C17.1046 18 18 17.1046 18 16V2C18 0.895431 17.1046 0 16 0H2Z\\\"></path><path d=\\\"M12 1H13.5V17H12V1Z\\\"></path><path d=\\\"M4 4H10V5.75H4V4Z\\\"></path><path d=\\\"M4 7.5H10V9.25H4V7.5Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.29815 13.6088L7.53553 14.8462L8.5962 13.7855L7.35881 12.5482L8.59619 11.3108L7.53553 10.2501L6.29815 11.4875L5.06066 10.25L4 11.3107L5.23749 12.5482L4 13.7856L5.06066 14.8463L6.29815 13.6088Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 21H19C20.103 21 21 20.103 21 19V8C21 7.735 20.895 7.48 20.707 7.293L16.707 3.293C16.52 3.105 16.266 3 16 3H5C3.897 3 3 3.897 3 5V19C3 20.103 3.897 21 5 21ZM15 19H9V14H15V19ZM13 7H11V5H13V7ZM5 5H7V9H9H11H13H14H15V5H15.586L19 8.414L19.001 19H17V14C17 12.897 16.103 12 15 12H9C7.897 12 7 12.897 7 14V19H5V5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#CFD4DA\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#3183C8\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.5 6H4.5C3.94772 6 3.5 6.44772 3.5 7V17C3.5 17.5523 3.94772 18 4.5 18H9.5V16H5.5V8H9.5V6ZM15.5 16H19.5V8H15.5V6H20.5C21.0523 6 21.5 6.44772 21.5 7V17C21.5 17.5523 21.0523 18 20.5 18H15.5V16Z\\\"></path><path d=\\\"M13 7L8.5 10.75V3.25L13 7Z\\\"></path><path d=\\\"M11.75 17L16.25 20.75V13.25L11.75 17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 7H20V9H4V7ZM4 3H20V5H4V3ZM4 11H20V13H4V11ZM4 15H20V17H4V15ZM6 19H18V21H6V19Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 0 20 20\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 20L8 18V15H13C13.553 15 14 14.553 14 14V12.414C14 11.888 13.786 11.372 13.414 11L12 9.586V6C12.553 6 13 5.553 13 5V2C13 0.897 12.103 0 11 0H3C1.897 0 1 0.897 1 2V5C1 5.553 1.448 6 2 6V9.586L0.586 11C0.213 11.372 0 11.888 0 12.414V14C0 14.553 0.448 15 1 15H6V18L7 20ZM3 2H11V4H3V2ZM2 12.414L3.707 10.707C3.895 10.52 4 10.266 4 10V6H10V10C10 10.266 10.105 10.52 10.293 10.707L12 12.414V13H2V12.414Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path id=\\\"svg_1\\\" fill=\\\"black\\\" d=\\\"m19.27838,3.27762c-0.0298,-0.11112 -0.1323,-0.18778 -0.2473,-0.18396c-8.04996,0.26687 -14.4939,6.87671 -14.4939,14.99162c0,0.9567 0.08957,1.8925 0.26077,2.7995c0.02206,0.1168 0.12473,0.2005 0.24363,0.2005l1.52753,0c0.1613,0 0.2803,-0.1505 0.24707,-0.3083c-0.18284,-0.8685 -0.279,-1.7689 -0.279,-2.6917c0,-7.1797 5.8203,-13 13,-13c0.1133,0 0.1969,-0.10705 0.1676,-0.21648l-0.4264,-1.59118z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path fill=\\\"default\\\" class=\\\"st0\\\" d=\\\"M15.2,12.2v4H7.8v-1.6c0-0.3-0.4-0.5-0.6-0.3l-3.2,2.5c-0.2,0.1-0.2,0.4,0,0.6L7.2,20c0.2,0.2,0.6,0,0.6-0.3 v-1.6h8.3c0.5,0,0.9-0.4,0.9-0.8l0-5.1H15.2z\\\"></path><path class=\\\"st0\\\" d=\\\"M17,12.2h1.6c0.9,0,1.7-0.7,1.7-1.7V5.6c0-0.9-0.7-1.7-1.7-1.7H5.4C4.5,4,3.7,4.7,3.7,5.6v4.9 c0,0.9,0.7,1.7,1.7,1.7h9.8H17z M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path><path fill=\\\"none\\\" d=\\\"M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"fill: rgba(0, 0, 0, 1);transform: ;msFilter:;\\\"><path d=\\\"M5,2C3.897,2,3,2.897,3,4v12c0,1.103,0.897,2,2,2h3.586L12,21.414L15.414,18H19c1.103,0,2-0.897,2-2V4c0-1.103-0.897-2-2-2 H5z M19,16h-4.414L12,18.586L9.414,16H5V4h14V16z\\\"></path><path d=\\\"M11 6H13V12H11zM11 13H13V15H11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - check - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.01 12.99L8.99998 10.99L7.72998 12.26L11.13 15.66L16.26 9.49998L14.88 8.34998L11.01 12.99V12.99Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - comment - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2.46H4a2,2,0,0,0-2,2v10a2,2,0,0,0,2,2H7v5.08l6.35-5.08H20a2,2,0,0,0,2-2v-10A2,2,0,0,0,20,2.46Zm0,12H12.65L9,17.38V14.46H4v-10H20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M18,8.46H6v-2H18Zm-2.5,4H6v-2h9.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - cross - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.2 3H4.8C3.80816 3.00546 3.00546 3.80816 3 4.8V19.2C3.00546 20.1918 3.80816 20.9945 4.8 21H19.2C20.1918 20.9945 20.9945 20.1918 21 19.2V4.8C20.9945 3.80816 20.1918 3.00546 19.2 3ZM4.8 19.2V4.8H19.2V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.5399 8.18005L11.9999 10.7301L9.45993 8.18005L8.17993 9.46005L10.7299 12.0001L8.17993 14.5401L9.45993 15.8201L11.9999 13.2701L14.5399 15.8201L15.8199 14.5401L13.2699 12.0001L15.8199 9.46005L14.5399 8.18005V8.18005Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0001 8.33997C9.97873 8.33997 8.34009 9.9786 8.34009 12C8.34009 14.0213 9.97873 15.66 12.0001 15.66C14.0215 15.66 15.6601 14.0213 15.6601 12C15.6332 9.98986 14.0102 8.36688 12.0001 8.33997Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;} .cls-0{fill: none}</style></defs><title>icon - tool - free highlight - fill</title><rect class=\\\"cls-2\\\" x=\\\"4\\\" y=\\\"5\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"#868E96\\\" strokestroke-width=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"5\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"17\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"8\\\" width=\\\"18\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"7\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"11\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"15\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"18.37\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"20\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - image - line</title><path class=\\\"cls-1\\\" d=\\\"M19.89,2H4.33A2.23,2.23,0,0,0,2.11,4.22V19.78A2.23,2.23,0,0,0,4.33,22H19.89a2.22,2.22,0,0,0,2.22-2.22V4.22A2.22,2.22,0,0,0,19.89,2ZM4.33,19.78V4.22H19.89V19.78Z\\\"></path><polygon class=\\\"cls-1\\\" points=\\\"13.94 8.13 18.78 15.87 11.52 15.87 9.1 15.87 5.45 15.87 8.48 11.43 10.26 14.02 13.94 8.13\\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - link</title><g><rect class=\\\"cls-1\\\" x=\\\"5.51\\\" y=\\\"10.92\\\" width=\\\"12.99\\\" height=\\\"2.16\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect><path class=\\\"cls-1\\\" d=\\\"M9.7,18.89A3.25,3.25,0,0,1,5.11,14.3l3.06-3.07L6.64,9.7,3.58,12.77a5.41,5.41,0,0,0,7.66,7.65l3.06-3.06-1.53-1.53Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M20.42,3.58a5.41,5.41,0,0,0-7.65,0L9.7,6.64l1.54,1.53L14.3,5.11A3.25,3.25,0,0,1,18.89,9.7l-3.06,3.07,1.53,1.53,3.06-3.07A5.41,5.41,0,0,0,20.42,3.58Z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 8C19 7.44772 19.4477 7 20 7C20.5523 7 21 7.44772 21 8C21 8.55228 20.5523 9 20 9C19.4477 9 19 8.55228 19 8Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 12C19 11.4477 19.4477 11 20 11C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13C19.4477 13 19 12.5523 19 12Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 16C19 15.4477 19.4477 15 20 15C20.5523 15 21 15.4477 21 16C21 16.5523 20.5523 17 20 17C19.4477 17 19 16.5523 19 16Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 20C15 19.4477 15.4477 19 16 19C16.5523 19 17 19.4477 17 20C17 20.5523 16.5523 21 16 21C15.4477 21 15 20.5523 15 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 20C11 19.4477 11.4477 19 12 19C12.5523 19 13 19.4477 13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 4.90556C21 5.13138 20.7893 5.29793 20.5679 5.25357C19.7378 5.08725 18.8791 5 18 5C10.8203 5 5 10.8203 5 18C5 18.8791 5.08725 19.7378 5.25357 20.5679C5.29793 20.7893 5.13138 21 4.90556 21H3.70876C3.47096 21 3.26516 20.8327 3.22424 20.5984C3.07685 19.7544 3 18.8862 3 18C3 9.71573 9.71573 3 18 3C18.8862 3 19.7544 3.07685 20.5984 3.22424C20.8327 3.26516 21 3.47096 21 3.70876V4.90556Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 20C19 19.4477 19.4477 19 20 19C20.5523 19 21 19.4477 21 20C21 20.5523 20.5523 21 20 21C19.4477 21 19 20.5523 19 20Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2C6.5,2,2,6.5,2,12c0,5.5,4.5,10,10,10c5.5,0,10-4.5,10-10C22,6.5,17.5,2,12,2z M4.2,13.8 C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8c0.6,0,1.2,0.1,1.8,0.2L4.2,13.8z M5,15.8L15.8,5c1.3,0.7,2.4,1.8,3.1,3.1L8.1,19l0,0 C6.8,18.2,5.7,17.1,5,15.8z M12,20c-0.6,0-1.1-0.1-1.6-0.2l0,0l9.4-9.5c0.1,0.5,0.2,1.1,0.2,1.7C20,16.4,16.4,20,12,20z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.8,4.2l-9.6,9.6C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8C12.6,4,13.2,4.1,13.8,4.2z M15.8,5L5,15.8 c0.7,1.3,1.8,2.4,3.1,3.1l0,0L19,8.1C18.2,6.8,17.1,5.7,15.8,5z M19.8,10.3l-9.4,9.5l0,0c0.5,0.1,1.1,0.2,1.6,0.2c4.4,0,8-3.6,8-8 C20,11.4,19.9,10.9,19.8,10.3z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.5,2.8H5.5C4,2.8,2.8,4,2.8,5.5v13.1c0,1.4,1.2,2.6,2.6,2.6h13.1c1.4,0,2.6-1.2,2.6-2.6V5.5 C21.2,4,20,2.8,18.5,2.8z M4.7,4.7h5.7l-5.7,5.7V4.7z M4.7,18.2v-5.2l0,0l8.3-8.3l0,0h5.2L4.7,18.2z M6.1,19.3L19.3,6.1l0,5.2l-8,8 H6.1z M13.9,19.3l5.4-5.4l0,5.4H13.9z\\\"></path><path fill=\\\"none\\\" d=\\\"M10.4,4.7l-5.7,5.7V4.7H10.4z M12.9,4.7L12.9,4.7l-8.2,8.3l0,0v5.2L18.2,4.7H12.9z M19.3,6.1L6.1,19.3h5.2l8-8 L19.3,6.1z M19.3,13.9l-5.4,5.4h5.4L19.3,13.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M21.9,8.9l-9.2-6.7c-0.4-0.3-1-0.3-1.5,0L2.1,8.9c-0.4,0.3-0.6,0.9-0.5,1.4l3.5,10.8C5.3,21.6,5.8,22,6.3,22 h11.3c0.5,0,1-0.4,1.2-0.9l3.5-10.8C22.6,9.8,22.4,9.2,21.9,8.9z M12,4.3l1.9,1.4l-8.9,8.9l0,0l-1.4-4.2L12,4.3z M6.9,20.1l-1.1-3.4 l0,0l9.8-9.8l3.6,2.6h0L8.6,20.1H6.9z M17.1,20.1h-5.4l8.1-8.2h0L17.1,20.1z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.9,5.7l-8.9,8.9l-1.4-4.2l8.3-6L13.9,5.7z M19.2,9.5l-3.6-2.6l-9.8,9.8l1.1,3.4h1.7L19.2,9.5L19.2,9.5z M19.8,11.9l-8.1,8.2h5.4L19.8,11.9L19.8,11.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} .st1{fill:none;} </style><path class=\\\"st0\\\" d=\\\"M20.5,10.7c-0.5-4.2-4.2-7.3-8.4-7.3c-3.3,0-6.3,1.9-7.5,4.9C2,9.2,0.1,11.5,0,14.1c0,3.2,2.8,6,6,6h13.2 c2.6,0,4.9-2.2,4.7-4.8C24,13.2,22.6,11.3,20.5,10.7z M18.9,17.4H6.4C4.6,17.4,3,15.8,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.6 c0.7-2.2,2.8-3.8,5.1-3.8c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.3,20.1,17.4,18.9,17.4z\\\"></path><path fill=\\\"none\\\" d=\\\"M18.9,17.4H6.4C4.6,17.4,3,15.9,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.7c0.7-2.2,2.8-3.8,5.1-3.8 c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.4,20.1,17.4,18.9,17.4z\\\"></path><polygon class=\\\"st0\\\" points=\\\"11.4,4.9 12.6,5.9 4.5,17.1 3.3,16.1 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"15.5,7.1 16.7,8 9.5,18.3 8.3,17.4 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"18.3,10.8 19.3,11.6 14.5,18.3 13.5,17.5 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - distance - line</title><path class=\\\"cls-1\\\" d=\\\"M21.46,6.59l-4.05-4a2,2,0,0,0-2.79.08l-12,12a2,2,0,0,0-.08,2.79l4.05,4.05a2,2,0,0,0,2.79-.08l12-12A2,2,0,0,0,21.46,6.59ZM20,8,8,20a.43.43,0,0,1-.09.06s0,0,0,0l-4-4A.17.17,0,0,1,4,16L5.24,14.7l2,2,1.35-1.35-2-2L7.94,12l2.71,2.7L12,13.35l-2.7-2.7L10.65,9.3l2,2L14,10l-2-2,1.35-1.35L16.06,9.3l1.35-1.36L14.7,5.24,16,4c.06-.05.1-.06.09-.08l4,4A.17.17,0,0,1,20,8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - perimeter</title><path class=\\\"cls-1\\\" d=\\\"M16.07,4.3H7.92v-2h8.15ZM4,15.43H2v1.85a1.81,1.81,0,0,0,1.81,1.8h1.8v-2H4ZM4,4.28H5.6v-2H3.8A1.81,1.81,0,0,0,2,4.08V5.89H4ZM4,8.21H2v4.91H4ZM17.71,21.6a.4.4,0,0,0,.68-.28V14.8a.4.4,0,0,0-.68-.28l-3.26,3.26a.4.4,0,0,0,0,.56ZM20,5.89h2V4.09a1.82,1.82,0,0,0-1.81-1.81h-1.8v2H20Zm0,2.32v4.91h2V8.21ZM20,17H18.4v2h1.8A1.81,1.81,0,0,0,22,17.28v-1.8H20ZM9.27,17H7.92v2H9.27V21h2V14.69h-2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 529 472\\\" preserveAspectRatio=\\\"xMidYMid meet\\\"><metadata> Created by potrace 1.16, written by Peter Selinger 2001-2019 </metadata><title>icon - 3D</title><g transform=\\\"translate(0,472) scale(0.1,-0.1)\\\" fill=\\\"#abb0c4\\\" stroke=\\\"none\\\"><path d=\\\"M2414 4710 c-12 -5 -39 -11 -60 -15 -43 -7 -81 -14 -104 -18 -8 -2 -33 -8 -55 -14 -22 -7 -54 -14 -71 -16 -17 -3 -40 -9 -50 -15 -11 -5 -32 -12 -49 -15 -16 -3 -37 -8 -45 -11 -8 -3 -26 -8 -40 -10 -43 -8 -81 -19 -255 -71 -49 -15 -153 -45 -230 -66 -77 -22 -148 -41 -157 -44 -10 -3 -28 -8 -40 -11 -30 -7 -40 -10 -58 -17 -19 -6 -105 -32 -145 -43 -16 -4 -32 -8 -35 -9 -3 -1 -25 -7 -50 -14 -25 -6 -63 -18 -85 -25 -56 -19 -185 -58 -199 -60 -6 -1 -15 -4 -21 -7 -5 -4 -41 -16 -80 -29 -81 -25 -187 -79 -229 -116 -28 -25 -29 -33 -4 -38 64 -12 128 -31 128 -38 0 -5 4 -7 9 -3 5 3 29 -2 53 -10 24 -9 51 -18 60 -20 21 -6 16 -4 198 -55 80 -23 152 -43 160 -45 8 -3 76 -21 150 -42 74 -20 137 -39 140 -42 5 -6 19 -10 60 -17 14 -3 32 -7 40 -11 16 -6 24 -9 55 -17 92 -24 309 -86 323 -92 23 -10 55 -18 111 -30 14 -3 28 -7 33 -10 4 -3 16 -7 25 -9 10 -2 83 -22 163 -45 80 -23 197 -55 260 -72 63 -17 117 -34 120 -37 3 -3 12 -8 20 -9 67 -16 61 -14 130 -35 51 -16 58 -16 110 0 69 21 82 24 138 37 9 2 39 12 66 21 26 9 57 19 67 21 11 2 29 7 42 10 12 3 27 6 32 7 6 2 15 5 20 9 9 5 303 88 365 103 8 2 15 4 15 5 0 1 7 3 15 5 76 19 80 20 102 29 14 6 231 68 323 92 31 8 39 11 55 17 8 4 26 8 40 11 41 7 55 11 60 17 3 3 75 24 160 47 169 47 190 52 205 55 6 2 16 6 23 11 7 4 16 5 19 2 3 -3 11 -2 17 4 7 5 86 30 176 55 91 25 190 53 220 61 30 9 63 18 74 20 30 6 30 11 0 38 -49 43 -153 92 -284 134 -201 65 -258 82 -275 82 -8 0 -15 4 -15 8 0 5 -6 9 -12 10 -7 0 -22 3 -33 6 -11 3 -40 10 -65 16 -42 10 -64 17 -115 36 -26 9 -30 10 -135 38 -215 57 -296 81 -302 90 -4 6 -8 8 -8 4 0 -6 -65 11 -225 58 -66 19 -84 24 -120 31 -16 2 -48 11 -70 19 -22 8 -51 17 -65 20 -14 3 -43 10 -65 16 -61 17 -53 15 -127 34 -13 3 -41 7 -63 10 -22 2 -62 7 -90 10 -78 10 -428 12 -451 4z\\\"></path><path d=\\\"M63 3692 c-24 -57 -48 -152 -53 -207 -5 -49 -5 -2405 0 -2435 8 -56 55 -185 87 -239 44 -74 149 -186 210 -224 39 -25 104 -52 145 -62 9 -2 52 -15 95 -29 158 -50 213 -66 228 -66 8 0 15 -5 15 -12 0 -6 2 -9 6 -6 3 3 26 -1 52 -9 60 -18 81 -24 115 -30 15 -3 27 -10 27 -15 0 -5 4 -6 10 -3 5 3 16 3 23 -2 6 -4 14 -8 17 -8 36 -6 120 -30 120 -34 0 -4 8 -7 18 -8 9 0 58 -13 107 -27 96 -28 114 -33 144 -40 11 -3 30 -10 43 -17 13 -7 24 -12 26 -11 1 1 3 2 5 1 1 0 9 -2 17 -4 8 -2 25 -6 38 -9 12 -3 32 -9 45 -12 31 -7 40 -10 57 -17 8 -4 26 -8 40 -11 14 -2 59 -14 100 -26 41 -12 86 -23 100 -26 14 -2 36 -9 50 -14 24 -9 95 -27 135 -34 11 -2 34 -6 51 -10 17 -3 48 -8 70 -12 21 -3 48 -7 59 -9 11 -3 36 -7 55 -11 19 -4 55 -7 80 -8 42 -1 44 1 51 31 3 18 7 704 8 1526 2 1224 0 1494 -11 1495 -7 0 -22 3 -33 6 -11 3 -81 22 -155 43 -74 20 -137 39 -140 42 -5 6 -19 10 -60 17 -14 3 -41 10 -60 16 -19 7 -39 13 -45 14 -64 16 -337 94 -344 99 -6 3 -20 8 -31 11 -11 2 -28 6 -37 9 -10 3 -83 23 -163 45 -79 22 -151 43 -160 46 -8 4 -18 7 -22 6 -4 -1 -20 3 -35 10 -30 12 -36 14 -70 22 -50 13 -64 16 -80 21 -164 45 -256 71 -343 96 -58 17 -136 39 -175 50 -38 11 -77 23 -85 26 -21 8 -49 16 -100 27 -11 3 -25 8 -31 11 -5 4 -25 9 -42 12 -18 3 -37 9 -43 14 -6 5 -14 6 -17 2 -4 -3 -13 0 -22 7 -8 7 -15 10 -15 7 0 -3 -14 -2 -31 3 -29 9 -31 7 -46 -28z m932 -852 c0 -2 9 -4 20 -5 91 -14 133 -24 174 -42 20 -9 42 -17 49 -19 7 -1 38 -17 70 -34 175 -99 315 -267 370 -444 24 -79 20 -200 -8 -264 -27 -63 -89 -120 -165 -153 -30 -13 -55 -26 -55 -29 0 -3 14 -14 31 -24 54 -32 156 -135 199 -201 23 -36 55 -102 71 -147 26 -76 28 -92 25 -193 -7 -194 -67 -296 -220 -371 -68 -33 -70 -33 -210 -33 -130 1 -148 3 -226 30 -47 16 -121 51 -164 77 -102 60 -237 193 -298 292 -50 81 -104 222 -110 286 -3 38 -2 39 27 37 17 0 44 -4 60 -7 17 -3 46 -8 65 -11 44 -7 75 -13 75 -15 0 -1 16 -4 35 -7 51 -7 83 -25 85 -48 1 -11 12 -45 24 -75 50 -131 123 -204 243 -241 59 -18 71 -19 103 -8 52 19 100 62 123 113 29 60 25 196 -7 278 -49 125 -179 221 -315 233 -26 2 -50 6 -52 8 -9 9 -13 50 -7 61 4 6 8 26 9 46 1 19 3 35 3 35 1 0 4 22 7 50 3 27 9 54 14 60 5 6 48 10 103 9 86 -1 98 1 126 23 45 35 63 77 63 145 0 238 -315 374 -408 175 -13 -29 -24 -58 -24 -65 0 -20 -36 -7 -235 89 -97 47 -100 51 -86 100 59 197 184 299 356 293 33 -1 60 -3 60 -4z\\\"></path><path d=\\\"M5178 3724 c-3 -2 -14 -7 -24 -9 -11 -2 -41 -11 -69 -19 -27 -8 -90 -27 -140 -41 -80 -24 -157 -45 -250 -69 -5 -1 -37 -11 -70 -21 -33 -10 -64 -20 -70 -21 -13 -4 -57 -14 -70 -17 -5 -2 -14 -5 -20 -8 -5 -4 -71 -23 -145 -43 -74 -21 -160 -45 -190 -53 -67 -20 -69 -20 -100 -28 -34 -8 -43 -11 -60 -18 -18 -8 -184 -55 -214 -62 -55 -11 -67 -14 -76 -20 -5 -3 -18 -8 -27 -10 -10 -2 -83 -23 -163 -45 -80 -23 -152 -43 -160 -45 -8 -2 -36 -11 -62 -19 -27 -8 -48 -12 -48 -9 0 3 -7 0 -15 -7 -8 -6 -18 -9 -24 -6 -5 3 -11 2 -13 -2 -1 -5 -50 -21 -108 -36 -58 -16 -125 -35 -148 -43 -24 -8 -53 -15 -63 -16 -20 -1 -20 -15 -18 -1495 1 -821 5 -1507 8 -1525 6 -29 10 -32 46 -32 22 -1 54 3 70 7 17 4 48 10 70 13 63 9 88 13 125 20 19 4 44 9 55 11 29 4 58 11 98 22 20 6 38 7 41 4 3 -3 6 -1 6 5 0 5 6 10 13 11 15 1 35 6 62 15 11 3 34 9 50 12 33 7 42 9 65 17 8 3 42 13 75 23 75 20 263 73 290 81 11 3 25 6 30 7 6 2 15 5 20 8 6 4 44 14 85 24 41 10 80 21 85 25 12 9 157 45 168 42 4 -1 7 2 7 7 0 5 17 12 38 17 20 4 39 8 42 9 76 22 97 28 108 28 6 0 12 4 12 9 0 4 8 8 18 8 9 0 36 7 59 15 22 8 52 16 65 19 12 2 35 9 51 15 15 6 27 8 27 5 0 -4 6 -2 13 3 6 6 58 25 113 42 151 46 256 133 349 287 30 49 77 179 85 234 5 29 5 2386 1 2435 -5 56 -47 201 -65 225 -12 16 -30 23 -38 14z m-858 -950 c19 -4 42 -8 50 -10 94 -16 183 -64 259 -141 132 -133 191 -308 185 -553 -1 -69 -5 -141 -8 -160 -2 -19 -7 -55 -11 -80 -37 -277 -235 -575 -505 -759 -73 -50 -170 -104 -170 -94 0 4 -4 2 -8 -4 -7 -12 -182 -77 -228 -86 -10 -2 -26 -6 -34 -9 -35 -13 -108 -36 -145 -47 -95 -26 -151 -43 -170 -52 -11 -5 -31 -11 -45 -13 -40 -8 -64 -14 -82 -21 -12 -5 -18 -2 -19 6 -1 8 -2 427 -3 931 l-1 917 40 11 c22 6 50 13 63 15 36 8 64 16 225 64 37 11 67 18 67 16 0 -2 16 3 36 11 20 8 39 13 41 10 3 -3 13 -1 23 4 9 5 28 11 41 14 28 6 64 14 99 21 14 3 43 8 65 11 22 3 41 6 42 8 5 4 160 -3 193 -10z\\\"></path><path d=\\\"M3967 2443 c-2 -2 -17 -6 -33 -8 -44 -6 -73 -13 -84 -20 -5 -3 -19 -8 -30 -11 -11 -2 -30 -6 -42 -9 -12 -2 -26 -9 -31 -14 -18 -18 -22 -143 -22 -691 0 -529 0 -535 20 -533 25 3 46 8 65 16 8 3 51 18 95 32 279 91 443 251 517 505 24 84 29 123 32 250 6 241 -60 396 -198 461 -54 26 -68 28 -172 27 -62 0 -115 -2 -117 -5z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6 2H12L17 7V16C17 17.1046 16.1046 18 15 18H6C4.89543 18 4 17.1046 4 16V4C4 2.89543 4.89543 2 6 2ZM6 3.75H11.2751L15.25 7.72487V16C15.25 16.1381 15.1381 16.25 15 16.25H6C5.86193 16.25 5.75 16.1381 5.75 16V4C5.75 3.86193 5.86193 3.75 6 3.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M18.75 8.5H20.5V20.5C20.5 21.0523 20.0523 21.5 19.5 21.5H11.5V19.75H18.75V8.5Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M11 3L16 8H11V3Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M10.2982 12.8588L11.5355 14.0962L12.5962 13.0355L11.3588 11.7982L12.5962 10.5608L11.5355 9.50011L10.2982 10.7375L9.06066 9.5L8 10.5607L9.23749 11.7982L8 13.0356L9.06066 14.0963L10.2982 12.8588Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - highlight</title><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M19.9658 6.91017H19.92L16.2992 3.25267C16.1376 3.0909 15.9183 3 15.6896 3C15.4609 3 15.2416 3.0909 15.08 3.25267L7.82917 10.4118C7.68847 10.5239 7.59386 10.6837 7.56334 10.861L6.56417 15.2518L4.8225 17.4427H7.6275L8.73667 16.3335L12.2567 15.5452C12.4386 15.5144 12.6023 15.4162 12.715 15.2702L19.92 8.12934C20.2428 7.7936 20.2625 7.2692 19.9658 6.91017V6.91017ZM11.9083 13.5377L9.54334 11.1727L15.7583 5.0585L18.1233 7.4235L11.9083 13.5377Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M18.4167 17.2685C18.744 18.2557 18.9773 19.2716 19.1133 20.3027C18.2719 19.3853 17.15 18.7728 15.9233 18.561C14.8314 18.4146 13.7204 18.5244 12.6783 18.8818C11.4047 19.3332 10.1589 19.8597 8.9475 20.4585C7.81125 21.1097 6.50296 21.3975 5.19833 21.2835C4.80235 21.1839 4.45663 20.9426 4.22666 20.6052C4.14173 20.4738 4.07395 20.3321 4.025 20.1835C4.01028 20.0885 3.98252 19.9959 3.9425 19.9085C3.80542 19.4227 3.84105 18.9043 4.04333 18.4418C4.15136 18.1403 4.32695 17.8675 4.55667 17.6443L4.905 19.4135C4.79615 19.4335 4.71381 19.5233 4.70333 19.6335C4.70333 19.8993 5.79417 19.7527 6.67417 19.4227C7.31069 19.1708 7.92412 18.8641 8.5075 18.506C9.77851 17.691 11.1416 17.0294 12.5683 16.5352C13.7125 16.1519 14.9299 16.0389 16.125 16.2052C16.6842 16.3049 17.2193 16.5102 17.7017 16.8102C17.8758 16.8927 18.4167 17.2685 18.4167 17.2685Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - line</title><path class=\\\"cls-1\\\" d=\\\"M18.91,19.66a1.13,1.13,0,0,1-1.35,1.82,5.82,5.82,0,0,0-2.09-1c-3.22-.85-4.57-.29-6.82.63l-.55.23A7.42,7.42,0,0,1,5.42,22a3,3,0,0,1-2-.69,2.38,2.38,0,0,1-.87-1.66,1.81,1.81,0,0,1,.59-1.36,9.16,9.16,0,0,1,.93-.78,1.13,1.13,0,0,1,1.58.23,1.14,1.14,0,0,1-.23,1.59,2.93,2.93,0,0,0-.42.33c.27.13.84.17,2.25-.4L7.8,19a10.81,10.81,0,0,1,8.25-.72A7.89,7.89,0,0,1,18.91,19.66Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M21.45,5.77a2.09,2.09,0,0,1-.62,1.51l-9.16,9.16c-.09.08-.26.26-.44.26,0,0-4.18.9-4.42.89a1,1,0,0,1-.72-.13.67.67,0,0,1-.16-.73l.8-4.53c0-.18.08-.27.26-.45L13,5.8l3.2-3.2a2.2,2.2,0,0,1,3,0l1.66,1.66A2.34,2.34,0,0,1,21.45,5.77ZM16.21,9.06,14.37,7.22,8.59,13l1.84,1.84Zm3.2-3.2L17.57,4,15.88,5.71l1.84,1.84Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M17.83,2.83H6.17A1.67,1.67,0,0,0,4.5,4.5v15a1.67,1.67,0,0,0,1.67,1.67H17.83A1.67,1.67,0,0,0,19.5,19.5V4.5A1.67,1.67,0,0,0,17.83,2.83ZM6.17,19.5V4.5H17.83v15Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M13.67,10.22H7.84v7.59h8.32V10.22Zm.38,4.88a.26.26,0,0,1,0,.38l-.58.58a.28.28,0,0,1-.38,0L12,15l-1.09,1.09a.28.28,0,0,1-.38,0L10,15.48a.28.28,0,0,1,0-.38L11,14,10,12.92a.28.28,0,0,1,0-.38l.58-.58a.26.26,0,0,1,.38,0L12,13.05,13.09,12a.26.26,0,0,1,.38,0l.58.58a.26.26,0,0,1,0,.38L13,14Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.5 8C8.22386 8 8 8.22386 8 8.5V15.5C8 15.7761 8.22386 16 8.5 16H15.5C15.7761 16 16 15.7761 16 15.5V8.5C16 8.22386 15.7761 8 15.5 8H8.5ZM13.2374 14.2981L12.0001 13.0607L10.7626 14.2982L9.7019 13.2375L10.9394 12.0001L9.7019 10.7626L10.7626 9.7019L12.0001 10.9394L13.2374 9.70201L14.2981 10.7627L13.0607 12.0001L14.2981 13.2374L13.2374 14.2981Z\\\" fill=\\\"none\\\"></path><path d=\\\"M21.4778 18.2034C21.6137 18.0674 21.5427 17.8348 21.354 17.798L17.2862 17.0046C17.119 16.972 16.972 17.119 17.0046 17.2862L17.798 21.354C17.8348 21.5427 18.0674 21.6138 18.2034 21.4778L19.0255 20.6557C19.1192 20.562 19.2712 20.562 19.365 20.6557L20.6389 21.9297C20.7327 22.0234 20.8847 22.0234 20.9784 21.9297L21.9297 20.9784C22.0234 20.8847 22.0234 20.7327 21.9297 20.6389L20.6557 19.365C20.562 19.2712 20.562 19.1192 20.6557 19.0254L21.4778 18.2034Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3H9V5H7V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 7H5V9H3V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 5C3 3.89543 3.89543 3 5 3V5H3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 11H5V13H3V11Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 15H5V17H3V15Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19H5V21C3.89543 21 3 20.1046 3 19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 19H9V21H7V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 19H13V21H11V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3H13V5H11V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3H17V5H15V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3C20.1046 3 21 3.89543 21 5H19V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 7H21V9H19V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 11H21V13H19V11Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - select - pages</title><path d=\\\"M20 2H8C6.897 2 6 2.897 6 4V16C6 17.103 6.897 18 8 18H20C21.103 18 22 17.103 22 16V4C22 2.897 21.103 2 20 2ZM8 16V4H20L20.002 16H8Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M4 8.00037H2V20.0004C2 21.1034 2.897 22.0004 4 22.0004H16V20.0004H4V8.00037ZM12.933 11.5194L11.207 9.79338L9.793 11.2074L13.067 14.4814L18.769 7.64137L17.231 6.35938L12.933 11.5194Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - arrow</title><path class=\\\"cls-1\\\" d=\\\"M14.66,7.57,5.09,17.14a.61.61,0,0,0,0,.85l.92.92a.61.61,0,0,0,.85,0l9.57-9.57L18.06,11a.6.6,0,0,0,1-.42v-5a.6.6,0,0,0-.6-.6h-5a.6.6,0,0,0-.42,1Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.4,11.2C18,8,15.2,5.6,12,5.6c-2.5,0-4.8,1.5-5.7,3.8c-2,0.6-3.4,2.4-3.5,4.4c0,2.5,2.1,4.6,4.6,4.6h10.1 c2,0,3.7-1.7,3.6-3.7C21.1,13.1,20,11.6,18.4,11.2z M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5 c0.5-1.7,2.1-2.9,3.9-2.9c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path><path fill=\\\"none\\\" d=\\\"M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5c0.5-1.7,2.1-2.9,3.9-2.9 c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - line</title><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"10.75\\\" width=\\\"18\\\" height=\\\"2.5\\\" rx=\\\"0.6\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2.8c-5.1,0-9.2,4.1-9.2,9.2s4.1,9.2,9.2,9.2s9.2-4.1,9.2-9.2C21.2,6.9,17.1,2.8,12,2.8z M12,18.8 c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path><path fill=\\\"none\\\" d=\\\"M12,18.8c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0 C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M20.7,9.3l-8.1-5.8c-0.4-0.3-0.9-0.3-1.3,0L3.3,9.3c-0.4,0.3-0.6,0.8-0.4,1.2L6,20c0.1,0.4,0.5,0.7,1,0.8h10 c0.5,0,0.9-0.3,1-0.8l3.1-9.5C21.2,10.1,21.1,9.6,20.7,9.3z M16.1,18.5H7.9l-2.6-7.8L12,5.8l6.7,4.9L16.1,18.5z\\\"></path><polygon fill=\\\"none\\\" points=\\\"16.1,18.5 7.9,18.5 5.3,10.7 12,5.8 18.7,10.7 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - polyline</title><path class=\\\"cls-1\\\" d=\\\"M22.89,7.06l-.64-.64a.8.8,0,0,0-1.13,0l-6.77,6.77L10.23,9.07A1.66,1.66,0,0,0,9,8.58a1.69,1.69,0,0,0-1.2.49L1.11,15.8a.83.83,0,0,0-.23.57.79.79,0,0,0,.23.57l.64.64a.81.81,0,0,0,1.13,0L9,11.42l4.12,4.12a1.69,1.69,0,0,0,2.39,0L22.89,8.2a.83.83,0,0,0,.23-.57A.79.79,0,0,0,22.89,7.06Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M19.3,3.8H4.7c-1,0-1.8,0.8-1.8,1.8v12.8c0,1,0.8,1.8,1.8,1.8h14.7c1,0,1.8-0.8,1.8-1.8V5.6 C21.2,4.6,20.3,3.7,19.3,3.8z M5.1,18V6h13.8v12H5.1z\\\"></path><rect fill=\\\"none\\\" x=\\\"5.1\\\" y=\\\"6\\\" width=\\\"13.8\\\" height=\\\"12\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - signature</title><path class=\\\"cls-1\\\" d=\\\"M20,12.66a1,1,0,0,0-1.27.7c-.21.77-1,3-2.39,3.45.08-.42.22-1,.32-1.33.41-1.58.71-2.71-.23-3.25a2,2,0,0,0-2.79.42,4.84,4.84,0,0,0-.55.93,7.14,7.14,0,0,1-2.18,2.81,3.12,3.12,0,0,1-1.12.33,2.47,2.47,0,0,1-1-.5,1.46,1.46,0,0,1-.21-.28c5.29-5.08,5.58-9.51,5.52-10.84a3.59,3.59,0,0,0-1.21-2.91A1,1,0,0,0,12.05,2c-2.86.59-4.63,4-5.57,10.83l-.05.25a7.89,7.89,0,0,0-.17,2.19L5.43,16A4.18,4.18,0,0,1,4.12,17a1.25,1.25,0,0,1,.19-.69A1,1,0,0,0,4,14.86a1.06,1.06,0,0,0-1.44.27,2.7,2.7,0,0,0,.18,3.48A1.8,1.8,0,0,0,3.94,19a4.45,4.45,0,0,0,2.88-1.54l.2-.17a2.09,2.09,0,0,0,.24.28A4.23,4.23,0,0,0,9.6,18.72,4.81,4.81,0,0,0,12.13,18a8.11,8.11,0,0,0,2.47-2.94c-.42,1.57-.64,2.58-.14,3.27a1.29,1.29,0,0,0,.94.54c2.37.27,4.35-1.6,5.29-5A1,1,0,0,0,20,12.66ZM11.87,4.23A4.1,4.1,0,0,1,12,5.42c0,1-.31,3.91-3.47,7.57C9,9.48,10,5.33,11.87,4.23Zm10.07,6.28a1.46,1.46,0,0,1-2.9,0,1.45,1.45,0,0,1,2.9,0Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"3.45\\\" y=\\\"19.99\\\" width=\\\"16.66\\\" height=\\\"2.01\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - stamp - line</title><path class=\\\"cls-1\\\" d=\\\"M4,20.5H20V22H4Zm15.27-5H4.74a.76.76,0,0,0-.75.75V19H20V16.26A.76.76,0,0,0,19.26,15.51Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.68,10.79a5,5,0,0,0,1.57-3.54,5.26,5.26,0,0,0-10.51,0,5.06,5.06,0,0,0,1.58,3.56,12.78,12.78,0,0,1,.82,1,7,7,0,0,1,.44,1.44H9v1.5h6v-1.5h-.58a6.08,6.08,0,0,1,.45-1.44A12.73,12.73,0,0,1,15.68,10.79Zm-1.4-1.15c-.27.32-.59.7-.9,1.13A6.91,6.91,0,0,0,12.63,13H11.37a6.52,6.52,0,0,0-.76-2.18c-.31-.45-.65-.83-.91-1.15A3.25,3.25,0,0,1,8.56,7.25a3.44,3.44,0,1,1,6.88,0A3.35,3.35,0,0,1,14.28,9.64Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text - free text</title><g><path class=\\\"cls-1\\\" d=\\\"M19.39,4.77V7.64A.43.43,0,0,1,19,8h-.82a.41.41,0,0,1-.4-.41V6.51H13.34V18h1.54a.41.41,0,0,1,.41.41v.81a.41.41,0,0,1-.41.41H9.14a.41.41,0,0,1-.41-.41v-.81A.41.41,0,0,1,9.14,18h1.54V6.51H6.27V7.64A.41.41,0,0,1,5.86,8H5A.43.43,0,0,1,4.6,7.6V4.77A.41.41,0,0,1,5,4.36H19A.39.39,0,0,1,19.39,4.77Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M20.37,2V22h-2V2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - squiggly</title><path class=\\\"cls-1\\\" d=\\\"M21,20V22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.51.13-1,.64A3.34,3.34,0,0,1,13.79,22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.52.13-1,.64A3.34,3.34,0,0,1,6.62,22a3,3,0,0,1-2.57-1.41c-.38-.51-.64-.64-1-.64V17.9a3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.51-.13,1-.64a3.32,3.32,0,0,1,2.57-1.41,3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.52-.13,1-.64a3.31,3.31,0,0,1,2.56-1.41A3,3,0,0,1,20,19.31C20.33,19.82,20.59,20,21,20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.79,12.77h6.67L17,16.36h2.56L13.92,2.64A1.34,1.34,0,0,0,12.77,2H11.62a1.24,1.24,0,0,0-1.16.77L4.69,16.36H7.26Zm3.34-7.95,2.31,5.51H9.82Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - strikethrough</title><rect class=\\\"cls-1\\\" x=\\\"3.13\\\" y=\\\"11.31\\\" width=\\\"17.74\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M12,5l2.4,5.77h2.68l-3.28-8A1.49,1.49,0,0,0,12.64,2H11.49a1.24,1.24,0,0,0-1.16.77L7,10.73H9.59Zm3.25,8.62,2,4.74h2.57l-2-4.74ZM4.17,18.32H6.74l2-4.74H6.18Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - underline</title><rect class=\\\"cls-1\\\" x=\\\"2.8\\\" y=\\\"20.29\\\" width=\\\"18.4\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.53,13.2h6.94l1.6,3.74h2.66L13.87,2.8a1.54,1.54,0,0,0-1.2-.8h-1.2a1.27,1.27,0,0,0-1.2.8l-6,14.14H6.93ZM12,5.07l2.4,5.73H9.6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16.949 14.121L19.071 12c1.948-1.949 1.948-5.122 0-7.071-1.95-1.95-5.123-1.948-7.071 0l-.707.707 1.414 1.414.707-.707c1.169-1.167 3.072-1.169 4.243 0 1.169 1.17 1.169 3.073 0 4.243l-2.122 2.121c-.247.247-.534.435-.844.57L13.414 12l1.414-1.414-.707-.707c-.943-.944-2.199-1.465-3.535-1.465-.235 0-.464.032-.691.066L3.707 2.293 2.293 3.707l18 18 1.414-1.414-5.536-5.536C16.448 14.573 16.709 14.361 16.949 14.121zM10.586 17.657c-1.169 1.167-3.072 1.169-4.243 0-1.169-1.17-1.169-3.073 0-4.243l1.476-1.475-1.414-1.414L4.929 12c-1.948 1.949-1.948 5.122 0 7.071.975.975 2.255 1.462 3.535 1.462 1.281 0 2.562-.487 3.536-1.462l.707-.707-1.414-1.414L10.586 17.657z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.2918 12.2917C14.2918 13.575 13.2835 14.5833 12.0002 14.5833C10.7168 14.5833 9.7085 13.575 9.7085 12.2917C9.7085 11.0083 10.7168 10 12.0002 10C13.2835 10 14.2918 11.0083 14.2918 12.2917ZM5.12516 10C3.84183 10 2.8335 11.0083 2.8335 12.2917C2.8335 13.575 3.84183 14.5833 5.12516 14.5833C6.4085 14.5833 7.41683 13.575 7.41683 12.2917C7.41683 11.0083 6.4085 10 5.12516 10ZM18.8752 10C17.5918 10 16.5835 11.0083 16.5835 12.2917C16.5835 13.575 17.5918 14.5833 18.8752 14.5833C20.1585 14.5833 21.1668 13.575 21.1668 12.2917C21.1668 11.0083 20.1585 10 18.8752 10Z\\\" fill=\\\"#1A4971\\\"></path><circle cx=\\\"21\\\" cy=\\\"3\\\" r=\\\"3\\\" fill=\\\"#3183C8\\\"></circle></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><g><path class=\\\"cls-1\\\" d=\\\"M12,14.5A2.5,2.5,0,1,1,14.5,12,2.51,2.51,0,0,1,12,14.5Zm2.5-10A2.5,2.5,0,1,0,12,7,2.51,2.51,0,0,0,14.5,4.5Zm0,15A2.5,2.5,0,1,0,12,22,2.51,2.51,0,0,0,14.5,19.5Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-10 -5 25 25\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Comments\\\" transform=\\\"translate(-1488.000000, -305.000000)\\\" fill=\\\"#979A9E\\\"><g id=\\\"Group\\\" transform=\\\"translate(1488.000000, 305.000000)\\\"><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"4\\\" height=\\\"11\\\"></rect><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"13\\\" width=\\\"4\\\" height=\\\"4\\\"></rect></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14 12C12.905 12 12 11.095 12 10C12 9.646 12.103 9.317 12.268 9.027C12.178 9.02 12.092 9 12 9C10.358 9 9 10.359 9 12C9 13.642 10.358 15 12 15C13.641 15 15 13.642 15 12C15 11.908 14.98 11.822 14.973 11.732C14.683 11.897 14.354 12 14 12Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M12 5C4.36704 5 2.07304 11.617 2.05204 11.684L1.94604 12L2.05105 12.316C2.07305 12.383 4.36704 19 12 19C19.633 19 21.927 12.383 21.948 12.316L22.054 12L21.949 11.684C21.927 11.617 19.633 5 12 5ZM12 17C6.64904 17 4.57604 13.154 4.07404 12C4.57804 10.842 6.65204 7 12 7C17.351 7 19.424 10.846 19.926 12C19.422 13.158 17.348 17 12 17Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.675 13.2667H7.35L5.975 16.6583H3.5L9 3.73333C9.275 3.275 9.64167 3 10.1 3H11.2C11.6583 3 12.025 3.36667 12.3 3.73333L15.5893 11.7296C15.3978 12.0029 15.1962 12.2989 14.9941 12.6085C14.6787 13.0915 14.3531 13.6208 14.0604 14.158L13.675 13.2667ZM12.7583 11.0667L10.5583 5.84167L8.35833 11.0667H12.7583Z\\\"></path><path d=\\\"M21.5 17.3636C21.5 19.3719 19.933 21 18 21C16.067 21 14.5 19.3719 14.5 17.3636C14.5 15.3553 18 11 18 11C18 11 21.5 15.3553 21.5 17.3636Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6 6.94H9.06V2.4C9.06 2.17909 8.88091 2 8.66 2H7.34C7.11909 2 6.94 2.17909 6.94 2.4V6.94H2.4C2.17909 6.94 2 7.11909 2 7.34V8.66C2 8.88091 2.17909 9.06 2.4 9.06H6.94V13.6C6.94 13.8209 7.11909 14 7.34 14H8.66C8.88091 14 9.06 13.8209 9.06 13.6V9.06H13.6C13.8209 9.06 14 8.88091 14 8.66V7.34C14 7.11909 13.8209 6.94 13.6 6.94Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.94 9.05994H2.4C2.17909 9.05994 2 8.88086 2 8.65994V7.33994C2 7.11903 2.17909 6.93994 2.4 6.93994H13.6C13.7061 6.93994 13.8078 6.98208 13.8828 7.0571C13.9579 7.13211 14 7.23385 14 7.33994V8.65994C14 8.88086 13.8209 9.05994 13.6 9.05994H9.06\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 64 64\\\"><defs><style>.cls-1{fill:#dfe2ed;}</style></defs><title>Artboard 1</title><path class=\\\"cls-1\\\" d=\\\"M50,4.5H14A3.5,3.5,0,0,0,10.5,8V56A3.5,3.5,0,0,0,14,59.5H50A3.5,3.5,0,0,0,53.5,56V8A3.5,3.5,0,0,0,50,4.5ZM50.5,56a.5.5,0,0,1-.5.5H14a.5.5,0,0,1-.5-.5V8a.5.5,0,0,1,.5-.5H50a.5.5,0,0,1,.5.5Z\\\"></path><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"32\\\" r=\\\"2.5\\\"></circle><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"44.3\\\" r=\\\"2.5\\\"></circle><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"19.7\\\" r=\\\"2.5\\\"></circle><rect class=\\\"cls-1\\\" x=\\\"25.98\\\" y=\\\"30.26\\\" width=\\\"20.02\\\" height=\\\"3.49\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"25.98\\\" y=\\\"42.55\\\" width=\\\"20.02\\\" height=\\\"3.49\\\"></rect><polygon class=\\\"cls-1\\\" points=\\\"25.98 17.96 25.98 21.45 46 21.45 46 17.96 44 17.96 25.98 17.96\\\"></polygon></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / operation / multi select</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g fill=\\\"#868E96\\\"><g><path d=\\\"M18.17,13.39 L16.28,13.39 L16.28,16.22 L13.44,16.22 L13.44,18.11 L16.28,18.11 L16.28,21 L18.17,21 L18.17,18.11 L21,18.11 L21,16.22 L18.17,16.22 L18.17,13.39 Z M4,18.11 L6.83,18.11 L6.83,16.22 L4.94,16.22 L4.94,14.34 L3.05,14.34 L3.05,17.17 C3.05,17.4210458 3.15039276,17.6616665 3.32884571,17.838241 C3.50729865,18.0148155 3.74896838,18.1126707 4,18.11 Z M18.17,3.94 C18.1382202,3.41127612 17.6996773,2.99904577 17.17,2.99999835 L14.39,2.99999835 L14.39,4.89 L16.28,4.89 L16.28,6.78 L18.17,6.78 L18.17,3.94 Z M4.94,4.89 L6.83,4.89 L6.83,3 L3.99999804,3 C3.74047377,2.9834001 3.48566705,3.07505767 3.29618264,3.25317302 C3.10669822,3.43128837 2.99946966,3.67994396 2.99999804,3.94 L2.99999804,6.78 L4.94,6.78 L4.94,4.89 Z M3.05,8.67 L4.94,8.67 L4.94,12.45 L3.05,12.45 L3.05,8.67 Z M16.28,8.67 L18.17,8.67 L18.17,11.5 L16.28,11.5 L16.28,8.67 Z M8.72,3 L12.5,3 L12.5,4.89 L8.72,4.89 L8.72,3 Z M8.72,16.22 L11.55,16.22 L11.55,18.11 L8.72,18.11 L8.72,16.22 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H4C2.897 4 2 4.897 2 6V18C2 19.103 2.897 20 4 20H20C21.103 20 22 19.103 22 18V6C22 4.897 21.103 4 20 4ZM4 6H20V8H4V6ZM4 18V12H20.001L20.002 18H4Z\\\" fill=\\\"#0000FF\\\"></path><path d=\\\"M6 14H12V16H6V14Z\\\" fill=\\\"#0000FF\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H6C4.897 4 4 4.897 4 6V11H6V8L12.4 12.8C12.578 12.933 12.789 13 13 13C13.211 13 13.422 12.933 13.6 12.8L20 8V17H12V19H20C21.103 19 22 18.103 22 17V6C22 4.897 21.103 4 20 4ZM13 10.75L6.666 6H19.334L13 10.75Z\\\" fill=\\\"#FF8F0C\\\"></path><path d=\\\"M2 12H9V14H2V12ZM4 15H10V17H4V15ZM7 18H11V20H7V18Z\\\" fill=\\\"#FF8F0C\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.15 3H4.85004C3.75004 3 2.83337 3.91667 2.83337 5.01667V19.3167C2.83337 20.4167 3.75004 21.3333 4.85004 21.3333H19.15C20.25 21.3333 21.1667 20.4167 21.1667 19.3167V5.01667C21.1667 3.91667 20.25 3 19.15 3ZM4.85004 19.3167V5.01667H19.15V19.3167H4.85004Z\\\" fill=\\\"#008000\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6499 8.59155L18.1416 15.7416H11.4499H9.24994H5.85828L8.69994 11.6166L10.2583 13.9999L13.6499 8.59155Z\\\" fill=\\\"#008000\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.8042 7.19517C10.5436 6.93451 10.1222 6.93451 9.86157 7.19517L8.79891 8.25784C8.30624 8.11117 7.3869 7.77784 6.80424 7.19517C6.22157 6.61251 5.88824 5.69317 5.74157 5.20051L6.80424 4.13784C7.0649 3.87717 7.0649 3.45584 6.80424 3.19517L4.13757 0.528508C3.8769 0.267841 3.45557 0.267841 3.19491 0.528508L1.3869 2.33651C1.13357 2.58984 0.990905 2.93784 0.996238 3.29317C1.01157 4.24251 1.2629 7.53984 3.86157 10.1385C6.46024 12.7372 9.75757 12.9878 10.7076 13.0038C10.7109 13.0038 10.7229 13.0038 10.7262 13.0038C11.0782 13.0038 11.4109 12.8652 11.6629 12.6132L13.4709 10.8052C13.7316 10.5445 13.7316 10.1232 13.4709 9.86251L10.8042 7.19517ZM10.7196 11.6698C9.88757 11.6558 7.0409 11.4325 4.80424 9.19518C2.56024 6.95117 2.3429 4.09451 2.32957 3.27917L3.66624 1.94251L5.39024 3.66651L4.52824 4.52851C4.36891 4.68717 4.3009 4.91651 4.3469 5.13651C4.3629 5.21317 4.75424 7.03117 5.8609 8.13784C6.96757 9.24451 8.78557 9.63584 8.86224 9.65184C9.08424 9.69917 9.31157 9.63051 9.47024 9.47117L10.3329 8.60917L12.0569 10.3332L10.7196 11.6698Z\\\" fill=\\\"#FF0000\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 512 512\\\" style=\\\"enable-background:new 0 0 512 512;\\\" xml:space=\\\"preserve\\\"><g><g><path d=\\\"M320,42.667h10.667c5.891,0,10.667-4.776,10.667-10.667V10.667C341.333,4.775,336.557,0,330.667,0H320 c-25.458,0-48.354,12.188-64,31.469C240.354,12.188,217.458,0,192,0h-10.667c-5.891,0-10.667,4.775-10.667,10.667V32 c0,5.891,4.776,10.667,10.667,10.667H192c23.521,0,42.667,22.469,42.667,50.083v141.917h-32c-5.891,0-10.667,4.775-10.667,10.667 v21.333c0,5.891,4.776,10.667,10.667,10.667h32V419.25c0,27.615-19.146,50.083-42.667,50.083h-10.667 c-5.891,0-10.667,4.775-10.667,10.667v21.333c0,5.891,4.776,10.667,10.667,10.667H192c25.458,0,48.354-12.188,64-31.469 C271.646,499.813,294.542,512,320,512h10.667c5.891,0,10.667-4.776,10.667-10.667V480c0-5.892-4.776-10.667-10.667-10.667H320 c-23.521,0-42.667-22.469-42.667-50.083V277.333h32c5.891,0,10.667-4.776,10.667-10.667v-21.333 c0-5.892-4.776-10.667-10.667-10.667h-32V92.75C277.333,65.135,296.479,42.667,320,42.667z\\\"></path></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.50002 3.86222C0.756978 3.57034 0.230957 2.8466 0.230957 2C0.230957 0.895431 1.12639 0 2.23096 0C2.97124 0 3.61758 0.402199 3.96339 1H11.75C11.8881 1 12 1.11193 12 1.25V2.25C12 2.38807 11.8881 2.5 11.75 2.5H4.16795C4.01085 3.11036 3.57287 3.60796 3.00002 3.84679V16.1532C3.57287 16.392 4.01085 16.8896 4.16795 17.5H16.563C16.7439 16.7972 17.2972 16.2439 18 16.063V8.75C18 8.61193 18.1119 8.5 18.25 8.5H19.25C19.3881 8.5 19.5 8.61193 19.5 8.75V16.2676C20.0978 16.6134 20.5 17.2597 20.5 18C20.5 19.1046 19.6046 20 18.5 20C17.7597 20 17.1134 19.5978 16.7676 19H3.96339C3.61758 19.5978 2.97124 20 2.23096 20C1.12639 20 0.230957 19.1046 0.230957 18C0.230957 17.1534 0.756978 16.4297 1.50002 16.1378V3.86222Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M18.8157 3.25543C18.7181 3.1578 18.7181 2.99951 18.8157 2.90188L20.5837 1.13388C20.6814 1.03625 20.6814 0.877961 20.5837 0.78033L19.8766 0.0732233C19.779 -0.0244078 19.6207 -0.0244078 19.5231 0.0732233L17.7551 1.84122C17.6574 1.93885 17.4991 1.93885 17.4015 1.84122L15.6339 0.0735983C15.5363 -0.0240328 15.378 -0.0240327 15.2803 0.0735983L14.5732 0.780705C14.4756 0.878336 14.4756 1.03663 14.5732 1.13426L16.3409 2.90188C16.4385 2.99951 16.4385 3.1578 16.3409 3.25543L14.5733 5.02297C14.4757 5.1206 14.4757 5.27889 14.5733 5.37652L15.2804 6.08363C15.3781 6.18126 15.5363 6.18126 15.634 6.08363L17.4015 4.31609C17.4991 4.21846 17.6574 4.21846 17.7551 4.31609L19.523 6.08401C19.6206 6.18164 19.7789 6.18164 19.8765 6.08401L20.5836 5.3769C20.6813 5.27927 20.6813 5.12098 20.5836 5.02335L18.8157 3.25543Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.50002 4.5C6.56702 4.5 5.00002 6.067 5.00002 8C5.00002 9.933 6.56702 11.5 8.50002 11.5C8.66978 11.5 8.83671 11.4879 9.00002 11.4646V14.5C9.00002 15.0523 9.44773 15.5 10 15.5H15C15.5523 15.5 16 15.0523 16 14.5V9.5C16 8.94772 15.5523 8.5 15 8.5H11.9646C11.9879 8.3367 12 8.16976 12 8C12 6.067 10.433 4.5 8.50002 4.5ZM10.5 10H14.5V14H10.5V10Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Tooltip.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tooltip--bottom,.tooltip--bottomLeft,.tooltip--left,.tooltip--right,.tooltip--top,.tooltip--topLeft{position:absolute;z-index:110;background:#222;font-size:12px;padding:6px 8px;border-radius:3px;transition:opacity .3s ease-out;-webkit-backface-visibility:hidden;backface-visibility:hidden}.tooltip--bottom .tooltip__content:before,.tooltip--bottomLeft .tooltip__content:before,.tooltip--left .tooltip__content:before,.tooltip--right .tooltip__content:before,.tooltip--top .tooltip__content:before,.tooltip--topLeft .tooltip__content:before{content:\\\"\\\";width:0;height:0;position:absolute}.tooltip--top{margin-top:-10px}.tooltip--top .tooltip__content:before{bottom:-6px;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:6px solid #222}.tooltip--topLeft{margin-top:-10px}.tooltip--topLeft .tooltip__content:before{bottom:-5px;margin-left:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:6px solid #222}.tooltip--bottom{margin-top:10px}.tooltip--bottom .tooltip__content:before{top:-6px;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:6px solid #222}.tooltip--bottomLeft{margin-top:10px}.tooltip--bottomLeft .tooltip__content:before{top:-5px;margin-left:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:6px solid #222}.tooltip--left{margin-left:-10px;white-space:nowrap}.tooltip--left .tooltip__content:before{border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #222;right:-6px;top:50%;margin-top:-6px}.tooltip--right{margin-left:10px;white-space:nowrap}.tooltip--right .tooltip__content:before{border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid #222;left:-6px;top:50%;margin-top:-6px}.tooltip__shortcut{margin-left:3px;opacity:.5}.tooltip__content{background:#222;color:#fff;font-size:12px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\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 = 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","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Icon.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Icon{width:22px;height:22px;pointer-events:none;color:var(--icon-color)}.Icon.icon-border rect{stroke:var(--border)!important}.Icon circle:not([fill*=\\\"#\\\"]),.Icon path:not([fill*=\\\"#\\\"]),.Icon polygon:not([fill*=\\\"#\\\"]),.Icon rect:not([fill*=\\\"#\\\"]){fill:currentColor}.Icon:not(.disabled) path[fill=default]{fill:var(--icon-color)}.Icon.disabled,.Icon.disabled path{fill:var(--disabled-icon)}.Icon circle[fill=fill],.Icon circle[fill=none],.Icon path[fill=fill],.Icon path[fill=none],.Icon path[fill=stroke],.Icon polygon[fill=fill],.Icon polygon[fill=none],.Icon rect[fill=fill],.Icon rect[fill=none]{fill:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Button{padding:0;border:none;background-color:transparent;position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;width:32px;height:32px;color:var(--text-color)}:host(:not([data-tabbing=true])) .Button,html:not([data-tabbing=true]) .Button{outline:none}.Button img{height:24px;width:24px}.Button.active path[fill=default]{fill:var(--selected-icon-color)}.Button.active[data-element=panToolButton],.Button.active[data-element=selectToolButton]{background:var(--view-header-button-active)}.Button.active .Icon{color:var(--selected-icon-color)}.Button.disabled{background:none!important;cursor:default}.Button.disabled .Icon,.Button.disabled span{color:var(--disabled-icon)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToggleZoomOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.zoom-overlay{display:flex;align-items:center;justify-content:center;background-color:var(--toggle-zoom-overlay-background);border-radius:4px;height:28px;margin:0 2px}.zoom-overlay .Button{margin:0 1px;height:100%}.zoom-overlay .Button:last-child{margin-right:0}.zoom-overlay .Button:first-child{margin-left:0}.zoom-overlay .toggle-element-button{height:100%}.ToggleZoomOverlay{height:100%;color:var(--text-color);margin-right:1px}.ToggleZoomOverlay .textarea{resize:none;border:none;outline:none;color:inherit;background-color:transparent;font-weight:700;min-width:28px;text-align:right}.ToggleZoomOverlay .Icon{width:12px;height:12px}.OverlayContainer{display:flex;align-items:center;justify-content:flex-end;min-width:68px;height:100%;border-radius:4px;position:relative}.OverlayContainer:hover{background-color:var(--view-header-button-hover)}.OverlayContainer.active{background-color:var(--view-header-button-active)}.OverlayContainer .Button.active,.OverlayContainer .Button:hover{background:none!important}.OverlayContainer .toggle-element-button{width:26px;margin-left:4px;margin-top:-2px;font-size:16px;height:26px}.OverlayText{border-radius:4px;align-items:center;margin-right:-8px;font-weight:700;height:100%;text-align:center;display:flex}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tool-button-container{display:flex;flex-direction:row;align-items:center;height:26px;margin:0 6px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-button-container{margin:0 10px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-button-container{margin:0 10px}}.tool-button-container .tool-button-arrow-container{width:13px;height:100%;margin-right:2px}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container{font-size:13px;display:flex;align-items:center;height:100%;cursor:pointer}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-down,.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-up{width:13px;height:13px}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-up{margin-top:-1px}.tool-button-container .tool-button{display:flex;flex-direction:row;align-items:center;border-radius:4px;margin-right:1px}.tool-button-container .tool-button.Button{width:26px;height:26px}.tool-button-container .tool-button.Button:hover{background:var(--tools-overlay-button-hover)}.tool-button-container .tool-button.active,.tool-button-container .tool-button.Button.active{background:var(--tools-overlay-button-active)}.tool-button-container .tool-button.active .Icon{color:var(--selected-icon-color)}.tool-button-container .tool-button.active div:hover{background:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./HorizontalDivider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.divider-container{width:100%;padding:8px 4px}.divider-container .divider-horizontal{height:1px;background:var(--divider)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .divider-container{padding-top:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .divider-container{padding-top:0}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPaletteHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.palette-options{display:flex;margin-bottom:8px;margin-top:4px;border-radius:4px;border:1px solid var(--border);width:100%;cursor:pointer}.palette-options .palette-options-button{padding:0;border:none;background-color:transparent;height:20px;text-align:center;vertical-align:middle;line-height:20px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;min-width:55px}:host(:not([data-tabbing=true])) .palette-options .palette-options-button,html:not([data-tabbing=true]) .palette-options .palette-options-button{outline:none}.palette-options .palette-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.palette-options .palette-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.palette-options .palette-options-button:hover{background:var(--popup-button-hover)}.palette-options .palette-options-button.active{background:var(--popup-button-active)}.palette-options .palette-options-button.disabled{color:var(--gray-6);cursor:default}.palette-options .palette-options-button.disabled:hover{background:none}.palette-options .palette-options-divider{width:1px;background:var(--divider)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ColorPalette{display:flex;flex-wrap:wrap;display:grid;grid-template-columns:repeat(7,1fr)}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ColorPalette{width:196px}}.ColorPalette.padding{padding:4px 12px 8px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette{max-width:450px;width:auto}}@media(max-width:640px)and (-ms-high-contrast:active),(max-width:640px)and (-ms-high-contrast:none){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette{width:308px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette{max-width:450px;width:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette{width:308px}}}.ColorPalette .cell-container{padding:0;border:none;background-color:transparent;flex:1 0 14%;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center}:host(:not([data-tabbing=true])) .ColorPalette .cell-container,html:not([data-tabbing=true]) .ColorPalette .cell-container{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette .cell-container{width:44px;height:44px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette .cell-container{width:44px;height:44px}}.ColorPalette .cell-container .cell-outer.active{border:1px solid var(--color-palette-border);width:26px;height:26px;border-radius:10000000px;display:flex;align-items:center;justify-content:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette .cell-container .cell-outer.active{width:36px;height:36px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette .cell-container .cell-outer.active{width:36px;height:36px}}.ColorPalette .cell-container .cell-outer .cell{width:18px;height:18px;border-radius:10000000px}.ColorPalette .cell-container .cell-outer .cell .transparent{border:2px solid var(--faded-text);border-radius:10000000px}.ColorPalette .cell-container .cell-outer .cell.border{border:1px solid var(--white-color-palette-border)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette .cell-container .cell-outer .cell{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette .cell-container .cell-outer .cell{width:24px;height:24px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPalettePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".colorPicker .colorPickerController{padding:5px;margin-top:4px;display:flex;align-items:center;justify-content:space-between;border-radius:4px}.colorPicker .cellIcon .Icon svg{height:100%}.colorPicker .cell-container:disabled{cursor:no-drop;opacity:.5}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Slider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider{margin-top:6px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider{margin-top:6px}}.slider input:focus{outline:none;border:1px solid var(--focus-border)}.slider input[type=number]::-webkit-inner-spin-button,.slider input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.slider svg{height:18px;cursor:pointer}.slider .slider-input-wrapper{display:flex;align-items:center}.slider .slider-input-field{border-radius:4px;border:1px solid var(--border);height:28px;width:50px;text-align:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider .slider-input-field{width:79px;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider .slider-input-field{width:79px;height:32px}}.slider .slider-property{margin-bottom:4px}.slider .slider-property:nth-child(n+2){margin-top:8px}.slider .slider-element-container{display:flex;flex-direction:row;align-items:center;margin-left:-5px}.slider .slider-element-container .slider-value{min-width:41px;display:flex;justify-content:flex-end;flex:1}.slider .slider-element-container svg{width:148px;flex:7}.slider .slider-element-container svg circle{fill:var(--slider-filled)}.slider .slider-element-container svg line:first-child{stroke:var(--slider-filled)}.slider .slider-element-container svg line:nth-child(2){stroke:var(--slider-background)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider .slider-element-container svg line{stroke-width:4}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider .slider-element-container svg line{stroke-width:4}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Dropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Dropdown{border:none;background-color:transparent;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;justify-content:space-between;align-items:center;z-index:80;border-radius:4px;height:28px;border:1px solid var(--border);padding:0 4px 0 8px;background:var(--component-background);cursor:pointer}.Dropdown,.Dropdown__wrapper{position:relative}:host(:not([data-tabbing=true])) .Dropdown,html:not([data-tabbing=true]) .Dropdown{outline:none}.Dropdown .arrow{width:12px;height:16px;margin-top:2px}.Dropdown .picked-option{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.Dropdown .picked-option .picked-option-text{flex:.8;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Dropdown .picked-option .picked-option-text .Dropdown__input{width:100%;border:none}.Dropdown:disabled{background:none;color:var(--disabled-icon)}.Dropdown__items{z-index:1;display:flex;flex-direction:column;position:absolute;top:30px;right:0;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;overflow-y:auto}.Dropdown__items.hide{visibility:hidden}.Dropdown__items.dropdown-items-with-custom-display{right:inherit}.Dropdown__item{border:none;background-color:transparent;height:28px;align-items:center;display:flex;border-radius:0;padding:0 32px 0 8px}:host(:not([data-tabbing=true])) .Dropdown__item,html:not([data-tabbing=true]) .Dropdown__item{outline:none}.Dropdown__item.active{background-color:var(--popup-button-active)}.Dropdown__item:hover{background-color:var(--popup-button-hover)}.Dropdown__item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.Dropdown__item:last-child{border-bottom-right-radius:4px}[data-element=endLineStyleDropdown] .picked-option-text{flex:.95!important}[data-element=endLineStyleDropdown] .picked-option .arrow{width:11px!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./StyleOption.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StyleOption .styles-container{margin-top:2px;margin-bottom:8px}.StyleOption .styles-container .styles-input{background:var(--component-background);border-radius:4px;border:1px solid var(--border);height:28px;width:80px;text-transform:capitalize;color:var(--text-color)}.StyleOption .styles-container .styles-title{margin-left:6px}.StyleOption .styles-container .styles-layout{display:flex;margin-left:2px;margin-top:7px}.StyleOption .styles-container [data-element=borderStylePicker]{width:80px;margin-left:2px;margin-top:7px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown{width:80px!important}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown .picked-option-text svg{width:48px;margin-top:11px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown__items{width:80px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown__items svg{width:65px;margin-top:11px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TextStylePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.container-fluid{width:100%;display:flex;flex-direction:column;position:relative;grid-gap:8px;gap:8px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .container-fluid .Dropdown__wrapper{width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .container-fluid .Dropdown__wrapper{width:100%}}.container-fluid .Dropdown{padding:3px 4px;text-align:left}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .container-fluid .Dropdown{width:100%!important}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .container-fluid .Dropdown{width:100%!important}}.container-fluid .Dropdown .Icon{width:16px;height:16px;flex:inherit}.container-fluid .FontSizeDropdown{width:100px}.container-fluid .container-dropdown{display:flex;flex-direction:row;grid-gap:8px;gap:8px}.container-fluid .error-text{font-size:var(--font-size-small);color:var(--error-text-color);text-align:center}.icon-grid{position:static}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .row{display:flex}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .rich-text-format{float:left}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-horizontal-alignment{float:right}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-horizontal-alignment.isRedaction,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-vertical-alignment{float:left}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .row{display:flex}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .rich-text-format{float:left}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-horizontal-alignment{float:right}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-horizontal-alignment.isRedaction,.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-vertical-alignment{float:left}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid{display:grid}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .row{display:flex}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid{display:grid}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .row{display:flex}}.icon-grid .row{grid-gap:8px;gap:8px;padding-top:8px;display:flex}.icon-grid .row .Button{background:none;width:34px!important;height:34px!important;margin:0!important}.icon-grid .row .Button .Icon{height:26px!important;width:26px!important;color:var(--icon-color)}.icon-grid .row .Button.active{background:var(--popup-button-active)}.icon-grid .row .Button.active .Icon{color:var(--blue-6)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FontSizeDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FontSizeDropdown{position:relative;width:100%;display:flex;background:var(--component-background);border:1px solid var(--border);border-radius:4px;align-items:center;flex-direction:row;justify-content:space-between;height:28px;padding:3px 4px}.FontSizeDropdown input{width:25px;border:0;height:100%;flex:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.FontSizeDropdown input.error{border-color:var(--error-border-color)}.FontSizeDropdown input::-webkit-inner-spin-button,.FontSizeDropdown input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.FontSizeDropdown input[type=number]{-moz-appearance:textfield}.FontSizeDropdown .icon-button{flex:inherit;height:16px;width:16px}.FontSizeDropdown .icon-button .Icon{height:100%;width:100%}.FontSizeDropdown .hidden{display:none!important}.FontSizeDropdown .Dropdown__items{z-index:1;display:flex;flex-direction:column;position:absolute;top:30px;right:0;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;overflow-y:auto;max-height:200px;width:100%}.FontSizeDropdown .Dropdown__items.hide{visibility:hidden}.FontSizeDropdown .Dropdown__items .Dropdown__item{border:none;background-color:transparent;height:28px;align-items:center;display:flex;border-radius:0;padding:0 32px 0 8px;font-size:var(--font-size-default);line-height:28px}:host(:not([data-tabbing=true])) .FontSizeDropdown .Dropdown__items .Dropdown__item,html:not([data-tabbing=true]) .FontSizeDropdown .Dropdown__items .Dropdown__item{outline:none}.FontSizeDropdown .Dropdown__items .Dropdown__item.active{background-color:var(--popup-button-active)}.FontSizeDropdown .Dropdown__items .Dropdown__item:hover{background-color:var(--popup-button-hover)}.FontSizeDropdown .Dropdown__items .Dropdown__item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.FontSizeDropdown .Dropdown__items .Dropdown__item:last-child{border-bottom-right-radius:4px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var root = require('./_root');\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 */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LabelTextEditor.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"input.overlay-text-input{width:100%;height:28px;padding:6px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LineStyleOptions.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".LineStyleOptions{width:100%;margin-top:4px;margin-bottom:4px}.LineStyleOptions .LayoutTitle{margin-left:6px}.LineStyleOptions .StyleContainer{margin:4px 2px 0;display:flex;flex-direction:row;justify-content:space-between}.LineStyleOptions .linestyle-image svg{width:35px;margin-top:11px}.LineStyleOptions .linestyle-image.shift-alignment svg{margin-top:8px}.LineStyleOptions .Dropdown__items .linestyle-image svg{width:45px}.LineStyleOptions [data-element=middleLineStyleDropdown] .linestyle-image.shift-alignment{padding-top:0}.LineStyleOptions [data-element=middleLineStyleDropdown] .Dropdown__items{top:-197px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Choice.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ui__choice__input__icon{top:-6px!important}.ui__icon{align-items:baseline!important}.ui__choice{align-items:center}.ui__choice__input--switch .ui__choice__input__switch{height:14px!important;border-radius:24px!important;background-color:#e7ebee!important;border:none!important}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--disabled{opacity:.6;cursor:not-allowed}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--checked{background-color:#3183c8!important}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--checked .ui__choice__input__toggle{left:12px!important}.ui__choice__input--switch .ui__choice__input__switch .ui__choice__input__toggle{height:10px!important;width:10px!important;background-color:#fff!important;left:2px!important}.ui__choice__input--switch input:disabled{cursor:not-allowed!important}\", \"\"]);\n\n// exports\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\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 */\nfunction 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\nmodule.exports = basePickBy;\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 */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\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 */\nfunction 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\nmodule.exports = baseSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\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 */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./StylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.StylePopup{padding:12px;display:flex;flex-direction:column;width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .StylePopup{width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .StylePopup{width:100%}}.StylePopup .sliders-container{padding-left:6px;padding-right:6px;margin-top:4px}.StylePopup .collapsible-menu{width:100%;display:flex;cursor:pointer;position:relative;align-items:center}.StylePopup .collapsible-menu .menu-title{padding-left:4px;padding-top:6px;padding-bottom:6px;font-weight:700;font-size:14px}.StylePopup .collapsible-menu .Icon{position:absolute;right:0;height:18px;width:18px}.StylePopup .divider{background-color:var(--divider);width:100%;height:1px;margin:6px 0}.StylePopup .menu-items{padding:6px 4px}.StylePopup .closed{display:none}.StylePopup .snapping-option{margin-top:10px;margin-left:2px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SignatureRowContent.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.signature-row-content{padding:0;border:none;background-color:transparent;width:162px;height:26px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:8px}:host(:not([data-tabbing=true])) .signature-row-content,html:not([data-tabbing=true]) .signature-row-content{outline:none}.signature-row-content img{max-width:100%;max-height:100%}.signature-row-content.interactable:hover{background:var(--tools-overlay-button-hover)}.signature-row-content.active,.signature-row-content.interactable.active{background:var(--tools-overlay-button-active)}.signature-row-content .signature-button-icon{width:20px;height:20px;margin-top:2px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.signature-style-popup .tab-list{width:100%;height:28px;display:flex;border-radius:4px;border:1px solid var(--border);color:var(--text-color)}.signature-style-popup .tab-list .tab-options-button{text-align:center;vertical-align:middle;line-height:24px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;cursor:pointer}.signature-style-popup .tab-list .tab-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.signature-style-popup .tab-list .tab-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.signature-style-popup .tab-list .tab-options-button:hover{background:var(--popup-button-hover)}.signature-style-popup .tab-list .tab-options-button.selected{background:var(--popup-button-active);cursor:default}.signature-style-popup .tab-list .tab-options-divider{width:1px;background:var(--divider)}.signature-style-popup .tab-panel{width:100%;display:flex;flex-direction:column;align-items:center}.add-btn{border-radius:4px;border:1px solid var(--primary-button);color:var(--ribbon-active-color);cursor:pointer;display:flex;align-items:center;justify-content:center}.add-btn.disabled{border:1px solid var(--disabled-text);color:var(--disabled-text);cursor:auto}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .add-btn{height:40px;width:90%;margin:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .add-btn{height:40px;width:90%;margin:0}}.add-btn.signature-row-content .btn-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:130px}.signature-row{display:flex;flex-direction:row;height:26px;justify-content:space-between}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-row{justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-row{justify-content:center}}.signature-row .icon-button{padding:0;border:none;background-color:transparent;display:flex;align-items:center;justify-content:center;width:34px;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .signature-row .icon-button,html:not([data-tabbing=true]) .signature-row .icon-button{outline:none}.signature-row .icon-button:hover{background:var(--tools-overlay-button-hover)}.signature-style-popup{width:100%;padding-left:8px;padding-right:4px;max-height:300px;overflow-y:scroll}.signature-style-popup .tab-list{font-size:14px;margin:0 0 12px}.signature-style-popup .tab-list .tab-options-button{padding:0;border:none;background-color:transparent}:host(:not([data-tabbing=true])) .signature-style-popup .tab-list .tab-options-button,html:not([data-tabbing=true]) .signature-style-popup .tab-list .tab-options-button{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup{width:auto;padding:0;margin-top:12px;height:236px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup{width:auto;padding:0;margin-top:12px;height:236px}}.signature-style-popup .signature-row{margin-bottom:12px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup .signature-row{margin-bottom:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup .signature-row{margin-bottom:16px}}.signature-style-popup .add-btn{margin-bottom:8px;width:100%;margin-right:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup .add-btn{margin:32px 0 0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup .add-btn{margin:32px 0 0}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RubberStampOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.rubber-stamp-overlay{margin-left:0;margin-bottom:8px;padding-left:8px;padding-right:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay{margin-bottom:0;margin-right:0;padding-top:12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay{margin-bottom:0;margin-right:0;padding-top:12px}}.rubber-stamp-overlay .custom-stamp-panel{max-height:270px;overflow:auto;margin-bottom:8px}.rubber-stamp-overlay .standard-stamp-panel{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;flex-flow:row wrap;align-content:flex-start;max-height:300px;overflow-y:scroll}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .standard-stamp-panel{height:236px;width:300px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .standard-stamp-panel{height:236px;width:300px}}.rubber-stamp-overlay .rubber-stamp{padding:0;border:none;background-color:transparent;border-radius:4px;flex-basis:50%;cursor:pointer}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .rubber-stamp,html:not([data-tabbing=true]) .rubber-stamp-overlay .rubber-stamp{outline:none}.rubber-stamp-overlay .rubber-stamp:hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .rubber-stamp img{width:100%}.rubber-stamp-overlay .stamp-row{display:flex;flex-direction:row;height:45px;justify-content:space-between;padding-bottom:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .stamp-row{justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .stamp-row{justify-content:center}}.rubber-stamp-overlay .stamp-row .icon{padding:0;border:none;background-color:transparent;display:flex;align-items:center;justify-content:center;width:34px;height:45px;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .stamp-row .icon,html:not([data-tabbing=true]) .rubber-stamp-overlay .stamp-row .icon{outline:none}.rubber-stamp-overlay .stamp-row .icon:hover{background:var(--tools-overlay-button-hover)}.rubber-stamp-overlay .stamp-row .custom-stamp{padding:0;border:none;background-color:transparent;flex-shrink:1}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .stamp-row .custom-stamp,html:not([data-tabbing=true]) .rubber-stamp-overlay .stamp-row .custom-stamp{outline:none}.rubber-stamp-overlay .stamp-row-content{width:162px;border-radius:4px;padding:2px;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:8px}.rubber-stamp-overlay .stamp-row-content img{max-width:100%;max-height:100%}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.rubber-stamp-overlay .stamp-row-content img{flex-grow:1;flex-basis:0}}.rubber-stamp-overlay .stamp-row-content:not(.add-btn):hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .stamp-row-content.interactable:hover{background:var(--tools-overlay-button-hover)}.rubber-stamp-overlay .stamp-row-content.active,.rubber-stamp-overlay .stamp-row-content.interactable.active{background:var(--tools-overlay-button-active)}.rubber-stamp-overlay .stamp-row-content.add-btn{background-color:transparent}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .stamp-row-content.add-btn{width:90%;margin-right:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .stamp-row-content.add-btn{width:90%;margin-right:0}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .tab-header{width:300px;margin:auto}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .tab-header{width:300px;margin:auto}}.rubber-stamp-overlay .tab-list{display:flex;border-radius:4px;border:1px solid var(--border);height:28px;color:var(--text-color);margin-bottom:8px;width:100%}.rubber-stamp-overlay .tab-list .tab-options-button{border:none;background-color:transparent;text-align:center;vertical-align:middle;line-height:24px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;cursor:pointer;padding:0 10px}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .tab-list .tab-options-button,html:not([data-tabbing=true]) .rubber-stamp-overlay .tab-list .tab-options-button{outline:none}.rubber-stamp-overlay .tab-list .tab-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.rubber-stamp-overlay .tab-list .tab-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.rubber-stamp-overlay .tab-list .tab-options-button:hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .tab-list .tab-options-button.selected{background:var(--popup-button-active);cursor:default}.rubber-stamp-overlay .tab-list .tab-options-divider{width:1px;background:var(--divider)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ToolStylePopup{background:var(--preset-background);display:flex;flex-direction:column;justify-content:center;border-radius:0 0 4px 4px;box-shadow:0 0 3px 0 var(--box-shadow);width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolStylePopup{width:auto;margin:0;position:relative;max-width:none;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;padding-bottom:24px;border-radius:4px;box-shadow:none}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolStylePopup .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolStylePopup{width:auto;margin:0;position:relative;max-width:none;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;padding-bottom:24px;border-radius:4px;box-shadow:none}.App.is-web-component:not(.is-in-desktop-only-mode) .ToolStylePopup .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolsDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tools-dropdown-container{padding:0;border:none;background-color:transparent;width:34px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .tools-dropdown-container,html:not([data-tabbing=true]) .tools-dropdown-container{outline:none}.tools-dropdown-container:not(.disabled):hover{background:var(--tools-overlay-button-hover)}.tools-dropdown-container:not(.disabled).active{background:var(--tools-overlay-button-active)}.tools-dropdown-container:not(.disabled).active .Icon{color:var(--selected-icon-color)}.tools-dropdown-container.disabled{cursor:auto}.tools-dropdown-container.disabled .Icon{color:var(--disabled-text)}.tools-dropdown-container .tools-arrow-up{width:22px;height:22px}.tools-dropdown-container .tools-arrow-down{width:22px;height:22px;margin-top:1px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedSignatureRow.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.selected-signature-row{display:flex;flex-direction:row;width:100%;justify-content:space-between;padding-left:8px;padding-right:4px;align-items:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-signature-row{width:auto;padding-left:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-signature-row .add-btn{width:190px;height:30px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-signature-row{width:auto;padding-left:0}.App.is-web-component:not(.is-in-desktop-only-mode) .selected-signature-row .add-btn{width:190px;height:30px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedRubberStamp.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.selected-rubber-stamp-container{display:flex;flex-direction:row;width:100%;justify-content:space-between;padding-left:8px;padding-right:4px;align-items:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-rubber-stamp-container .signature-row-content{height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-rubber-stamp-container .signature-row-content{height:32px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-rubber-stamp-container{width:auto}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-rubber-stamp-container{width:auto}}.selected-rubber-stamp-container .selected-rubber-stamp{display:flex;align-items:center;justify-content:center}.selected-rubber-stamp-container .selected-rubber-stamp .signature-row-content img{max-width:120%;max-height:120%;height:inherit}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedStamp.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".stamp-overLay .no-presets{color:var(--no-presets-text);display:flex;justify-content:center;align-items:center;width:100%}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolsOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ToolsOverlay{visibility:visible}.closed.ToolsOverlay{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToolsOverlay{position:absolute;z-index:95;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background)}@media(min-width:901px){.App:not(.is-web-component) .ToolsOverlayContainer{margin-right:12px}}@container (min-width: 901px){.ToolsOverlayContainer{margin-right:12px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlayContainer{margin-right:18px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlayContainer{margin-right:18px}}.ToolsOverlay{box-shadow:none;padding:0;flex-wrap:nowrap;border:0;border-radius:0;background:transparent;position:relative;border-radius:4px 4px 0 0;height:32px;align-items:center;width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay{width:100%;height:auto;display:flex;flex-direction:column;background:var(--mobile-presets-background);margin-top:-12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay{width:100%;height:auto;display:flex;flex-direction:column;background:var(--mobile-presets-background);margin-top:-12px}}.ToolsOverlay.shadow{box-shadow:0 0 5px 0 var(--box-shadow)}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay.shadow .ToolStylePopup{box-shadow:0 -20px 0 var(--preset-background),0 0 5px 0 var(--box-shadow)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay.shadow .ToolStylePopup{box-shadow:0 -20px 0 var(--preset-background),0 0 5px 0 var(--box-shadow)}}.ToolsOverlay .no-presets{color:var(--no-presets-text)}.ToolsOverlay .no-presets,.ToolsOverlay .tools-container{display:flex;justify-content:center;align-items:center;width:100%}.ToolsOverlay .tools-container{border-radius:4px;background:var(--preset-background);height:100%}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container{background:var(--mobile-presets-background);height:52px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container.is-styling-open{height:78px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container{background:var(--mobile-presets-background);height:52px}.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container.is-styling-open{height:78px}}.ToolsOverlay .tools-container .tool-buttons-container{display:flex;align-items:center;height:32px;padding-left:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container .tool-buttons-container{width:100%;justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container .tool-buttons-container{width:100%;justify-content:center}}.ToolsOverlay .close-icon-container{padding:0;border:none;background-color:transparent;position:absolute;right:18px;cursor:pointer}:host(:not([data-tabbing=true])) .ToolsOverlay .close-icon-container,html:not([data-tabbing=true]) .ToolsOverlay .close-icon-container{outline:none}.ToolsOverlay .close-icon-container .close-icon{width:24px;height:24px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Ribbons.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.custom-ribbons-container{height:100%;display:flex;align-items:center;justify-content:center;flex:1}.custom-ribbons-container .is-hidden{visibility:hidden}.custom-ribbons-container .ribbons-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.custom-ribbons-container .ribbons-container .ribbons{display:flex;align-items:center;justify-content:center;background-color:var(--ribbons-background);border-radius:4px;height:28px;position:absolute;left:50%;transform:translateX(-50%);top:0;bottom:0;margin:auto}.custom-ribbons-container .ribbons-container .ribbons .ribbon-group{padding:0;border:none;background-color:transparent;margin:0 22px;cursor:pointer;color:var(--faded-text);white-space:nowrap}:host(:not([data-tabbing=true])) .custom-ribbons-container .ribbons-container .ribbons .ribbon-group,html:not([data-tabbing=true]) .custom-ribbons-container .ribbons-container .ribbons .ribbon-group{outline:none}.custom-ribbons-container .ribbons-container .ribbons .ribbon-group.active{color:var(--ribbon-active-color)}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.custom-ribbons-container .ribbons-container .ribbons .ribbon-group{min-width:70px;margin:0 12px}}.custom-ribbons-container .ribbons-container .ribbons [data-element=exitFormEditingButton]{width:100%;padding:0 5px;border:1px solid var(--border);background:var(--view-header-background);white-space:nowrap}.custom-ribbons-container .editable-file-name{cursor:pointer}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ApplyFormFieldButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.apply-form-field-button{background-color:var(--primary-button);border:1px solid var(--primary-button);color:var(--primary-button-text);padding:7px 14px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.apply-form-field-button{width:100%}}.apply-form-field-button:hover{background:var(--primary-button-hover)!important;border:1px solid var(--primary-button-hover)!important;border-radius:5px!important}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .apply-form-field-button{padding:7px 12px;white-space:nowrap}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .apply-form-field-button{padding:7px 12px;white-space:nowrap}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n  var storage = (0, _getStorage.default)(type);\n  return {\n    getItem: function getItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.getItem(key));\n      });\n    },\n    setItem: function setItem(key, item) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.setItem(key, item));\n      });\n    },\n    removeItem: function removeItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.removeItem(key));\n      });\n    }\n  };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { 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 noop() {}\n\nvar noopStorage = {\n  getItem: noop,\n  setItem: noop,\n  removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n  if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n    return false;\n  }\n\n  try {\n    var storage = self[storageType];\n    var testKey = \"redux-persist \".concat(storageType, \" test\");\n    storage.setItem(testKey, 'test');\n    storage.getItem(testKey);\n    storage.removeItem(testKey);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n    return false;\n  }\n\n  return true;\n}\n\nfunction getStorage(type) {\n  var storageType = \"\".concat(type, \"Storage\");\n  if (hasStorage(storageType)) return self[storageType];else {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n    }\n\n    return noopStorage;\n  }\n}","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LogoBar.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LogoBar{justify-content:space-between;padding:4px 16px;width:100%;height:24px;background:var(--gray-0);color:#747c84;font-size:12px;line-height:16px}.LogoBar,.LogoBar .logo-container{display:flex;flex-direction:row;align-items:center}.LogoBar .logo-button{width:100%;grid-gap:4px;gap:4px;color:#747c84;font-size:12px!important}.LogoBar .logo-button .Icon{width:14px;height:14px}.LogoBar .version{text-decoration:none;color:#747c84}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Accessibility.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Accessibility{position:fixed;z-index:9999;display:flex;align-items:center;overflow:hidden;background:#fff;color:#000;font-size:1.2em;border:1px solid var(--border);height:36px;padding:0 10px}.Accessibility.visible{transform:translateY(0)}.Accessibility.hidden{transform:translateY(-100%)}.Accessibility button{border:none;background-color:transparent;color:#000;margin:0 7px;padding:2px 6px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolGroupButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tool-group-button{display:flex;align-items:center;justify-content:center;height:32px;border-radius:4px;cursor:pointer}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CustomElement.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./HeaderItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.HeaderItems{display:flex;align-items:center;width:100%;height:100%;position:relative;padding:0 4px}.HeaderItems .divider:first-of-type+.divider{display:none}.HeaderItems>.Button,.HeaderItems>.toggle-element-button{margin:0 6px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.Button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.toggle-element-button{margin:0 5px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.Button,.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.toggle-element-button{margin:0 5px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.Button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.toggle-element-button{margin:0 10px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.Button,.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.toggle-element-button{margin:0 10px}}.HeaderItems .tool-group-button{margin:0 6px}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems .tool-group-button{margin:0 11px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems .tool-group-button{margin:0 11px}}.HeaderItems .spacer{flex:1;height:100%}.HeaderItems>.divider{width:1px;height:20px;margin:0 6px;background:var(--divider);flex-shrink:0}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin:0 4px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin:0 4px}}.tool-group-buttons-container{overflow:hidden;position:relative;height:100%;display:flex;align-items:center}.tool-group-buttons-container .chevron-scroll{display:flex;align-items:center;position:absolute;z-index:1;height:100%;pointer-events:none;width:64px;background:var(--tools-header-background);top:0;bottom:0;margin:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.tool-group-buttons-container .chevron-scroll{background:none}}.tool-group-buttons-container .chevron-scroll .Icon{color:var(--scroll-chevron-color)}.tool-group-buttons-container .chevron-scroll.left{left:0;-webkit-mask-image:-webkit-gradient(linear,right top,left top,from(transparent),to(#000),color-stop(.6,#000));mask-image:-webkit-gradient(linear,right top,left top,from(transparent),to(#000),color-stop(.6,#000));justify-content:flex-start}.tool-group-buttons-container .chevron-scroll.right{right:0;-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),to(#000),color-stop(.6,#000));mask-image:-webkit-gradient(linear,left top,right top,from(transparent),to(#000),color-stop(.6,#000));justify-content:flex-end}.tool-group-buttons-container .chevron-scroll .scroll-edge{background:var(--tools-header-background);height:100%}.tool-group-buttons-container .chevron-scroll .scroll-edge.left{width:8px}.tool-group-buttons-container .chevron-scroll .scroll-edge.right{right:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:8px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:16px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:16px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:12px}}.tool-group-buttons-container .chevron-scroll .tool-group-button{padding:0;border:none;background-color:transparent;margin:0;pointer-events:all}:host(:not([data-tabbing=true])) .tool-group-buttons-container .chevron-scroll .tool-group-button,html:not([data-tabbing=true]) .tool-group-buttons-container .chevron-scroll .tool-group-button{outline:none}.tool-group-buttons-scroll{display:flex;overflow:auto;scroll-behavior:smooth;height:100%;align-items:center;-ms-overflow-style:none;scrollbar-width:none}.tool-group-buttons-scroll::-webkit-scrollbar{display:none}.tool-group-buttons-scroll :last-child{margin-right:0}.HeaderItems>.divider{margin-left:0}@media(min-width:901px){.App:not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (min-width: 901px){.HeaderItems>.divider{margin-left:16px;margin-right:16px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}.HeaderItems .tool-group-button{scroll-snap-align:start}.HeaderItems .tool-group-button,.HeaderItems>.Button{width:32px;height:32px}.HeaderItems .Button:not(.disabled):hover{border-radius:4px;background:var(--tools-button-hover)}.HeaderItems .Button:not(.disabled).active{border-radius:4px;background:var(--tools-button-active)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TabsHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TabsHeader{display:flex;width:100%;justify-content:flex-start;align-items:flex-end;background:var(--view-header-background);overflow-y:hidden;overflow-x:hidden}.TabsHeader .add-button{width:100%;display:flex;align-items:center;border-bottom:1px solid var(--divider)}.TabsHeader .add-button .Button .Icon{width:14px;height:14px}.TabsHeader .add-button .Button:hover{background-color:var(--view-header-button-hover)}.TabsHeader .add-button.add-button-with-label .Button{display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding:10px}.TabsHeader .add-button.add-button-with-label .Button .Icon{margin-right:4px}.TabsHeader .add-button .tab-dropdown-button{margin:0 0 2px 6px;text-align:center;padding:2px 6px;border-radius:2px;border:1px solid var(--divider)}.TabsHeader .add-button .tab-dropdown-button:hover{cursor:pointer;background-color:var(--tools-button-hover)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Tab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.draggable-tab{height:34px;display:flex;align-items:center;padding-top:2px}.draggable-tab .close-button-wrapper{display:grid;justify-items:end}.Tab{height:32px;min-width:140px;width:180px;max-width:180px;flex-direction:row;justify-content:space-between;direction:ltr;cursor:pointer;background-color:var(--gray-2)}.Tab,.Tab .file-text{display:flex;align-items:center}.Tab .file-text{min-width:60%;padding-left:6px;justify-content:flex-start;color:var(--gray-7)}.Tab .file-text p{font-size:var(--font-size-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}.Tab .file-text.disabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:wait}.Tab .Button{margin:6px;width:24px;height:24px}.Tab .Button .Icon{width:16px;height:16px;flex:inherit}.Tab .Button:hover{background-color:var(--view-header-button-hover)}.Tab .divider{background-color:var(--divider);width:1px;height:50%;height:25px;top:5px;position:absolute}.Tab:not(.active){border-bottom:1px solid var(--divider)}.Tab.active{border-top-left-radius:3px;border-top-right-radius:3px;border:1px solid var(--divider);border-bottom:0;background-color:var(--gray-1)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .Tab.active{background-color:var(--tools-header-background)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .Tab.active{background-color:var(--tools-header-background)}}.Tab.active .file-text{color:var(--gray-8)}.Tab.active .divider{display:none}.Tab:hover{background-color:var(--view-header-button-hover)}.Tab .hide{display:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./HoverTab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HoverTab{height:100%;justify-content:center;align-items:center}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FlyoutMenu.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.FlyoutMenu{visibility:visible}.closed.FlyoutMenu{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FlyoutMenu{position:absolute;z-index:95;overflow:auto;display:flex;flex-direction:column;align-items:flex-start;border-radius:4px;background:var(--component-background);box-shadow:0 0 3px 0 var(--document-box-shadow);padding:6px 0}@media(max-height:500px){.App:not(.is-web-component) .FlyoutMenu{max-height:100%;display:block}}@container (max-height: 500px){.App.is-web-component .FlyoutMenu{max-height:100%;display:block}}.FlyoutMenu .row{width:100%;margin:2px 0;height:32px;display:flex;align-items:center;padding-left:12px;padding-right:18px;cursor:pointer}.FlyoutMenu .row:hover{background:var(--popup-button-hover)}.FlyoutMenu .row.active{background:var(--popup-button-active)}.FlyoutMenu .row .title{margin-left:4px}.FlyoutMenu .type{margin-top:2px;margin-bottom:8px;padding-left:12px;padding-right:18px;font-weight:700}.FlyoutMenu .divider{margin:8px}.FlyoutMenu .divider,.FlyoutMenu .dividerSmall{height:1px;background:var(--divider);width:calc(100% - 16px)}.FlyoutMenu .dividerSmall{margin:2px 8px}.FlyoutMenu.mobile{position:fixed;width:100%;left:0;bottom:0;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;box-shadow:0 0 3px 0 var(--document-box-shadow);padding-top:30px;padding-bottom:30px}.FlyoutMenu.mobile .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}.FlyoutMenu.mobile .row,.FlyoutMenu.mobile .type{padding:0 24px}.FlyoutMenu[data-element=pageManipulationOverlay] .Button .Icon path,.FlyoutMenu[data-element=pageManipulationOverlay] .Button .Icon rect{fill:var(--icon-color)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./CollapsedTab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".draggable-collapsed-tab{height:30px;width:100%}.draggable-collapsed-tab:hover{background-color:var(--blue-1)}.CollapsedTab{justify-content:space-between;max-height:30px;min-width:180px;cursor:pointer}.CollapsedTab,.CollapsedTab .file-text{display:flex;align-items:center;width:100%}.CollapsedTab .file-text{padding-left:6px;justify-content:flex-start}.CollapsedTab .file-text p{font-size:var(--font-size-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}.CollapsedTab .file-text.disabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:wait}.CollapsedTab .Button{height:30px}.CollapsedTab .Button.hidden-button{display:none}.CollapsedTab .Button .Icon{margin:0;width:16px;height:16px}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.view-header-border{width:100%;height:1px;background:var(--border)}.HeaderToolsContainer{display:flex;align-items:flex-end;width:100%;z-index:71;height:40px;touch-action:none}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderToolsContainer{height:52px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderToolsContainer.closed{height:0}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderToolsContainer{height:52px}.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderToolsContainer.closed{height:0}}.HeaderToolsContainer.closed{height:0}.MainHeader{box-sizing:content-box!important;display:flex;flex-direction:column;align-items:center;width:100%;height:36px;background:var(--view-header-background);z-index:72;touch-action:none}.MainHeader:not(.Tools) .Button:hover:enabled{background:var(--view-header-button-hover)}.MainHeader:not(.Tools) .Button.active{background:var(--view-header-button-active)}.MainHeader:not(.Tools) .Button.active .Icon{color:var(--view-header-icon-active-fill)}.MainHeader.Tools{background:var(--tools-header-background);height:40px}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .MainHeader.Tools{height:52px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .MainHeader.Tools{height:52px}}.MainHeader.OfficeTools .picked-option{text-align:left}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .MainHeader{height:52px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .MainHeader{height:52px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ModalWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.modal-container{overflow-y:auto;max-height:100%}@media(max-height:500px){.App:not(.is-web-component) .modal-container{overflow:auto;max-height:100%}}@container (max-height: 500px){.App.is-web-component .modal-container{overflow:auto;max-height:100%}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .modal-container{width:100%;position:fixed;left:0;bottom:0;padding-top:4px;min-width:100px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .modal-container{width:100%;position:fixed;left:0;bottom:0;padding-top:4px;min-width:100px}}.modal-container{display:flex;align-items:center;flex-direction:column;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background)}.modal-container .wrapper{align-self:stretch;flex-grow:1;display:flex;flex-direction:column;position:relative}.modal-container .wrapper .header-container{width:100%;padding:16px;border-bottom:1px solid var(--divider);display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:16px}.modal-container .wrapper .header-container .left-header{display:flex;align-items:center;grid-gap:4px;gap:4px}.modal-container .wrapper .header-container .back-button{height:24px;width:32px;justify-content:center}.modal-container .wrapper .header-container .close-button{position:static;height:32px;width:32px}.modal-container .wrapper .header-container .close-button:hover{background:var(--view-header-button-hover);border-radius:4px}.modal-container .wrapper .header-container .close-button.selected{background:var(--view-header-button-active);cursor:default}.modal-container .wrapper input.text-input-modal{width:100%;height:30px;border:1px solid var(--gray-5);border-radius:4px;color:var(--text-color);padding:4px 42px 6px 8px;margin-top:8px}.modal-container .wrapper input.text-input-modal:focus{outline:none;border:1px solid var(--focus-border)}.modal-container .wrapper input.text-input-modal:focus.correct{border:1px solid var(--focus-border)}.modal-container .wrapper input.text-input-modal::-moz-placeholder{color:var(--placeholder-text)}.modal-container .wrapper input.text-input-modal:-ms-input-placeholder{color:var(--placeholder-text)}.modal-container .wrapper input.text-input-modal::placeholder{color:var(--placeholder-text)}.modal-container .wrapper input.text-input-modal.wrong{border:1px solid #cf0101}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PasswordModal.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.PasswordModal{visibility:visible}.closed.PasswordModal{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PasswordModal{position:fixed;left:0;bottom:0;z-index:100;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:var(--modal-negative-space)}.PasswordModal .modal-container .wrapper .modal-content{padding:10px}.PasswordModal .footer{display:flex;flex-direction:row;justify-content:flex-end;width:100%;margin-top:13px}.PasswordModal .footer.modal-footer{padding:16px;margin:0;border-top:1px solid var(--divider)}.PasswordModal .footer .modal-button{display:flex;justify-content:center;align-items:center;padding:6px 18px;margin:8px 0 0;width:auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-radius:4px;height:30px;cursor:pointer}.PasswordModal .footer .modal-button.cancel{color:var(--secondary-button-text);border:1px solid var(--secondary-button-text)}.PasswordModal .footer .modal-button.cancel:hover{background-color:var(--document-background-color);color:var(--secondary-button-hover);border:1px solid var(--secondary-button-hover)}.PasswordModal .footer .modal-button.confirm{margin-left:4px;color:var(--primary-button-text);font-weight:600;background:var(--primary-button)}.PasswordModal .footer .modal-button.confirm:hover{background:var(--primary-button-hover)}.PasswordModal .footer .modal-button.confirm.disabled{background:var(--primary-button)!important;opacity:.5}.PasswordModal .footer .modal-button.secondary-btn-custom{border-radius:4px;border:1px solid var(--primary-button);color:var(--primary-button);padding:2px 20px 4px;cursor:pointer;background-color:#fff}.PasswordModal .footer .modal-button.secondary-btn-custom:hover{color:var(--secondary-button-hover)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PasswordModal .footer .modal-button{padding:23px 8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PasswordModal .footer .modal-button{padding:23px 8px}}.PasswordModal .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PasswordModal .swipe-indicator{display:none}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .PasswordModal .swipe-indicator{display:none}}.PasswordModal .modal-container{width:480px}.PasswordModal .modal-container .wrapper form{padding:16px;font-size:14px}.PasswordModal .modal-container .wrapper .incorrect-password{margin-top:6px;font-size:13px;color:#cf0101}.PasswordModal .modal-container .wrapper .modal-button{margin-top:0}.PasswordModal .modal-container .wrapper .error-modal-content{padding:2px 16px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var $ = require('../internals/export');\n\n// eslint-disable-next-line es-x/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PageNavOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PageNavOverlay{height:32px;font-family:Lato;font-weight:700;color:var(--text-color);display:inline-flex;align-items:center;cursor:pointer;opacity:.85;position:relative;left:50%;transform:translateX(-50%);top:auto;margin-left:auto;margin-right:auto;background:#485056;border-radius:4px;z-index:0;bottom:20px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PageNavOverlay{height:36px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PageNavOverlay{height:36px}}.PageNavOverlay.logo-bar-enabled{bottom:44px}.PageNavOverlay .side-arrow-container{padding:0;border:none;background-color:transparent;width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;margin:0 4px}:host(:not([data-tabbing=true])) .PageNavOverlay .side-arrow-container,html:not([data-tabbing=true]) .PageNavOverlay .side-arrow-container{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PageNavOverlay .side-arrow-container{width:40px;height:28px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PageNavOverlay .side-arrow-container{width:40px;height:28px}}.PageNavOverlay .side-arrow-container:hover{background:#21242a}.PageNavOverlay .side-arrow-container .side-arrow{width:16px;height:16px;color:#fff}.PageNavOverlay .formContainer{height:100%;display:flex;align-items:center}.PageNavOverlay .formContainer form{top:-1px;position:relative;color:#fff;margin-bottom:0}.PageNavOverlay .formContainer form input{min-width:8px;padding:0;border:none;text-align:right;font-family:Lato;font-weight:700;background:transparent;color:#fff;cursor:pointer;outline:none;border-bottom:1px solid var(--icon-color);border-radius:0}.FadeOut{opacity:0;transition:opacity .3s ease}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es-x/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n  parseFloat: parseFloat\n});\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function get() {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _clsx2 = _interopRequireDefault(require(\"clsx\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nvar _excluded = [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\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 _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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 _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\n//\n// Define <Draggable>\n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n  _inherits(Draggable, _React$Component);\n\n  var _super = _createSuper(Draggable);\n\n  function Draggable(props\n  /*: DraggableProps*/\n  ) {\n    var _this;\n\n    _classCallCheck(this, Draggable);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n      var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n      if (shouldStart === false) return false;\n\n      _this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n      if (!_this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        x: uiData.x,\n        y: uiData.y\n      }; // Keep within bounds.\n\n      if (_this.props.bounds) {\n        // Save original x and y.\n        var x = newState.x,\n            y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n\n        newState.x += _this.state.slackX;\n        newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n        var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n            _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n            newStateX = _getBoundPosition2[0],\n            newStateY = _getBoundPosition2[1];\n\n        newState.x = newStateX;\n        newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n        newState.slackX = _this.state.slackX + (x - newState.x);\n        newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - _this.state.x;\n        uiData.deltaY = newState.y - _this.state.y;\n      } // Short-circuit if user's callback killed it.\n\n\n      var shouldUpdate = _this.props.onDrag(e, uiData);\n\n      if (shouldUpdate === false) return false;\n\n      _this.setState(newState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n      if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n      var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      }; // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n      var controlled = Boolean(_this.props.position);\n\n      if (controlled) {\n        var _this$props$position = _this.props.position,\n            x = _this$props$position.x,\n            y = _this$props$position.y;\n        newState.x = x;\n        newState.y = y;\n      }\n\n      _this.setState(newState);\n    });\n\n    _this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: _objectSpread({}, props.position),\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n\n    return _this;\n  }\n\n  _createClass(Draggable, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Check to see if the element passed is an instanceof SVGElement\n      if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n        this.setState({\n          isElementSVG: true\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.setState({\n        dragging: false\n      }); // prevents invariant if unmounted while dragging\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n      return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: ReactElement<any>*/\n    {\n      var _clsx;\n\n      var _this$props2 = this.props,\n          axis = _this$props2.axis,\n          bounds = _this$props2.bounds,\n          children = _this$props2.children,\n          defaultPosition = _this$props2.defaultPosition,\n          defaultClassName = _this$props2.defaultClassName,\n          defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n          defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n          position = _this$props2.position,\n          positionOffset = _this$props2.positionOffset,\n          scale = _this$props2.scale,\n          draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n      var style = {};\n      var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n      var controlled = Boolean(position);\n      var draggable = !controlled || this.state.dragging;\n      var validPosition = position || defaultPosition;\n      var transformOpts = {\n        // Set left if horizontal drag is enabled\n        x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n        // Set top if vertical drag is enabled\n        y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n      }; // If this element was SVG, we use the `transform` attribute.\n\n      if (this.state.isElementSVG) {\n        svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n      } else {\n        // Add a CSS transform to move the element around. This allows us to move the element around\n        // without worrying about whether or not it is relatively or absolutely positioned.\n        // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n        // has a clean slate.\n        style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n      } // Mark with class while dragging\n\n\n      var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n      return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n        onStart: this.onDragStart,\n        onDrag: this.onDrag,\n        onStop: this.onDragStop\n      }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n        className: className,\n        style: _objectSpread(_objectSpread({}, children.props.style), style),\n        transform: svgTransform\n      }));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: // React 16.3+\n    // Arity (props, state)\n    function getDerivedStateFromProps(_ref, _ref2)\n    /*: ?$Shape<DraggableState>*/\n    {\n      var position = _ref.position;\n      var prevPropsPosition = _ref2.prevPropsPosition;\n\n      // Set x/y if a new position is provided in props that is different than the previous.\n      if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n        (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n          position: position,\n          prevPropsPosition: prevPropsPosition\n        });\n        return {\n          x: position.x,\n          y: position.y,\n          prevPropsPosition: _objectSpread({}, position)\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n  var _window$document, _window$document$docu;\n\n  var prop\n  /*: string*/\n  = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n\n  var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n  if (!style) return '';\n  if (prop in style) return '';\n\n  for (var i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n\n  return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n  var out = '';\n  var shouldCapitalize = true;\n\n  for (var i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n\n  return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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 _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\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n  dragging: boolean,\n  lastX: number,\n  lastY: number,\n  touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n  _inherits(DraggableCore, _React$Component);\n\n  var _super = _createSuper(DraggableCore);\n\n  function DraggableCore() {\n    var _this;\n\n    _classCallCheck(this, DraggableCore);\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      dragging: false,\n      // Used while dragging to determine deltas.\n      lastX: NaN,\n      lastY: NaN,\n      touchIdentifier: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n      // Make it possible to attach event handlers on top of this one.\n      _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n      if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n      var thisNode = _this.findDOMNode();\n\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n\n      var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n      if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n        return;\n      } // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n\n\n      if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n\n      var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n      _this.setState({\n        touchIdentifier: touchIdentifier\n      }); // Get the current drag point from the event. This is used as the offset.\n\n\n      var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return; // not possible but satisfies flow\n\n      var x = position.x,\n          y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n      (0, _log.default)('calling', _this.props.onStart);\n\n      var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n\n      if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n\n      _this.setState({\n        dragging: true,\n        lastX: x,\n        lastY: y\n      }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n\n\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n      // Get the current drag point from the event. This is used as the offset.\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX,\n            deltaY = y - _this.state.lastY;\n\n        var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n        deltaX = _snapToGrid2[0];\n        deltaY = _snapToGrid2[1];\n        if (!deltaX && !deltaY) return; // skip useless drag\n\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n      var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) {\n        try {\n          // $FlowIgnore\n          _this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          var event = ((document.createEvent('MouseEvents')\n          /*: any*/\n          )\n          /*: MouseTouchEvent*/\n          ); // I see why this insanity was deprecated\n          // $FlowIgnore\n\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n          _this.handleDragStop(event);\n        }\n\n        return;\n      }\n\n      _this.setState({\n        lastX: x,\n        lastY: y\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n      if (!_this.state.dragging) return;\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX || 0;\n        var deltaY = y - _this.state.lastY || 0;\n\n        var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n        deltaX = _snapToGrid4[0];\n        deltaY = _snapToGrid4[1];\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n      var shouldContinue = _this.props.onStop(e, coreEvent);\n\n      if (shouldContinue === false || _this.mounted === false) return false;\n\n      var thisNode = _this.findDOMNode();\n\n      if (thisNode) {\n        // Remove user-select hack\n        if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n      _this.setState({\n        dragging: false,\n        lastX: NaN,\n        lastY: NaN\n      });\n\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n      dragEventFor = eventsFor.mouse;\n      return _this.handleDragStop(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStop(e);\n    });\n\n    return _this;\n  }\n\n  _createClass(DraggableCore, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n      // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        var ownerDocument = thisNode.ownerDocument;\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n      }\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props, _this$props2, _this$props2$nodeRef;\n\n      return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: React.Element<any>*/\n    {\n      // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n      return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n        // Note: mouseMove handler is attached to document so it will still function\n        // when the user drags quickly and leaves the bounds of the element.\n        onMouseDown: this.onMouseDown,\n        onMouseUp: this.onMouseUp,\n        // onTouchStart is added on `componentDidMount` so they can be added with\n        // {passive: false}, which allows it to cancel. See\n        // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n        onTouchEnd: this.onTouchEnd\n      });\n    }\n  }]);\n\n  return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function offsetParent(props\n  /*: DraggableCoreProps*/\n  , propName\n  /*: $Keys<DraggableCoreProps>*/\n  ) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function onStart() {},\n  onDrag: function onDrag() {},\n  onStop: function onStop() {},\n  onMouseDown: function onMouseDown() {},\n  scale: 1\n});","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ReaderModeStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ReaderModeStylePopup{visibility:visible}.closed.ReaderModeStylePopup{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ReaderModeStylePopup{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.ReaderModeStylePopup:empty{padding:0}.ReaderModeStylePopup .buttons{display:flex}.ReaderModeStylePopup .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ReaderModeStylePopup .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ReaderModeStylePopup .Button{width:42px;height:42px}}.ReaderModeStylePopup .Button:hover{background:var(--popup-button-hover)}.ReaderModeStylePopup .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ReaderModeStylePopup .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ReaderModeStylePopup .Button .Icon{width:24px;height:24px}}.is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.ReaderModeStylePopup .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;height:32px}}.is-vertical.ReaderModeStylePopup .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.ReaderModeStylePopup .Button.main-menu-button span{white-space:nowrap}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ReaderModeStylePopup{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);cursor:move}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentContainer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.document-content-container{flex-direction:column;transition:all .3s ease-in-out}.document-content-container,.document-content-container .measurement-container{display:flex;align-items:center;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%}.document-content-container .measurement-container{flex-direction:column;flex:1}.document-content-container .measurement-container .footer{pointer-events:none;position:absolute;bottom:0;left:0;z-index:55;width:100%;transition:all .3s ease}.document-content-container .measurement-container .footer>*{pointer-events:auto}.document-content-container.closed{display:none}.DocumentContainer{display:flex;flex-direction:column;flex:1;width:100%;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.DocumentContainer{margin-left:0!important;width:100%!important}}.DocumentContainer .document{margin:auto;outline:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.DocumentContainer .document.hidden{display:none}.DocumentContainer .document .pageSection[id*=pageSectionb]{box-shadow:none}.DocumentContainer .document .pageSection .pageContainer{background-color:#fff;position:relative;box-shadow:0 0 2px 0 rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.12),0 1px 3px 0 rgba(0,0,0,.12)}.DocumentContainer .document .pageSection .pageContainer span.link{cursor:pointer}.DocumentContainer .document textarea.freetext{position:absolute;z-index:20;border:0;padding:0;box-sizing:border-box;resize:none;outline:1px solid transparent}.DocumentContainer .bookmark-shortcut{z-index:40;width:20px;height:20px;top:0;right:25px;cursor:pointer}.DocumentContainer .bookmark-shortcut.filled{color:var(--primary-button)}.DocumentContainer .bookmark-shortcut.filled svg.filled{display:inline}.DocumentContainer .bookmark-shortcut.filled svg.unfilled{display:none}.DocumentContainer .bookmark-shortcut.unfilled{color:var(--placeholder-text)}.DocumentContainer .bookmark-shortcut.unfilled:hover{color:var(--primary-button)}.DocumentContainer .bookmark-shortcut.unfilled svg.filled{display:none}.DocumentContainer .bookmark-shortcut.unfilled svg.unfilled{display:inline}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Element.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LeftPanelTabs.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LeftPanelTabs{display:flex;flex:1;border-radius:4px;border:1px solid var(--border)}.LeftPanelTabs .Button{flex-grow:1;height:26px;margin:0;border-radius:0}.LeftPanelTabs .Button:not(:last-child){border-right:1px solid var(--divider)}.LeftPanelTabs .Button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.LeftPanelTabs .Button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.LeftPanelTabs .Button .Icon{width:19px;height:19px}.LeftPanelTabs .Button:hover{background:var(--popup-button-hover)}.LeftPanelTabs .Button.active{background:var(--popup-button-active)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./MoreOptionsContextMenuPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".more-options-context-menu-popup{padding-top:var(--padding-small);padding-bottom:var(--padding-small);background-color:var(--component-background);box-shadow:0 0 3px var(--document-box-shadow);border-radius:4px}.more-options-context-menu-popup .option-button{justify-content:flex-start;width:100%;padding:var(--padding-small) var(--padding-medium);border-radius:0}.more-options-context-menu-popup .option-button:not(:first-child){margin-top:var(--padding-small)}.more-options-context-menu-popup .option-button:hover{background-color:var(--tools-header-background)}.more-options-context-menu-popup .option-button .Icon{width:20px;height:auto;margin-right:10px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PortfolioItemContent.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".PortfolioPanel .bookmark-outline-single-container .bookmark-outline-label-row{align-items:center}.PortfolioPanel .bookmark-outline-single-container .bookmark-outline-text{flex-basis:calc(100% - 38px)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input{-webkit-font-smoothing:antialiased}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input{border-color:var(--border)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input.ui__input--message-error{border-color:var(--error-border-color)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input.ui__input--message-error.ui__input--focused{box-shadow:none}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input.ui__input--message-error .ui__input__icon{display:none}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input.ui__input--message-default.ui__input--focused{border-color:var(--outline-color);box-shadow:none}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input .ui__input__input{padding:var(--padding-small);color:var(--text-color);height:auto;overflow:auto;line-height:normal}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input .ui__input__input::-moz-placeholder{color:var(--placeholder-text)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input .ui__input__input:-ms-input-placeholder{color:var(--placeholder-text)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input .ui__input__input::placeholder{color:var(--placeholder-text)}.PortfolioPanel .bookmark-outline-single-container .portfolio-input .ui__input__messageText{color:var(--error-text-color);margin-top:var(--padding-small);font-size:inherit}.PortfolioPanel .bookmark-outline-single-container .portfolio-item-icon{margin-right:5px}.PortfolioPanel .bookmark-outline-single-container .portfolio-item-icon .Icon{width:15px;height:15px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PortfolioItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return un$EndsWith\n      ? un$EndsWith(that, search, end)\n      : slice(that, end - search.length, end) === search;\n  }\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n","'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","exports.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","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\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","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n  || global.WebKitBlobBuilder\n  || global.MSBlobBuilder\n  || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n  try {\n    var a = new Blob(['hi']);\n    return a.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n  try {\n    var b = new Blob([new Uint8Array([1,2])]);\n    return b.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n  && BlobBuilder.prototype.append\n  && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n  for (var i = 0; i < ary.length; i++) {\n    var chunk = ary[i];\n    if (chunk.buffer instanceof ArrayBuffer) {\n      var buf = chunk.buffer;\n\n      // if this is a subarray, make a copy so we only\n      // include the subarray region from the underlying buffer\n      if (chunk.byteLength !== buf.byteLength) {\n        var copy = new Uint8Array(chunk.byteLength);\n        copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n        buf = copy.buffer;\n      }\n\n      ary[i] = buf;\n    }\n  }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n  options = options || {};\n\n  var bb = new BlobBuilder();\n  mapArrayBufferViews(ary);\n\n  for (var i = 0; i < ary.length; i++) {\n    bb.append(ary[i]);\n  }\n\n  return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n  mapArrayBufferViews(ary);\n  return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n  if (blobSupported) {\n    return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n  } else if (blobBuilderSupported) {\n    return BlobBuilderConstructor;\n  } else {\n    return undefined;\n  }\n})();\n","var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\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 */\nfunction 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\nmodule.exports = createRange;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = baseRange;\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 */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".bookmark-outline-panel{display:flex;padding-left:var(--padding);padding-right:var(--padding-small)}.bookmark-outline-control-button{width:auto}.bookmark-outline-control-button span{color:inherit}.bookmark-outline-control-button,.bookmark-outline-control-button.disabled,.bookmark-outline-control-button[disabled]{color:var(--secondary-button-text)}.bookmark-outline-control-button.disabled,.bookmark-outline-control-button[disabled]{opacity:.5}.bookmark-outline-control-button.disabled span,.bookmark-outline-control-button[disabled] span{color:inherit}.bookmark-outline-control-button:not(.disabled):active,.bookmark-outline-control-button:not(.disabled):focus,.bookmark-outline-control-button:not(.disabled):hover,.bookmark-outline-control-button:not([disabled]):active,.bookmark-outline-control-button:not([disabled]):focus,.bookmark-outline-control-button:not([disabled]):hover{color:var(--secondary-button-hover)}.bookmark-outline-panel-header{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding-bottom:var(--padding-tiny);border-bottom:1px solid var(--border)}.bookmark-outline-panel-header .header-title{font-size:16px}.bookmark-outline-row{flex-grow:1;overflow-y:auto}.msg-no-bookmark-outline{color:var(--placeholder-text);text-align:center}.bookmark-outline-single-container{display:flex;flex-flow:row nowrap;align-items:flex-start;border-radius:4px}.bookmark-outline-single-container.default{padding:var(--padding-small) var(--padding-tiny);border:1px solid transparent}.bookmark-outline-single-container.default.hover,.bookmark-outline-single-container.default:hover{cursor:pointer}.bookmark-outline-single-container.default.hover .bookmark-outline-more-button,.bookmark-outline-single-container.default:hover .bookmark-outline-more-button{display:flex}.bookmark-outline-single-container.default:hover{background-color:var(--outline-selected)}.bookmark-outline-single-container.default.hover,.bookmark-outline-single-container.default.selected{background-color:var(--popup-button-active)}.bookmark-outline-single-container.default .bookmark-outline-label-row{overflow:hidden}.bookmark-outline-single-container.editing{background-color:var(--faded-component-background);padding:var(--padding-medium) 20px}.bookmark-outline-single-container.preview{display:inline-flex;margin-top:0;padding:var(--padding-small);background-color:var(--component-background);box-shadow:0 0 3px var(--note-box-shadow)}.bookmark-outline-single-container .bookmark-outline-checkbox{flex-grow:0;flex-shrink:0;margin-top:1px;margin-bottom:0;margin-right:var(--padding-small)}.bookmark-outline-single-container .bookmark-outline-label-row{flex-grow:1;flex-shrink:1;display:flex;flex-flow:row wrap;align-items:flex-start;position:relative;overflow:hidden}.bookmark-outline-single-container .bookmark-outline-label{font-weight:600;flex-grow:1;flex-shrink:1;margin-bottom:var(--padding-small)}.bookmark-outline-single-container .bookmark-outline-input,.bookmark-outline-single-container .bookmark-outline-text{flex-grow:1;flex-shrink:1;flex-basis:calc(100% - 18px)}.bookmark-outline-single-container .bookmark-text-input{margin-left:var(--padding-large)}.bookmark-outline-single-container .bookmark-outline-input{color:var(--text-color);width:calc(100% - var(--padding-large));padding:var(--padding-small);border:1px solid var(--border)}.bookmark-outline-single-container .bookmark-outline-input:focus{border-color:var(--outline-color)}.bookmark-outline-single-container .bookmark-outline-input::-moz-placeholder{color:var(--placeholder-text)}.bookmark-outline-single-container .bookmark-outline-input:-ms-input-placeholder{color:var(--placeholder-text)}.bookmark-outline-single-container .bookmark-outline-input::placeholder{color:var(--placeholder-text)}.bookmark-outline-single-container .bookmark-outline-more-button{display:none;flex-grow:0;flex-shrink:0;width:auto;height:auto;margin-left:var(--padding-tiny)}.bookmark-outline-single-container .bookmark-outline-more-button .Icon{width:14px;height:14px}.bookmark-outline-single-container .bookmark-outline-editing-controls{flex-basis:100%;display:flex;flex-flow:row wrap;justify-content:flex-end;align-items:center;margin-top:var(--padding-medium)}.bookmark-outline-single-container .bookmark-outline-cancel-button,.bookmark-outline-single-container .bookmark-outline-save-button{width:auto;padding:6px var(--padding)}.bookmark-outline-single-container .bookmark-outline-cancel-button{color:var(--secondary-button-text)}.bookmark-outline-single-container .bookmark-outline-cancel-button:hover{color:var(--secondary-button-hover)}.bookmark-outline-single-container .bookmark-outline-save-button{color:var(--primary-button-text);background-color:var(--primary-button);margin-left:var(--padding-tiny);border-radius:4px}.bookmark-outline-single-container .bookmark-outline-save-button:hover{background-color:var(--primary-button-hover)}.bookmark-outline-single-container .bookmark-outline-save-button.disabled,.bookmark-outline-single-container .bookmark-outline-save-button:disabled{background-color:var(--primary-button)!important;opacity:.5}.bookmark-outline-footer{border-top:1.5px solid var(--border);padding-top:var(--padding-medium);padding-bottom:var(--padding-medium);display:flex;justify-content:center;align-items:center}.bookmark-outline-footer .add-new-button .Icon{width:14px;height:14px;margin-right:var(--padding-tiny);color:inherit;fill:currentColor}.bookmark-outline-footer .add-new-button.disabled .Icon.disabled,.bookmark-outline-footer .add-new-button.disabled .Icon.disabled path,.bookmark-outline-footer .add-new-button[disabled] .Icon.disabled,.bookmark-outline-footer .add-new-button[disabled] .Icon.disabled path{color:inherit;fill:currentColor}.bookmark-outline-footer .multi-selection-button{width:auto;padding:7px}.bookmark-outline-footer .multi-selection-button .Icon{width:18px;height:18px}.bookmark-outline-footer .multi-selection-button:not(:first-child){margin-left:var(--padding-tiny)}.bookmark-outline-footer .multi-selection-button:hover{background-color:var(--view-header-button-hover)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PortfolioPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PortfolioPanel .portfolio-panel-control{display:flex}.PortfolioPanel .bookmark-outline-single-container{margin-top:6px;margin-bottom:6px}.PortfolioPanel .bookmark-outline-row{padding-top:6px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t  // reliably everywhere they are implemented.\n\t\t  // They are implemented in all modern browsers.\n\t\t  //\n\t\t  // - Android 4-4.3\n\t\t  // - Chrome 26-34\n\t\t  // - Firefox 14-29\n\t\t  // - Internet Explorer 11\n\t\t  // - iPad Safari 6-7.1\n\t\t  // - iPhone Safari 7-7.1\n\t\t  // - Safari 6-7\n\t\t  makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t  // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t  // 11-12, and in web workers in many engines.\n\t\t  // Although message channels yield to any queued rendering and IO tasks, they\n\t\t  // would be better than imposing the 4ms delay of timers.\n\t\t  // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t  // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t  // not have MutationObservers.\n\t\t  // Although setImmediate yields to the browser's renderer, it would be\n\t\t  // preferrable to falling back to setTimeout since it does not have\n\t\t  // the minimum 4ms penalty.\n\t\t  // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t  // Desktop to a lesser extent) that renders both setImmediate and\n\t\t  // MessageChannel useless for the purposes of ASAP.\n\t\t  // https://github.com/kriskowal/q/issues/396\n\n\t\t  // Timers are implemented universally.\n\t\t  // We fall back to timers in workers in most engines, and in foreground\n\t\t  // contexts in the following browsers.\n\t\t  // However, note that even this simple case requires nuances to operate in a\n\t\t  // broad spectrum of browsers.\n\t\t  //\n\t\t  // - Firefox 3-13\n\t\t  // - Internet Explorer 6-9\n\t\t  // - iPad Safari 4.3\n\t\t  // - Lynx 2.8.7\n\t\t  makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects.  A task object implements\n\nimport type { TaskFn, Task } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","export interface Task {\n\tcall(): void\n}\nexport type TaskFn = () => void\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ThumbnailControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.thumbnailControls-overlay{display:grid;text-align:center;z-index:2;margin-top:5px;grid-template-areas:\\\"rotate delete . more\\\";grid-template-columns:repeat(3,1fr)}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.thumbnailControls-overlay{display:flex}}.thumbnailControls-overlay .Button{height:32px;padding:0;width:32px}.thumbnailControls-overlay .Button .Icon{height:24px;width:24px;color:var(--icon-color)}.thumbnailControls-overlay .Button:hover{background:var(--view-header-button-hover);border-radius:4px}.thumbnailControls-overlay .Button.active{background:var(--view-header-button-active)}.thumbnailControls-overlay .Button.active .Icon{color:var(--selected-icon-color)}.thumbnailControls-overlay .rotate-button{grid-area:rotate}.thumbnailControls-overlay .delete-button{grid-area:delete}.thumbnailControls-overlay .more-options{grid-area:more}.thumbnailControls-overlay.custom-buttons .Button{grid-area:auto}.thumbnailControls{display:flex;flex-direction:row;text-align:center;z-index:2;margin-top:5px}.thumbnailControls .Button{height:32px;padding:0;width:32px;margin:0 4px}.thumbnailControls .Button .Icon{height:24px;width:24px;color:var(--icon-color)}.thumbnailControls .Button:hover{background:var(--view-header-button-hover);border-radius:4px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Thumbnail.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Thumbnail{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;cursor:pointer}.Thumbnail.active .container .page-image{border:2px solid var(--focus-border);box-shadow:none;box-sizing:content-box}.Thumbnail .container{position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer}.Thumbnail .container .page-image{box-shadow:0 0 3px 0 var(--box-shadow)}.Thumbnail .container .annotation-image,.Thumbnail .container .page-image{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.Thumbnail .container .checkbox{position:absolute;border-radius:4px;z-index:4}.Thumbnail .container .default{top:3%;right:15%}.Thumbnail .container .rotated{top:15%;right:3%}.Thumbnail .page-label{margin-top:11px}.Thumbnail.selected .container .thumbnail:before{color:#fff;background:var(--focus-border);width:16px;height:16px;position:absolute;z-index:10}.Thumbnail.selected .container canvas{background:hsla(0,0%,100%,.6)}.Thumbnail.active .page-label{color:var(--focus-border)!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.documentControls{display:flex;flex-direction:column}.documentControls .divider{height:1px;background:var(--divider);margin:16px 8px 8px 16px}.documentControls .documentControlsInput{display:flex;flex-direction:row;padding:8px 8px 16px 16px}.documentControls .documentControlsInput .pagesInput{width:100%;height:30px;border:1px solid var(--border);border-radius:4px;color:var(--text-color);padding:4px 8px}.documentControls .documentControlsInput .pagesInput:focus{outline:none;border:1px solid var(--focus-border)}.documentControls .documentControlsInput .pagesInput::-moz-placeholder{color:var(--placeholder-text)}.documentControls .documentControlsInput .pagesInput:-ms-input-placeholder{color:var(--placeholder-text)}.documentControls .documentControlsInput .pagesInput::placeholder{color:var(--placeholder-text)}.documentControls .documentControlsInput .documentControlsButton{display:flex;flex-direction:row;padding-left:2px}.documentControls .documentControlsInput .documentControlsButton .Button{height:30px;padding:0;width:30px;margin:0 4px}.documentControls .documentControlsInput .documentControlsButton .Button .Icon{height:24px;width:24px;color:var(--icon-color)}.documentControls .documentControlsInput .documentControlsButton .Button:hover{background:var(--view-header-button-hover);border-radius:4px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ThumbnailsPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.thumbnail-slider-container{display:flex;align-items:center;width:230px;margin:0 auto}.thumbnail-slider-container .thumbnail-slider{width:100%;height:20px;padding:0;color:transparent;background-color:transparent;border:0 transparent}.thumbnail-slider-container input[type=range]{-webkit-appearance:none;margin:10px 0;width:100%}.thumbnail-slider-container input[type=range]:focus{outline:none;box-shadow:0 0 5px var(--focus-border)}.thumbnail-slider-container input[type=range]::-webkit-slider-runnable-track{width:100%;height:3px;cursor:pointer;animate:.2s;box-shadow:0 0 0 #000;background:var(--slider-filled);border-radius:5px;border:0 solid #000}.thumbnail-slider-container input[type=range]::-webkit-slider-thumb{box-shadow:0 0 1px #000;border:0 solid #000;height:15px;width:15px;border-radius:50px;background:var(--slider-filled);cursor:pointer;-webkit-appearance:none;margin-top:-5px}.thumbnail-slider-container input[type=range]:focus::-webkit-slider-runnable-track{background:var(--slider-filled)}.thumbnail-slider-container input[type=range]::-moz-range-track{width:100%;height:3px;cursor:pointer;animate:.2s;box-shadow:0 0 0 #000;background:var(--slider-filled);border-radius:5px;border:0 solid #000}.thumbnail-slider-container input[type=range]::-moz-range-thumb{box-shadow:0 0 1px #000;border:0 solid #000;height:15px;width:15px;border-radius:50px;background:var(--slider-filled);cursor:pointer}.thumbnail-slider-container input[type=range]::-ms-track{padding:5px 0 0;width:100%;height:3px;background:transparent;border-color:transparent;color:transparent;cursor:pointer;border-width:6px 0;animate:.2s}.thumbnail-slider-container input[type=range]::-ms-fill-lower,.thumbnail-slider-container input[type=range]::-ms-fill-upper{background:var(--slider-filled);border:0 solid #000;border-radius:10px;box-shadow:0 0 0 #000}.thumbnail-slider-container input[type=range]::-ms-thumb{box-shadow:0 0 1px #000;border:0 solid #000;height:15px;width:15px;border-radius:50%;background:var(--slider-filled);cursor:pointer}.thumbnail-slider-container input[type=range]:focus::-ms-fill-lower,.thumbnail-slider-container input[type=range]:focus::-ms-fill-upper{background:var(--slider-filled)}.thumbnail-slider-container Button{width:15px;height:15px;margin:2.5px;padding-top:6px}.thumbnail-slider-container Button:hover{background:var(--view-header-button-hover);border-radius:4px}.ThumbnailsPanel{overflow:hidden!important;display:flex;height:100%}.ThumbnailsPanel #virtualized-thumbnails-container{flex:1}.ThumbnailsPanel .row{display:flex;justify-content:space-around;align-items:center;flex-direction:column}.ThumbnailsPanel .thumbnailPlaceholder{width:150px;margin:2px;border:1px solid var(--focus-border)}.ThumbnailsPanel .columnsOfThumbnails.row{display:flex;justify-content:left;align-items:center;flex-direction:row}.ThumbnailsPanel .columnsOfThumbnails .cellThumbContainer{display:flex;flex-direction:row}.ThumbnailsPanel .columnsOfThumbnails .Thumbnail{display:inline-flex}.ThumbnailsPanel .columnsOfThumbnails .thumbnailPlaceholder{width:116px;min-width:116px;height:150px;margin-bottom:30px}.thumbnailAutoScrollArea{position:absolute;width:calc(100% - 55px);z-index:10;background:hsla(0,0%,100%,0)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OutlineControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.OutlineControls{display:flex;justify-content:center;align-items:center;margin-left:var(--padding);margin-right:var(--padding);border-bottom:1px solid var(--border);padding-top:4px;padding-bottom:4px;color:var(--faded-text)}.OutlineControls .Button{height:30px;padding:0;width:30px;margin:0 4px}.OutlineControls .Button .Icon{height:24px;width:24px;color:var(--icon-color)}.OutlineControls .Button:hover{background:var(--view-header-button-hover);border-radius:4px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OutlineContent.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".outline-destination,.outline-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.outline-destination{flex-basis:100%;font-size:10px;color:var(--faded-text);margin-top:var(--padding-small)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Outline.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.outline-drag-container{border-radius:4px}.outline-drag-container.isNesting>.bookmark-outline-single-container{background-color:var(--popup-button-active);border-color:var(--focus-border)}.outline-treeview-toggle{flex-grow:0;flex-shrink:0;margin-right:var(--padding-small);min-width:14px;transition:transform .1s ease}.outline-treeview-toggle.expanded{transform:rotate(90deg)}.outline-treeview-toggle .Button{width:auto;height:auto}.outline-treeview-toggle .Button .Icon{width:14px;height:auto}.outline-drag-line{margin-left:var(--padding);margin-right:var(--padding);border-top:1px solid var(--focus-border);position:relative}.outline-drag-line:before{content:\\\"\\\";display:block;position:absolute;width:5px;height:5px;top:-3px;left:0;background-color:var(--focus-border);border-radius:50%}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OutlinesPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".OutlinesPanel .bookmark-outline-single-container{margin-top:6px;margin-bottom:6px}.OutlinesPanel .bookmark-outline-row{padding-top:6px}.OutlinesPanel .msg-no-bookmark-outline{margin-top:6px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./BookmarksPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.BookmarksPanel{display:flex;flex-direction:column;flex:1}.BookmarksPanel .bookmark-switch{-webkit-font-smoothing:antialiased;margin-top:var(--padding-medium);padding-left:4px}.BookmarksPanel .bookmark-switch label{font-size:11px}.BookmarksPanel .bookmark-outline-single-container{margin-top:var(--padding-medium)}.BookmarksPanel .msg-no-bookmark-outline{margin-top:var(--padding)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Layer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Layer{margin-top:12px}.Layer .content-container,.Layer .parent-layer{display:inline-flex;align-items:center}.Layer .parent-layer .ui__choice{margin-right:0}.Layer .parent-layer .ui__choice__label{margin-left:8px;margin-right:8px;padding:0}.Layer .arrow{margin-right:4px;display:inline-flex;align-items:center;border-radius:4px;width:18px;height:18px}.Layer .arrow:hover{cursor:pointer;background-color:#e7edf3}.Layer .arrow .Icon{width:18px;height:18px}.Layer .sub-layers{padding-left:25px}.Layer .lock-icon{display:inline-flex;align-items:center;width:10px;height:10px}.Layer .lock-icon svg{width:100%;height:100%}.Layer .lock-icon svg path{fill:#485056}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LayersPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LayersPanel{padding-left:15px}.LayersPanel>.Layer:first-child{margin-top:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Spinner.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.spinner{border-top:5px solid var(--border);border:5px solid var(--border);border-top-color:var(--focus-border);border-radius:50%;-webkit-animation:spin 1.2s ease infinite;animation:spin 1.2s ease infinite}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FileAttachmentPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.no-attachment{display:flex;flex-direction:column;align-items:center}.no-attachment .msg{text-align:center}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .no-attachment .msg{line-height:15px;width:92px}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .no-attachment .msg{line-height:15px;width:92px}}.no-attachment .empty-icon,.no-attachment .empty-icon svg{width:65px;height:83px}.no-attachment .empty-icon *{fill:var(--gray-5);color:var(--gray-5)}.fileAttachmentPanel .section{margin-bottom:10px}.fileAttachmentPanel .section p.title{margin-left:16px}.fileAttachmentPanel .section ul.downloadable>li{cursor:pointer;color:var(--secondary-button-text);width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fileAttachmentPanel .section ul.downloadable .embedSpinner{display:flex;flex-direction:row;justify-content:space-between}.fileAttachmentPanel .section ul.downloadable .embedSpinner .spinner{margin:0}.fileAttachmentPanel .section ul ul{padding-left:10px;list-style-type:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Spinner.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SignaturePanel .spinner{margin:10px;border:5px solid #ddd;border-top-color:#aaa;border-radius:50%;width:40px;height:40px;-webkit-animation:spin 1.2s ease infinite;animation:spin 1.2s ease infinite}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./SignatureIcon.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".signature-icon .badge{color:#fff}.signature-icon .medium{width:18px;height:18px}.signature-icon .small{width:16px;height:16px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./WidgetInfo.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".signature-widget-info{--widget-header-indent:49px;--widget-body-indent:22px;--arrow-width:22px;display:flex;flex-direction:column;font-size:13px;margin-bottom:10px;margin-left:5px}.signature-widget-info p+p{margin:1em 0 0}.signature-widget-info p.result-for-header{margin-top:0}.signature-widget-info p.bold{font-weight:700;margin-bottom:4px}.signature-widget-info p.underline{text-decoration:underline}.signature-widget-info .link{cursor:pointer;outline:none}.signature-widget-info .dropdown{outline:none}.signature-widget-info .dropdown:hover{cursor:pointer;background:var(--outline-hover);--border-radius-amount:4px;-moz-border-radius-topleft:var(--border-radius-amount);-moz-border-radius-topright:var(--border-radius-amount);-moz-border-radius-bottomright:var(--border-radius-amount);-moz-border-radius-bottomleft:var(--border-radius-amount);border-radius:var(--border-radius-amount)}.signature-widget-info .title{font-weight:700;display:flex;align-items:center;min-height:32px;margin-top:-5px;margin-bottom:-5px;overflow:hidden}.signature-widget-info .title div+*{margin-left:2px}.signature-widget-info .title .arrow{transition:transform .1s ease}.signature-widget-info .title .arrow.expanded{transform:rotate(90deg)}.signature-widget-info .title .arrow .Icon{width:var(--arrow-width);height:22px}.signature-widget-info .title .signature-icon{margin-right:5px}.signature-widget-info .header{margin-left:var(--widget-header-indent)}.signature-widget-info .header .body{margin-left:var(--widget-body-indent)}.signature-widget-info .header .body>div:first-child>p:first-child,.signature-widget-info .header .body>p:first-child{margin-top:.5em}.signature-widget-info .header .body>div:last-child{margin-bottom:.5em}.signature-widget-info .header-with-arrow{margin-left:calc(var(--widget-header-indent) - var(--arrow-width))}.signature-widget-info .header-with-arrow .body{margin-left:calc(var(--widget-body-indent) + var(--arrow-width))}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SignaturePanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.SignaturePanel{margin:0 8px 8px;display:flex}.SignaturePanel .center{flex-grow:1;display:flex;justify-content:center;align-items:center}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ResizeBar.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".resize-bar{display:flex;align-items:center;justify-content:center;cursor:col-resize;width:14px;background-color:var(--panel-background);border-right:1px solid var(--border);border-left:1px solid var(--border);z-index:65}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PageControlContainer{display:flex;background-color:var(--gray-2);width:100%;justify-content:center;align-content:center;border-radius:4px}.PageControlContainer .dropdown-menu{position:relative}.PageControlContainer .dropdown-menu .indicator{position:absolute;bottom:1px;right:1px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #c4c4c4;transform:rotateY(0deg) rotate(315deg)}.PageControlContainer button .Icon{height:21px;width:21px;color:var(--icon-color)}.PageControlContainer .button-hover:hover{background:var(--view-header-button-hover);border-radius:4px}.PageControlContainer .divider{height:20px;width:1px;background:var(--divider);margin:6px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LeftPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LeftPanel .Panel{overflow:auto;-webkit-overflow-scrolling:touch;flex:1;flex-direction:column}.LeftPanel{z-index:65;display:flex!important;flex-direction:column;background-color:var(--panel-background);display:flex;flex-direction:row;justify-content:flex-end;overflow:hidden;position:fixed;left:0;transition:transform .3s ease-in-out;max-width:calc(100% - 16px);height:calc(100% - 40px)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel{max-width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel{max-width:100%}}.LeftPanel.logo-bar-enabled{height:calc(100% - 24px)}.LeftPanel.tools-header-open{height:calc(100% - 80px)}.LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 104px)}.LeftPanel.multi-tab-active{height:calc(100% - 120px)}.LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:901px){.App:not(.is-web-component) .LeftPanel{height:calc(100% - 40px)}.App:not(.is-web-component) .LeftPanel.logo-bar-enabled{height:calc(100% - 64px)}.App:not(.is-web-component) .LeftPanel.tools-header-open{height:calc(100% - 74px)}.App:not(.is-web-component) .LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.App:not(.is-web-component) .LeftPanel.multi-tab-active{height:calc(100% - 120px)}.App:not(.is-web-component) .LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@container (min-width: 901px){.LeftPanel{height:calc(100% - 40px)}.LeftPanel.logo-bar-enabled{height:calc(100% - 64px)}.LeftPanel.tools-header-open{height:calc(100% - 74px)}.LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.LeftPanel.multi-tab-active{height:calc(100% - 120px)}.LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel{height:calc(100% - 37px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.logo-bar-enabled{height:calc(100% - 61px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-open{height:calc(100% - 76px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.multi-tab-active{height:calc(100% - 115px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-and-header-hidden{height:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel{height:calc(100% - 37px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.logo-bar-enabled{height:calc(100% - 61px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-open{height:calc(100% - 76px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.multi-tab-active{height:calc(100% - 115px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-and-header-hidden{height:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel{height:calc(100% - 53px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.logo-bar-enabled{height:calc(100% - 77px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel{height:calc(100% - 53px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.logo-bar-enabled{height:calc(100% - 77px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-open{height:calc(100% - 104px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-open{height:calc(100% - 104px)}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}.LeftPanel.closed{transform:translateX(-100%)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel{border-right:1px solid var(--side-panel-border)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel{border-right:1px solid var(--side-panel-border)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}.LeftPanel .left-panel-container{display:flex;flex-direction:column;padding:16px 16px 0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel .left-panel-container{padding-top:0;width:100%;min-width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel .left-panel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:5px;top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel .left-panel-container .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LeftPanel .left-panel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel .left-panel-container{padding-top:0;width:100%;min-width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel .left-panel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:5px;top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel .left-panel-container .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .LeftPanel .left-panel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}.LeftPanel .left-panel-header{display:flex;align-items:center;margin:0 8px 16px 16px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RightPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.right-panel{position:fixed;right:0;transition:transform .3s ease-in-out;height:calc(100% - 40px);max-width:calc(100% - 16px);z-index:65;background-color:var(--panel-background);display:flex;flex-direction:row;overflow:hidden}.right-panel.logo-bar-enabled{height:calc(100% - 24px)}.right-panel.tools-header-open{height:calc(100% - 80px)}.right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 104px)}.right-panel.multi-tab-active{height:calc(100% - 120px)}.right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:901px){.App:not(.is-web-component) .right-panel{height:calc(100% - 40px)}.App:not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 64px)}.App:not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 74px)}.App:not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.App:not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 120px)}.App:not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@container (min-width: 901px){.right-panel{height:calc(100% - 40px)}.right-panel.logo-bar-enabled{height:calc(100% - 64px)}.right-panel.tools-header-open{height:calc(100% - 74px)}.right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.right-panel.multi-tab-active{height:calc(100% - 120px)}.right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{height:calc(100% - 37px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 61px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 76px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 115px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden{height:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{height:calc(100% - 37px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.logo-bar-enabled{height:calc(100% - 61px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open{height:calc(100% - 76px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active{height:calc(100% - 115px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden{height:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{height:calc(100% - 53px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 77px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{height:calc(100% - 53px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.logo-bar-enabled{height:calc(100% - 77px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 104px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open{height:calc(100% - 104px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{max-width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{max-width:100%}}.right-panel.closed{transform:translateX(100%)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{z-index:95}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{z-index:95}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{border-left:1px solid var(--side-panel-border)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{border-left:1px solid var(--side-panel-border)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{position:fixed;top:0;right:0;height:100%;width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{position:fixed;top:0;right:0;height:100%;width:100%}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".FilePickerHandler{display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CopyTextHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".CopyTextHandler{position:fixed;z-index:-1;opacity:0}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PrintHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".PrintHandler{height:0}@page{margin:0}@media print{body,html{height:100%}body{overflow:visible!important}.PrintHandler{display:block;height:100%}.PrintHandler.ios-print{top:0;bottom:0;left:0;right:0;position:absolute}.PrintHandler img{display:block!important;max-width:100%;max-height:100%;height:100%;width:100%;-o-object-fit:contain;object-fit:contain}.PrintHandler .img:not(:last-child){page-break-after:always}.PrintHandler .page__container{box-sizing:border-box;display:flex;flex-direction:column;padding:10px;min-height:100%;min-width:100%;font-size:10px}.PrintHandler .page__container .page__header{align-self:flex-start;font-size:2rem;margin-bottom:2rem;padding-bottom:.6rem;border-bottom:.1rem solid #000}.PrintHandler .page__container .note{display:flex;flex-direction:column;padding:.6rem;border:.1rem solid #d3d3d3;border-radius:.4rem;margin-bottom:.5rem}.PrintHandler .page__container .note .note__info{font-size:1.3rem;margin-bottom:.1rem}.PrintHandler .page__container .note .note__info--with-icon{display:flex}.PrintHandler .page__container .note .note__info--with-icon .note__icon{width:1.65rem;height:1.65rem;margin-top:-.1rem;margin-right:.2rem}.PrintHandler .page__container .note .note__info--with-icon .note__icon path:not([fill=none]){fill:currentColor}.PrintHandler .page__container .note .note__root .note__content{margin-left:.3rem}.PrintHandler .page__container .note .note__reply{margin:.5rem 0 0 2rem}.PrintHandler .page__container .note .note__content{font-size:1.2rem;margin-top:.1rem}.PrintHandler #print-handler{height:100%}#app{overflow:visible!important}.App{display:none!important}#app,body,html{max-width:none!important}iframe{display:none}}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.RedactionPanel{padding:16px 16px 0;display:flex;flex-direction:column}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}.RedactionPanel .marked-redaction-counter{flex:0 1 19px;margin-top:24px;margin-bottom:12px;font-size:16px}.RedactionPanel .marked-redaction-counter span{font-weight:700}.RedactionPanel .no-marked-redactions{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}.RedactionPanel .no-marked-redactions .msg{text-align:center}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel .no-marked-redactions .msg{line-height:15px;width:146px}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel .no-marked-redactions .msg{line-height:15px;width:146px}}.RedactionPanel .no-marked-redactions .empty-icon,.RedactionPanel .no-marked-redactions .empty-icon svg{width:65px;height:83px}.RedactionPanel .no-marked-redactions .empty-icon *{fill:var(--gray-5);color:var(--gray-5)}.RedactionPanel .redaction-panel-controls{flex:0 0 57px;margin-left:-16px;padding-top:13px;border-top:1px solid var(--divider);display:flex;background-color:var(--component-background);width:inherit;justify-content:flex-end;padding-right:16px}.RedactionPanel .redaction-panel-controls .redact-all-marked{padding:0;border:none;background-color:transparent;background-color:var(--primary-button);color:var(--primary-button-text);border-radius:4px;height:32px;width:90px;cursor:pointer}:host(:not([data-tabbing=true])) .RedactionPanel .redaction-panel-controls .redact-all-marked,html:not([data-tabbing=true]) .RedactionPanel .redaction-panel-controls .redact-all-marked{outline:none}.RedactionPanel .redaction-panel-controls .redact-all-marked.disabled{opacity:.5;cursor:not-allowed}.RedactionPanel .redaction-panel-controls .clear-all-marked{color:var(--secondary-button-text);background-color:transparent;border:none;height:32px;width:70px;padding:0 5px 0 0;cursor:pointer}:host(:not([data-tabbing=true])) .RedactionPanel .redaction-panel-controls .clear-all-marked,html:not([data-tabbing=true]) .RedactionPanel .redaction-panel-controls .clear-all-marked{outline:none}.RedactionPanel .redaction-panel-controls .clear-all-marked.disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .RedactionPanel .redaction-panel-controls{left:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .RedactionPanel .redaction-panel-controls{left:0}}.RedactionPanel .redaction-group-container{overflow-y:scroll;flex:1 1 auto}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".redaction-item{display:flex;align-items:center;padding:12px 16px}.redaction-item:hover{background-color:var(--view-header-button-hover);cursor:pointer}.redaction-item-selected{background-color:var(--view-header-button-active)!important}.redaction-item-info{flex:1;padding-left:18px;padding-right:20px}.redaction-item-preview{font-size:13px;color:var(--text-color)}.redaction-item-date-author{font-size:10px;color:var(--faded-text)}.redaction-item-label-text{font-size:10px;margin:2px 0}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./NoteTextPreview.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".note-text-preview{font-size:13px;color:var(--gray-7);padding-right:12px;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important;cursor:text;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:calc(100% - 12px);overflow:hidden}.preview-comment{color:var(--text-color)}.note-text-preview-prompt{cursor:pointer;color:var(--primary-button)}.note-text-preview-prompt:hover{color:var(--primary-button-hover)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CollapsiblePanelGroup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".collapsible-page-group-header{display:flex;justify-content:space-between;align-items:baseline}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionPageGroup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".redaction-items{margin-top:8px;background-color:var(--component-background);border:1px solid var(--border);border-radius:4px}.redaction-items>:first-child{padding-top:16px}.redaction-items>:last-child{padding-bottom:16px}.redaction-page-group{padding-top:12px;padding-bottom:12px}.redaction-page-group-header{display:flex;justify-content:space-between;align-items:baseline}.redaction-page-group-number{font-size:13px;color:var(--faded-text)}.expand-arrow{height:16px;cursor:pointer}.expand-arrow .Icon{width:12px;height:5px}\", \"\"]);\n\n// exports\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionSearchOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.RedactionSearchOverlay input{width:100%;padding:6px}.RedactionSearchOverlay input::-moz-placeholder{color:var(--placeholder-text)}.RedactionSearchOverlay input:-ms-input-placeholder{color:var(--placeholder-text)}.RedactionSearchOverlay input::placeholder{color:var(--placeholder-text)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionSearchResult.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".redaction-search-result{display:flex;align-items:center;padding:12px;background-color:var(--component-background);border-radius:4px;box-shadow:0 0 3px var(--document-box-shadow);margin:8px 0}.redaction-search-result .Icon svg{transform:scale(1.2);padding-top:2px}.redaction-search-result .search-value{word-break:break-all;color:var(--secondary-button-text);font-weight:700}.redaction-search-result.active{background-color:var(--view-header-button-active)!important}.redaction-search-result-info{font-size:13px;color:var(--text-color)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionSearchResultGroup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".redaction-search-results-page-number{display:flex;align-items:center;margin-left:11px}.redaction-search-results-page-number label{font-size:13px;color:var(--faded-text)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RedactionSearchResults.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.redaction-search-counter-controls{display:flex;flex-direction:row;margin-top:49px;font-size:var(--font-size-default);padding:16px;border:1px solid var(--border);background-color:var(--gray-0);border-radius:4px 4px 0 0;max-height:50px;min-height:50px}.redaction-search-counter-controls .redaction-search-results-counter{flex:3 1 auto}.redaction-search-counter-controls .redaction-search-results-counter span{font-weight:700}.redaction-search-counter-controls .spinner{margin:auto;flex:3 1 \\\"25px\\\"}.redaction-search-counter-controls button{padding:0;background-color:transparent;flex:1 1 auto;color:var(--secondary-button-text);border:none;cursor:pointer}:host(:not([data-tabbing=true])) .redaction-search-counter-controls button,html:not([data-tabbing=true]) .redaction-search-counter-controls button{outline:none}.redaction-search-counter-controls button.disabled{opacity:.5;cursor:not-allowed}.redaction-search-results-container{flex:1 1 auto;background-color:var(--gray-2);color:var(--placeholder-text);font-size:13px;border-left:1px solid var(--border);border-right:1px solid var(--border);display:flex;flex-direction:column}.redaction-search-no-results,.redaction-search-results-container.emptyList{justify-content:center;align-items:center}.redaction-search-panel-controls{display:flex;flex-direction:row;flex:0 1 52px;padding:12px;background-color:var(--component-background);border:1px solid var(--border);margin-bottom:16px}.redaction-search-panel-controls button{border:none;background-color:transparent;height:28px;padding:6px 16px;cursor:pointer}:host(:not([data-tabbing=true])) .redaction-search-panel-controls button,html:not([data-tabbing=true]) .redaction-search-panel-controls button{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .redaction-search-panel-controls button{height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .redaction-search-panel-controls button{height:32px}}.redaction-search-panel-controls .cancel{flex:2 1 auto;color:var(--secondary-button-text);border:none;cursor:pointer;margin-right:20px}.redaction-search-panel-controls .redact-all-selected{flex:1 1 auto;border:1px solid var(--secondary-button-text);border-radius:4px;color:var(--secondary-button-text);margin-right:8px}.redaction-search-panel-controls .redact-all-selected.disabled{opacity:.5;cursor:not-allowed}.redaction-search-panel-controls .mark-all-selected{flex:1 1 auto;background-color:var(--primary-button);border:1px solid var(--primary-button);color:var(--primary-button-text);border-radius:4px;cursor:pointer}.redaction-search-panel-controls .mark-all-selected.disabled{opacity:.5;cursor:not-allowed}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TextEditingPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.TextEditingPanel{padding:16px 16px 0;display:flex;flex-direction:column}.TextEditingPanel .text-editing-panel-section{margin-top:8px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-heading{font-size:16px;font-weight:700}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items{margin-top:16px;margin-bottom:16px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .text-editing-panel-menu-items-buttons{display:flex}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown__items{right:auto}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .FontSizeDropdown .Dropdown__items{right:0}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown__items .Dropdown__item{font-size:var(--font-size-default);font-family:var(--font-family)}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown .picked-option .picked-option-text{font-family:var(--font-family)}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .inactive{opacity:.5;pointer-Events:none}.TextEditingPanel .text-editing-panel-section .text-editing-panel-color-palette{display:flex;margin-bottom:16px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-color-palette .ColorPalette{display:flex}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.TextEditingPanel .text-editing-panel-section .opacity-slider{align-items:stretch}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .icon-grid .text-horizontal-alignment{float:none}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .icon-grid .text-horizontal-alignment{float:none}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Wv3dPropertiesPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.wv3d-properties-panel{padding:16px 0 0 16px;display:flex;flex-direction:column;overflow-y:auto;-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.wv3d-properties-panel .no-selections{flex-direction:column;display:flex;align-items:center;justify-content:center}.wv3d-properties-panel .no-selections .empty-icon,.wv3d-properties-panel .no-selections .empty-icon svg{width:100px;height:100px}.wv3d-properties-panel .no-selections .empty-icon *{fill:var(--gray-5);color:var(--gray-5)}.wv3d-properties-panel .no-selections .empty-text{margin-top:4px;padding-left:4px;padding-right:4px;width:68%;text-align:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container .close-icon-container .close-icon{width:24px;height:24px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PropertyKeyValuePair.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".property-pair{margin-left:24px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:center;padding-bottom:10px;-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.property-key{flex-basis:140px}.property-key,.property-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.property-value{flex-basis:300px;padding-left:20px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Group.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".group-title{display:flex;align-items:center;margin-bottom:5px;-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.dropdown.active{visibility:visible}.dropdown.inactive{visibility:hidden;display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./HeaderTitle.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".header-value{color:var(--gray-7)}.header-title{font-size:16px}\", \"\"]);\n\n// exports\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr == '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./AudioPlaybackPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.AudioPlaybackPopupContainer{visibility:visible}.closed.AudioPlaybackPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.AudioPlaybackPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.AudioPlaybackPopupContainer:empty{padding:0}.AudioPlaybackPopupContainer .buttons{display:flex}.AudioPlaybackPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .AudioPlaybackPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .AudioPlaybackPopupContainer .Button{width:42px;height:42px}}.AudioPlaybackPopupContainer .Button:hover{background:var(--popup-button-hover)}.AudioPlaybackPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .AudioPlaybackPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .AudioPlaybackPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button span{white-space:nowrap}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.AudioPlaybackPopup .audio-popup-draggable-header{height:15px}.AudioPlaybackPopup .audio-popup-draggable-header,.AudioPlaybackPopup .audio-popup-ui{display:flex;justify-content:center;align-items:center}.AudioPlaybackPopup span.current-time,.AudioPlaybackPopup span.duration{padding:0 5px}.AudioPlaybackPopupContainer{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);width:325px;top:90%;left:calc(50% - 150px)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Selector.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".customSelector{position:relative}.customSelector .customSelector__selectedItem{height:2rem;width:8.5rem;position:relative;background-color:transparent;border:1px solid;border-color:var(--border);padding:0 4px 0 8px;color:var(--text-color);font-family:Lato;font-style:normal;font-weight:400;font-size:.8rem;text-align:left;border-radius:.3rem;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.customSelector ul{margin:0;list-style-type:none;position:absolute;width:10rem;left:0;top:0;text-align:left;letter-spacing:0;display:none;border-radius:4px;pointer-events:all;z-index:1000;background-color:var(--component-background);box-shadow:0 0 3px 0 var(--document-box-shadow);padding-left:0}.customSelector li{display:block;height:2rem;position:relative;font-family:Lato;font-style:normal;font-weight:400;font-size:.8rem;padding-left:.5rem}.customSelector li :hover{cursor:pointer}.customSelector li:first-child{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 4px 0 8px}.customSelector li:not(:first-child) .options:hover{background-color:var(--blue-1)}.customSelector li .optionSelected{color:var(--blue-5)}.customSelector li .options{border:none;background-color:transparent;padding-right:.65rem;padding-left:.5rem;width:calc(100% + .5rem);text-align:left;display:flex;align-items:center;justify-content:space-between;height:100%;margin-left:-.5rem;z-index:1}.customSelector .customSelector__selectedItem:focus+ul{display:block;pointer-events:all;transform:translateY(0)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PageNumberInput.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".page-number-input{padding:6px;width:108px}.page-number-input::-moz-placeholder{color:var(--gray-6)}.page-number-input:-ms-input-placeholder{color:var(--gray-6)}.page-number-input::placeholder{color:var(--gray-6)}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.DocumentCropPopupContainer{visibility:visible}.closed.DocumentCropPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DocumentCropPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.DocumentCropPopupContainer:empty{padding:0}.DocumentCropPopupContainer .buttons{display:flex}.DocumentCropPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .Button{width:42px;height:42px}}.DocumentCropPopupContainer .Button:hover{background:var(--popup-button-hover)}.DocumentCropPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button span{white-space:nowrap}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.DocumentCropPopup{width:250px}.DocumentCropPopup .document-crop-section{padding:16px;display:flex;flex-direction:column}.DocumentCropPopup .document-crop-section .ui__choice{margin:0}.DocumentCropPopup .document-crop-section .ui__choice:not(:last-of-type){padding-bottom:12px}.DocumentCropPopup .document-crop-page-input-container{margin-top:12px;margin-left:23px;height:32px;display:flex}.DocumentCropPopup .document-crop-page-input-container Button{margin-top:0}.DocumentCropPopup .page-number-input{width:100%}.DocumentCropPopup .page-number-error{color:var(--color-message-error);margin-top:4px;margin-left:23px}.DocumentCropPopup .menu-title{padding-bottom:16px;font-weight:700}.DocumentCropPopup .crop-inactive{color:var(--gray-6)}.DocumentCropPopup .collapsible-menu{width:100%;display:flex;cursor:pointer;position:relative;align-items:center;flex-direction:row;justify-content:space-between}.DocumentCropPopup .collapsible-menu .menu-title{padding-bottom:0}.DocumentCropPopup .collapsible-menu .Icon{height:18px;width:18px}.DocumentCropPopup .menu-items{padding:6px 4px}.DocumentCropPopup .Icon{height:18px;width:18px}.DocumentCropPopup .divider{border-top:1px solid var(--divider);width:100%}.DocumentCropPopup .buttons{padding:12px;text-align:right;font-size:13px;display:flex;justify-content:space-between}.DocumentCropPopup .save-button{background-color:transparent;color:var(--primary-button-text);padding:6px 16px;background:var(--primary-button);border-radius:4px;border:0;height:32px;cursor:pointer}.DocumentCropPopup .save-button:disabled{opacity:.5;cursor:auto}.DocumentCropPopup .cancel-button{cursor:pointer;background:none;border:0;color:var(--secondary-button-text);padding:6px 16px;margin-right:4px;height:32px}.DocumentCropPopup .cancel-button:hover{color:var(--secondary-button-hover)}.DocumentCropPopup .cancel-button:focus{outline:none}.DocumentCropPopup .cancel-button:disabled{opacity:.5;cursor:auto;color:var(--secondary-button-text)}.crop-dimensions{display:flex;flex-wrap:wrap;align-items:center}.crop-dimensions .crop-dimensions-input-container{display:flex;flex-wrap:wrap;grid-column-gap:12px;-moz-column-gap:12px;column-gap:12px;padding-top:16px;grid-row-gap:8px;row-gap:8px}.crop-dimensions .crop-dimensions-input{display:flex;align-items:center;flex:1 1 100px}.crop-dimensions .crop-dimensions-input .dimensions-settings-title{width:18px;height:18px}.crop-dimensions .crop-dimensions-input .input-field-container{display:flex;align-items:center;border:1px solid var(--border);background:var(--component-background);color:var(--text-color);border-radius:4px;width:100%;max-width:80px;min-width:64px;height:28px;padding:1px 2px;margin:0 4px}.crop-dimensions .crop-dimensions-input .input-field-container ::-moz-placeholder{color:var(--text-color)}.crop-dimensions .crop-dimensions-input .input-field-container :-ms-input-placeholder{color:var(--text-color)}.crop-dimensions .crop-dimensions-input .input-field-container ::placeholder{color:var(--text-color)}.crop-dimensions .crop-dimensions-input .dimension-input-field{border-left:0;border-right:0;border-radius:0;padding:0;margin-right:0;text-align:right;margin-left:4px;min-width:12px}.crop-dimensions .crop-dimensions-input .dimension-input-unit{color:var(--text-color)}.crop-dimensions .crop-dimensions-input .Icon{margin:4px}.crop-dimensions .crop-dimensions-input input{border:0}.crop-dimensions .crop-dimensions-input input::-webkit-inner-spin-button,.crop-dimensions .crop-dimensions-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.crop-dimensions .crop-dimensions-input input[type=number]{-moz-appearance:textfield}.crop-dimensions .crop-dimensions-settings{padding-top:16px;width:100%;display:flex;align-items:center}.crop-dimensions .crop-dimensions-settings .dimensions-settings-title-container{display:flex}.crop-dimensions .crop-dimensions-settings .dimensions-settings-title{margin-right:4px;font-weight:600}.custom-select{flex-grow:2;max-width:100%;margin:4px}.custom-select .customSelector{margin-left:0;height:28px;width:100%!important}.custom-select .customSelector .customSelector__selectedItem,.custom-select .customSelector ul{width:100%}.custom-select .customSelector .customSelector__arrow{height:18px;width:18px}.custom-select select{height:28px;width:100%}.DocumentCropPopupContainer{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);top:0;z-index:100}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container{display:flex;align-items:center}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .customSelector{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .arrow{flex:0 1 auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown__items{top:-52px;z-index:100;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .wrapper{z-index:99}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .save-button{margin-left:6px;min-width:75px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .cancel-button{padding:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .cancel-button .Icon{width:24px;height:24px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-selector{width:100%;display:flex}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:0;margin-left:6px;display:flex}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container Button{height:32px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .page-number-input{width:100%;min-width:150px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .page-number-error{color:var(--color-message-error);margin-top:4px;margin-left:auto}}@media(max-width:640px)and (max-width:430px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-selector{display:block}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:12px;margin-left:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container{display:flex;align-items:center}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .customSelector{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .arrow{flex:0 1 auto}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown__items{top:-52px;z-index:100;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .wrapper{z-index:99}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .save-button{margin-left:6px;min-width:75px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .cancel-button{padding:0}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .cancel-button .Icon{width:24px;height:24px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-selector{width:100%;display:flex}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:0;margin-left:6px;display:flex}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container Button{height:32px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .page-number-input{width:100%;min-width:150px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .page-number-error{color:var(--color-message-error);margin-top:4px;margin-left:auto}@media(max-width:430px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-selector{display:block}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:12px;margin-left:0}}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.SnippingPopupContainer{visibility:visible}.closed.SnippingPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.SnippingPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.SnippingPopupContainer:empty{padding:0}.SnippingPopupContainer .buttons{display:flex}.SnippingPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .Button{width:42px;height:42px}}.SnippingPopupContainer .Button:hover{background:var(--popup-button-hover)}.SnippingPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.SnippingPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.SnippingPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.SnippingPopupContainer .Button.main-menu-button span{white-space:nowrap}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.SnippingToolPopup{width:250px}.SnippingToolPopup .snipping-section{padding:16px;display:flex;flex-direction:column}.SnippingToolPopup .snipping-section .ui__choice{margin:0}.SnippingToolPopup .snipping-section .ui__choice:not(:last-of-type){padding-bottom:12px}.SnippingToolPopup .menu-title{padding-bottom:16px;font-weight:700}.SnippingToolPopup .crop-inactive{color:var(--gray-6)}.SnippingToolPopup .Icon{height:18px;width:18px}.SnippingToolPopup .divider{border-top:1px solid var(--divider);width:100%}.SnippingToolPopup .buttons{padding:12px;text-align:right;font-size:13px;display:flex;justify-content:space-between}.SnippingToolPopup .save-button{color:var(--primary-button-text);padding:6px 16px;background:var(--primary-button);border-radius:4px;border:0;height:32px;cursor:pointer}.SnippingToolPopup .save-button:disabled{opacity:.5;cursor:auto}.SnippingToolPopup .cancel-button{cursor:pointer;background:none;border:0;color:var(--secondary-button-text);padding:6px 16px;margin-right:4px;height:32px}.SnippingToolPopup .cancel-button:hover{color:var(--secondary-button-hover)}.SnippingToolPopup .cancel-button:focus{outline:none}.SnippingToolPopup .cancel-button:disabled{opacity:.5;cursor:auto;color:var(--secondary-button-text)}.custom-select{flex-grow:2;max-width:100%;margin:4px}.custom-select .customSelector{margin-left:0;height:28px;width:100%!important}.custom-select .customSelector .customSelector__selectedItem,.custom-select .customSelector ul{width:100%}.custom-select .customSelector .customSelector__arrow{height:18px;width:18px}.custom-select select{height:28px;width:100%}.SnippingPopupContainer{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);top:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .SnippingToolPopup{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container{display:flex;align-items:center}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .customSelector{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown .arrow{flex:0 1 auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown__items{top:-52px;z-index:80;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .wrapper{z-index:79}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .save-button{margin-left:6px;min-width:75px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .cancel-button{padding:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .cancel-button .Icon{width:24px;height:24px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-selector{width:100%;display:flex}}@media(max-width:640px)and (max-width:430px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-selector{display:block}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .SnippingToolPopup{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container{display:flex;align-items:center}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .customSelector{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown .arrow{flex:0 1 auto}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown__items{top:-52px;z-index:80;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .wrapper{z-index:79}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .save-button{margin-left:6px;min-width:75px}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .cancel-button{padding:0}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .cancel-button .Icon{width:24px;height:24px}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-selector{width:100%;display:flex}@media(max-width:430px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-selector{display:block}}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@-webkit-keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@media print{#form-field-indicator-wrapper{opacity:0}}#form-field-indicator-wrapper{position:relative;z-index:60}.formFieldIndicator{background-color:var(--color-blue-gray-5);color:var(--color-gray-1);width:98px;min-height:32px;font-size:13px;position:fixed;padding:4px 0;display:flex;justify-content:center;align-items:center;font-family:Lato,sans-serif}.formFieldIndicator .formFieldIndicator-text{margin:0;position:absolute;padding:0 8px}.formFieldIndicator:before{right:-20px;border-left:20px solid var(--color-blue-gray-5)}.formFieldIndicator.rightSidePage:before,.formFieldIndicator:before{content:\\\"\\\";display:block;position:absolute;bottom:0;width:0;height:0;border-top:20px solid transparent;border-bottom:20px solid transparent}.formFieldIndicator.rightSidePage:before{left:-20px;border-right:20px solid var(--color-blue-gray-5);border-left:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FilePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.file-picker-component{width:100%;height:100%;position:relative;border-radius:4px}.file-picker-component .file-picker-container{position:relative;border:1px dashed var(--modal-stroke-and-border);display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%}.file-picker-component .file-picker-container.dragging{background:var(--file-picker-drop-background);border:1px dashed var(--file-picker-drop-border)}.file-picker-component .file-picker-container .file-picker-body{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;color:var(--faded-text)}.file-picker-component .file-picker-container .file-picker-body .label-separator{margin:10px}.file-picker-component .file-picker-container .file-picker-body .modal-btn-file{border-radius:4px;border:1px solid var(--primary-button);color:var(--primary-button);padding:2px 20px 4px;cursor:pointer}.file-picker-component .file-picker-container .file-picker-body .Icon{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;margin-bottom:15px}.file-picker-component .file-picker-container .file-picker-body .Icon svg{height:45px}.file-picker-component .file-picker-container .file-picker-body .file-picker-separator{margin:10px}.file-picker-component .file-picker-container .file-picker-error{position:absolute;color:red;bottom:0;right:0;margin:0 5px 5px 0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./MultiTabEmptyPage.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MultiTabEmptyPage{width:100%}.MultiTabEmptyPage.closed{display:none}.MultiTabEmptyPage .empty-page-body,.MultiTabEmptyPage .image-signature{height:100%;width:100%}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./MultiViewer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.MultiViewer{display:flex;flex-direction:row;align-items:center;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%}.MultiViewer.hidden{display:none}.MultiViewer .resize-bar{height:100%}.MultiViewer .CompareContainer{height:100%;border:2px solid var(--document-background-color);box-sizing:border-box}.MultiViewer .CompareContainer.active{border:2px solid var(--blue-5)}.MultiViewer .CompareContainer .borderLineBottom{visibility:hidden;height:2px;background-color:var(--blue-5);position:absolute;bottom:0;z-index:41}.MultiViewer .CompareContainer .borderLineBottom.active{visibility:visible}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DropArea.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DropArea{grid-gap:10px;gap:10px;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:10;top:0;bottom:0;left:0;right:0;width:100%;height:100%;background-color:var(--document-background-color);border:4px dashed #e1e1e3;box-sizing:border-box}.DropArea .Icon{color:var(--gray-7);height:65px;width:65px}.DropArea .hidden{display:none}.DropArea button{width:105px;height:32px;border-radius:4px;top:1px;right:1px;bottom:1px;left:1px;color:var(--blue-5);background-color:var(--document-background-color);border:1px solid var(--blue-5);pointer-events:auto}.DropArea button:hover{background-color:var(--tools-button-hover)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DocumentHeader{width:100%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:4px 0}.DocumentHeader.hidden{visibility:hidden}.DocumentHeader .Button{width:28px;height:28px}.DocumentHeader .Button:hover{background-color:var(--popup-button-hover)}.DocumentHeader .Button.active{background-color:var(--view-header-button-active)}.DocumentHeader .Button.active .Icon{color:var(--view-header-icon-active-fill)}.DocumentHeader .file-name{font-family:var(--font-family);font-size:var(--font-size-medium)}.DocumentHeader .control-buttons{display:flex;grid-gap:8px;gap:8px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentContainer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.MultiViewer .DocumentContainer{display:flex;flex-direction:column;align-items:center;width:calc(100% - 4px);height:calc(100% - 32px);overflow:overlay;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.MultiViewer .DocumentContainer{margin-left:0!important;width:100%!important}}.MultiViewer .DocumentContainer .document{overflow-x:visible;overflow-y:visible;margin:auto;outline:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.MultiViewer .DocumentContainer .document.hidden{display:none}.MultiViewer .DocumentContainer .document .pageSection[id*=pageSectionb]{box-shadow:none}.MultiViewer .DocumentContainer .document .pageSection .pageContainer{background-color:#fff;position:relative;box-shadow:0 0 2px 0 rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.12),0 1px 3px 0 rgba(0,0,0,.12)}.MultiViewer .DocumentContainer .document .pageSection .pageContainer span.link{cursor:pointer}.MultiViewer .DocumentContainer .document textarea.freetext{position:absolute;z-index:20;border:0;padding:0;box-sizing:border-box;resize:none;outline:1px solid transparent}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OverlayItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.OverlayItem{border:none;background-color:transparent;margin:2px 0;display:flex;align-items:center;height:24px;padding:0 0 0 10px;cursor:pointer;width:100%}:host(:not([data-tabbing=true])) .OverlayItem,html:not([data-tabbing=true]) .OverlayItem{outline:none}.OverlayItem.selected,.OverlayItem:hover{background:var(--popup-button-hover)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ZoomItem{border:none;background-color:transparent;display:flex;flex-direction:row;align-items:center;padding:2px 19px 2px 6px;cursor:pointer;width:100%}:host(:not([data-tabbing=true])) .ZoomItem,html:not([data-tabbing=true]) .ZoomItem{outline:none}.ZoomItem.selected,.ZoomItem:hover{background:var(--popup-button-hover)}.ZoomItem .Icon{margin:4px 8px 4px 4px}.ZoomItem Button{height:auto}.ZoomItem.Button{justify-content:flex-start}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ComparisonButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ComparisonButton{display:flex;align-items:center;font-size:var(--font-size-medium)}.ComparisonButton button{border:none;background-color:transparent;background:var(--primary-button);border-radius:4px;display:flex;align-items:center;padding:8px 16px;justify-content:center;position:relative;color:var(--primary-button-text);cursor:pointer}:host(:not([data-tabbing=true])) .ComparisonButton button,html:not([data-tabbing=true]) .ComparisonButton button{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ComparisonButton button{font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ComparisonButton button{font-size:13px}}.ComparisonButton button:hover{background:var(--primary-button-hover)}.ComparisonButton button:hover:disabled{background:var(--primary-button)}.ComparisonButton button:disabled{opacity:.8;cursor:not-allowed}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ComparePanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ComparePanel{padding:0;height:100%}.ComparePanel .input-container{margin:16px;display:flex;position:relative;box-sizing:border-box;border:1px solid var(--border);border-radius:4px;height:28px;align-items:center;justify-content:flex-end;color:var(--text-color);padding:6px 2px 6px 6px;background:var(--gray-0)}.ComparePanel .input-container input{width:100%;padding:6px 26px 6px 6px;height:20px;border:none;background:transparent}.ComparePanel .changeListContainer{height:calc(100% - 28px)}.ComparePanel .changeListContainer .changeListTitle{padding:8px 16px 2px;font-size:var(--font-size-medium);font-family:var(--font-family);font-weight:var(--font-weight-bold);color:var(--gray-8)}.ComparePanel .changeListContainer .changeListTitle span{color:var(--gray-7)}.ComparePanel .changeListContainer .changeList{padding:16px;height:calc(100% - 43px);overflow-y:auto;display:flex;flex-direction:column;grid-gap:8px;gap:8px}.ComparePanel .changeListContainer .changeList .page-number{margin-top:10px;font-size:var(--font-size-default);font-family:var(--font-family);color:var(--gray-7)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../../node_modules/sass-loader/dist/cjs.js!./ChangeListItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ChangeListItem{display:flex;flex-direction:row;border-radius:4px;align-self:stretch;filter:drop-shadow(0 0 4px var(--gray-7));background-color:var(--component-background);font-family:var(--font-family)}.ChangeListItem .icon-change{padding:14px 0 14px 14px;height:100%}.ChangeListItem .icon-change .Icon{width:24px;height:24px}.ChangeListItem .container-right{padding:12px;width:calc(100% - 38px);display:flex;flex-direction:column;word-wrap:break-word}.ChangeListItem .container-right .title{font-size:var(--font-size-medium)}.ChangeListItem .container-right .type{font-size:var(--font-size-small);color:var(--gray-7);text-transform:capitalize}.ChangeListItem .container-right .value-container{padding:12px;margin-top:10px;width:100%;display:flex;flex-direction:column;border-radius:4px;align-self:stretch;color:var(--gray-8);font-size:var(--font-size-medium);font-weight:var(--font-weight-medium)}.ChangeListItem .container-right .value-container.old{background-color:rgba(255,73,73,.1)}.ChangeListItem .container-right .value-container.old .value-title{color:#cf0101}.ChangeListItem .container-right .value-container.new{background-color:rgba(21,205,131,.1)}.ChangeListItem .container-right .value-container.new .value-title{color:#006d41}.ChangeListItem .container-right .value-container .value-title{display:flex;justify-content:space-between;font-size:var(--font-size-small);font-weight:var(--font-weight-bold)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./WatermarkPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.WatermarkPanel{padding:16px 16px 0;display:flex;flex-direction:column}.WatermarkPanel .watermark-panel-header{font-style:normal;font-weight:700;font-size:16px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}.WatermarkPanel .watermark-panel-tabs{margin-top:12px;display:flex;align-items:center}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab{font-style:normal;font-weight:400;font-size:13px;border:1px solid #d0d4d9;width:50%;text-align:center;padding:7px 0;cursor:pointer}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab.active{background-color:var(--blue-2)}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab:last-child{border-left:none;border-top-right-radius:10px;border-bottom-right-radius:10px}.WatermarkPanel .watermark-panel-sub-header{font-style:normal;font-weight:700;font-size:13px;margin-top:16px}.WatermarkPanel .add-watermark-button{font-style:normal;font-weight:400;font-size:13px;color:var(--blue-5);border:1px solid var(--blue-5);border-radius:4px;background:#fff;width:75px;margin-top:12px;padding:8px 16px;cursor:pointer}.WatermarkPanel .hidden{display:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Panel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.flx-Panel{z-index:65;background-color:var(--panel-background);display:flex;position:fixed;overflow:hidden;transition:transform .3s ease-in-out;max-width:calc(100% - 16px);height:calc(100% - 40px)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel{max-width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel{max-width:100%}}.flx-Panel.logo-bar-enabled{height:calc(100% - 24px)}.flx-Panel.tools-header-open{height:calc(100% - 80px)}.flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 104px)}.flx-Panel.multi-tab-active{height:calc(100% - 120px)}.flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:901px){.App:not(.is-web-component) .flx-Panel{height:calc(100% - 40px)}.App:not(.is-web-component) .flx-Panel.logo-bar-enabled{height:calc(100% - 64px)}.App:not(.is-web-component) .flx-Panel.tools-header-open{height:calc(100% - 74px)}.App:not(.is-web-component) .flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.App:not(.is-web-component) .flx-Panel.multi-tab-active{height:calc(100% - 120px)}.App:not(.is-web-component) .flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@container (min-width: 901px){.flx-Panel{height:calc(100% - 40px)}.flx-Panel.logo-bar-enabled{height:calc(100% - 64px)}.flx-Panel.tools-header-open{height:calc(100% - 74px)}.flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.flx-Panel.multi-tab-active{height:calc(100% - 120px)}.flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel{height:calc(100% - 37px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.logo-bar-enabled{height:calc(100% - 61px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-open{height:calc(100% - 76px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.multi-tab-active{height:calc(100% - 115px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-and-header-hidden{height:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel{height:calc(100% - 37px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.logo-bar-enabled{height:calc(100% - 61px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-open{height:calc(100% - 76px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.multi-tab-active{height:calc(100% - 115px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-and-header-hidden{height:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel{height:calc(100% - 53px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.logo-bar-enabled{height:calc(100% - 77px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel{height:calc(100% - 53px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.logo-bar-enabled{height:calc(100% - 77px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-open{height:calc(100% - 104px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-open{height:calc(100% - 104px)}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel{border-right:1px solid var(--side-panel-border)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel{border-right:1px solid var(--side-panel-border)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}.flx-Panel .flx-Panel-container{display:flex;flex-direction:column;padding:16px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel .flx-Panel-container{padding-top:0;width:100%;min-width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel .flx-Panel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:5px;top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel .flx-Panel-container .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .flx-Panel .flx-Panel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel .flx-Panel-container{padding-top:0;width:100%;min-width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel .flx-Panel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:5px;top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel .flx-Panel-container .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .flx-Panel .flx-Panel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}.flx-Panel.right{right:0;border-left:1px solid var(--side-panel-border)}.flx-Panel.left{left:0;border-right:1px solid var(--side-panel-border)}.flx-Panel.right.closed{transform:translateX(100%);left:auto}.flx-Panel.left.closed{transform:translateX(-100%)}.flx-Panel .documentControlsContainer,.flx-Panel .ThumbnailsPanel{margin:0 16px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ModularHeaderItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ModularHeaderItems{display:flex;width:100%;height:100%;position:relative}.ModularHeaderItems.closed{padding:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./CustomButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.CustomButton{padding:5px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.CustomButton:hover{background-color:var(--view-header-button-hover)}.confirm-button{background-color:var(--primary-button);border:1px solid var(--primary-button);color:var(--primary-button-text);padding:7px 14px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}.confirm-button:hover{background:var(--primary-button-hover)!important;border:1px solid var(--primary-button-hover)!important;border-radius:5px!important}.cancel-button{color:var(--secondary-button-text);background-color:transparent;padding:7px 14px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}.cancel-button:hover{color:var(--secondary-button-hover);background:transparent}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./StatefulButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.StatefulButton{padding:5px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;background-color:var(--gray-4)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./GroupedItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".GroupedItems{display:flex}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Divider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Divider{background:var(--gray-5)}.Divider.row{width:1px;height:auto;margin:4px 0}.Divider.column{width:auto;height:1px;margin:0 4px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RibbonItem{padding:0;border:none;background-color:transparent;cursor:pointer;color:var(--faded-text);white-space:nowrap;height:auto}.RibbonItem .Button{width:100%;padding:8px;grid-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;color:var(--faded-text)}.RibbonItem .Button:hover{background-color:var(--blue-1)}.RibbonItem .Button.active{background-color:transparent}.RibbonItem .Button.active,.RibbonItem .Button.active .Icon{color:var(--ribbon-active-color)}.RibbonItem:not(.vertical) .Button.active{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:2px solid var(--ribbon-active-color)}.RibbonItem.vertical{white-space:wrap}.RibbonItem.vertical .Button{flex-direction:column;height:100%}.RibbonItem.vertical .Button.active{border-bottom-left-radius:0;border-top-left-radius:0;border-left:2px solid var(--ribbon-active-color)}.RibbonItem.vertical:not(.left) .Button.active{border-bottom-right-radius:0;border-top-right-radius:0;border-left:none;border-right:2px solid var(--ribbon-active-color)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./FlexDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FlexDropdown__wrapper{position:relative}.FlexDropdown .Dropdown__items{z-index:72}.FlexDropdown .Dropdown__item-object{display:flex;align-items:center;grid-gap:4px;gap:4px}.FlexDropdown.column{height:auto;padding:0}.FlexDropdown.column .picked-option{flex-direction:column;grid-gap:4px;gap:4px;padding:4px}.FlexDropdown.column .Dropdown__items{z-index:72;width:100%;padding:0;grid-gap:12px;gap:12px}.FlexDropdown.column .Dropdown__item{min-height:28px;height:100%;padding:4px}.FlexDropdown.column .Dropdown__item-object{display:flex;flex-direction:column;max-width:100%;flex:1}.FlexDropdown .Dropdown__item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ToggleElementButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToggleElementButton .Button{width:32px;height:32px}.ToggleElementButton .Button:hover{background:var(--popup-button-hover)}.ToggleElementButton .Button.active{background:var(--popup-button-active);cursor:default}.ToggleElementButton .Button.active,.ToggleElementButton .Button.active .Icon{color:var(--view-header-icon-active-fill)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonGroup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RibbonGroupContainer{max-width:100%;padding:auto 8px;position:relative}.RibbonGroup{display:flex;align-items:stretch}.RibbonGroup.hidden{visibility:hidden}.RibbonGroup__moreButton.hidden{display:none}.RibbonGroup__moreButton .ToggleElementButton .Button{padding:0 2px}.RibbonGroup__moreButton .ToggleElementButton .Button:hover{background-color:var(--blue-1)}.RibbonGroup__moreButton .ToggleElementButton .Button.active{background-color:var(--blue-2)!important}.RibbonGroup__moreButton .ToggleElementButton .Button.active .Icon{color:var(--blue-6)!important}.RibbonGroup__moreButton .ToggleElementButton .Button .Icon{color:var(--faded-text)!important}.RibbonGroup__moreButton .active{background-color:transparent!important}.RibbonGroup__dropdown.hidden{display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ToolGroupButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ToolGroupButton{padding:0;white-space:nowrap;height:auto}.ToolGroupButton .Button{width:100%;padding:8px;grid-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;color:var(--faded-text);cursor:pointer}.ToolGroupButton .Button:hover{background:var(--popup-button-hover)}.ToolGroupButton .Button.active{background:var(--popup-button-active);cursor:default}.ToolGroupButton .Button.active,.ToolGroupButton .Button.active .Icon{color:var(--view-header-icon-active-fill)}.ToolGroupButton.isFlyoutItem{display:flex}.ToolGroupButton.isFlyoutItem .Icon{display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ZoomContainerWrapper{display:flex;align-items:center;justify-content:center;background-color:var(--toggle-zoom-overlay-background);border-radius:4px;height:28px;min-width:28px;margin:2px}.ZoomContainerWrapper .ZoomContainer{display:flex;align-items:center;justify-content:flex-end;min-width:68px;cursor:pointer}.ZoomContainerWrapper .ZoomContainer:hover{background-color:var(--view-header-button-hover)}.ZoomContainerWrapper .ZoomContainer.active{background-color:var(--view-header-button-active)}.ZoomContainerWrapper .ZoomContainer .ToggleElementButton{width:32px;height:32px}.ZoomContainerWrapper .ZoomContainer .ToggleElementButton .Icon{color:var(--view-header-icon-active-fill);width:12px;height:12px}.ZoomContainerWrapper .ZoomContainer .ZoomText{border-radius:4px;align-items:center}.ZoomContainerWrapper .ZoomContainer .ZoomText input{resize:none;border:none;background-color:transparent;font-weight:700;min-width:28px;text-align:right}.ZoomContainerWrapper .Button.active,.ZoomContainerWrapper .Button.zoomButton,.ZoomContainerWrapper .Button:hover{background:none!important}.Flyout .ZoomFlyoutMenu{overflow-y:auto;z-index:200;background-color:var(--component-background);width:170px;font-size:var(--font-size-default);font-family:var(--font-family);border:1px solid var(--divider);border-radius:4px;text-transform:capitalize;text-overflow:ellipsis;padding:6px 0}.Flyout .ZoomFlyoutMenu .flyout-item-container{border:none;background-color:transparent;margin:2px 0;display:flex;align-items:center;height:24px;padding:0 0 0 10px;cursor:pointer;width:100%}.Flyout .ZoomFlyoutMenu .flyout-item-container .menu-container{display:flex;flex-direction:row;width:100%;align-items:center;padding:2px 19px 2px 6px}.Flyout .ZoomFlyoutMenu .flyout-item-container .Icon{width:20px;height:20px}.Flyout .ZoomFlyoutMenu .divider{width:90%;margin:8px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./GroupedTools.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".GroupedTools{height:100%;width:100%}.GroupedTools .ResponsiveContainer{max-width:100%;padding:auto 8px;position:relative}.GroupedTools .ResponsiveContainerContent{display:flex;align-items:stretch}.GroupedTools .ResponsiveContainerContent.hidden{visibility:hidden}.GroupedTools .ResponsiveContainer__moreButton.hidden{display:none}.GroupedTools .ResponsiveContainer__moreButton .ToggleElementButton .Button{padding:0 2px}.GroupedTools .ResponsiveContainer__moreButton .ToggleElementButton .Button:hover{background-color:var(--blue-1)}.GroupedTools .ResponsiveContainer__moreButton .ToggleElementButton .Button.active{background-color:var(--blue-2)!important}.GroupedTools .ResponsiveContainer__moreButton .ToggleElementButton .Button.active .Icon{color:var(--blue-6)!important}.GroupedTools .ResponsiveContainer__moreButton .ToggleElementButton .Button .Icon{color:var(--faded-text)!important}.GroupedTools .ResponsiveContainer__moreButton .active{background-color:transparent!important}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ToolButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToolButton{width:32px;height:32px}.ToolButton:hover{background:var(--tools-overlay-button-hover)}.ToolButton.active{background:var(--tools-button-active)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ModularHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ModularHeader{box-sizing:border-box;display:flex;flex-direction:column;align-items:baseline;min-height:32px;padding:8px 12px;background:var(--gray-0);z-index:72;touch-action:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FloatingHeaderContainer{transition:all .3s ease-in-out;position:absolute;width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:baseline;min-height:36px;padding:24px;z-index:72;pointer-events:none}.FloatingHeaderContainer.bottom{position:relative}.FloatingHeaderContainer.left{width:41px;padding:24px 0 24px 24px}.FloatingHeaderContainer.right{width:41px;align-items:end}.FloatingHeaderContainer.vertical{flex-direction:column}.FloatingHeaderContainer .FloatSection{display:flex;flex:1}.FloatingHeaderContainer .FloatSection.vertical{flex-direction:column}.FloatingHeaderContainer .FloatSection.center__bottom,.FloatingHeaderContainer .FloatSection.center__left,.FloatingHeaderContainer .FloatSection.center__right,.FloatingHeaderContainer .FloatSection.center__top{justify-content:center}.FloatingHeaderContainer .FloatSection.end__bottom,.FloatingHeaderContainer .FloatSection.end__left,.FloatingHeaderContainer .FloatSection.end__right,.FloatingHeaderContainer .FloatSection.end__top{justify-content:flex-end}.FloatingHeader{border-radius:4px;pointer-events:auto;transition:opacity .2s ease;padding:8px 12px;background:var(--gray-0)}.FloatingHeader.opacity-full{opacity:1}.FloatingHeader.opacity-low{opacity:.5}.FloatingHeader.opacity-low.isVisible{opacity:1}.FloatingHeader.opacity-none{opacity:0}.FloatingHeader.opacity-mode-dynamic:hover,.FloatingHeader.opacity-none.isVisible{opacity:1}.FloatingHeader.stroke{border:1px solid var(--gray-5)}.FloatingHeader.VerticalHeader{padding:12px 8px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./LeftHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LeftHeader{transition:transform .3s ease-in-out;height:100%;width:41px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;padding:12px 8px}.LeftHeader.closed{transform:translateX(-100%)!important;position:fixed;left:0}.LeftHeader.stroke{border-right:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RightHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.RightHeader{height:100%;width:41px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;transition:transform .3s ease-in-out;z-index:63;padding:12px 8px}.RightHeader.closed{transform:translateX(100%)}.RightHeader.stroke{border-left:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./BottomHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".bottom-headers-wrapper{position:absolute;left:0;right:0;bottom:0;pointer-events:none}.BottomHeader{display:inline-block;width:100%;transition:transform .3s ease-in-out;pointer-events:auto}.BottomHeader.closed{transform:translateY(100%)}.BottomHeader.stroke{border-top:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./TopHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TopHeader{width:100%;transition:min-height .3s ease-in-out}.TopHeader.start{background:var(--gray-0)}.TopHeader.end{background:var(--gray-1)}.TopHeader.closed{padding:0;min-height:0}.TopHeader.stroke{border-bottom:1px solid var(--gray-5)}.TopHeader:first-child{z-index:73}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./GenericOutlinesPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.GenericOutlinesPanel{display:flex;flex-direction:column;flex:1}.GenericOutlinesPanel .bookmark-outline-single-container{margin-top:6px;margin-bottom:6px}.GenericOutlinesPanel .bookmark-outline-row{padding-top:6px}.GenericOutlinesPanel .msg-no-bookmark-outline{margin-top:6px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Flyout.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Flyout{z-index:90;position:absolute;display:flex;background:var(--gray-0);border-radius:4px}.Flyout .FlyoutContainer{overflow-y:auto;overflow-x:hidden;z-index:200;background-color:var(--component-background);min-width:224px;max-width:328px;font-size:var(--font-size-default);font-family:var(--font-family);border:1px solid var(--divider);border-radius:4px;text-transform:capitalize;text-overflow:ellipsis}.Flyout .FlyoutContainer .divider{width:100%;height:1px;background-color:var(--divider)}.Flyout .FlyoutContainer .flyout-item-container{height:40px;display:flex;flex-direction:row;align-items:center;width:100%;cursor:pointer}.Flyout .FlyoutContainer .flyout-item-container .Icon,.Flyout .FlyoutContainer .flyout-item-container .menu-icon{width:24px;height:24px;margin-right:8px}.Flyout .FlyoutContainer .flyout-item-container .icon-open-submenu{justify-self:flex-end;width:16px;height:16px;margin-right:8px;padding-top:2px;display:flex}.Flyout .FlyoutContainer .flyout-item-container .Icon svg path,.Flyout .FlyoutContainer .flyout-item-container .menu-icon{justify-self:flex-start;fill:var(--icon-color)}.Flyout .FlyoutContainer .flyout-item-container .menu-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;height:100%;padding:4px 8px;grid-gap:10px;gap:10px}.Flyout .FlyoutContainer .flyout-item-container .menu-container .icon-label-wrapper{display:flex;align-items:center}.Flyout .FlyoutContainer .flyout-item-container .flyout-item-label{justify-self:flex-start;font-size:var(--font-size-default);color:var(--gray-8)}.Flyout .FlyoutContainer .flyout-item-container:hover{background-color:var(--blue-1)}.Flyout .FlyoutContainer .flyout-item-container.active,.Flyout .FlyoutContainer .flyout-item-container:active{background-color:var(--blue-2)}.Flyout .FlyoutContainer .flyout-item-container.active .Icon svg path,.Flyout .FlyoutContainer .flyout-item-container:active .Icon svg path{fill:var(--blue-6)}.Flyout .FlyoutContainer .flyout-item-container.active .flyout-item-label,.Flyout .FlyoutContainer .flyout-item-container:active .flyout-item-label{color:var(--blue-6)}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem{padding:0}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem:hover{background:transparent}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem .Icon{margin-left:0}.Flyout .FlyoutContainer .flyout-item-container .hotkey-wrapper{color:var(--gray-7);margin-left:8px;margin-right:2px}.Flyout .back-button-container{display:flex;align-items:center;grid-gap:8px;gap:8px;padding:8px;border-bottom:1px solid var(--divider);cursor:pointer}.Flyout .back-button-container .Icon{width:16px;height:16px}.Flyout .back-button-container:hover{background-color:var(--blue-2)}.Flyout .back-button-container:active{background-color:var(--blue-3)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomText.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ZoomText{display:flex}.ZoomText .label{font-size:var(--font-size-default)}.ZoomText .value{color:var(--gray-7)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonOverflowFlyout.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Flyout .RibbonOverflowFlyout .RibbonItem{width:100%}.Flyout .RibbonOverflowFlyout .RibbonItem .Button{justify-content:left}.Flyout .RibbonOverflowFlyout .RibbonItem .Button:hover{background-color:transparent}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./GroupedToolsOverflowFlyout.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Flyout .GroupedToolsOverflowFlyout .RibbonItem{width:100%}.Flyout .GroupedToolsOverflowFlyout .RibbonItem .Button{justify-content:left}.Flyout .GroupedToolsOverflowFlyout .RibbonItem .Button:hover{background-color:transparent}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ProgressModal.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ProgressModal{visibility:visible}.closed.ProgressModal{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ProgressModal{position:fixed;left:0;bottom:0;z-index:100;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:var(--modal-negative-space)}.ProgressModal .modal-container .wrapper .modal-content{padding:10px}.ProgressModal .footer{display:flex;flex-direction:row;justify-content:flex-end;width:100%;margin-top:13px}.ProgressModal .footer.modal-footer{padding:16px;margin:0;border-top:1px solid var(--divider)}.ProgressModal .footer .modal-button{display:flex;justify-content:center;align-items:center;padding:6px 18px;margin:8px 0 0;width:auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-radius:4px;height:30px;cursor:pointer}.ProgressModal .footer .modal-button.cancel{color:var(--secondary-button-text);border:1px solid var(--secondary-button-text)}.ProgressModal .footer .modal-button.cancel:hover{background-color:var(--document-background-color);color:var(--secondary-button-hover);border:1px solid var(--secondary-button-hover)}.ProgressModal .footer .modal-button.confirm{margin-left:4px;color:var(--primary-button-text);font-weight:600;background:var(--primary-button)}.ProgressModal .footer .modal-button.confirm:hover{background:var(--primary-button-hover)}.ProgressModal .footer .modal-button.confirm.disabled{background:var(--primary-button)!important;opacity:.5}.ProgressModal .footer .modal-button.secondary-btn-custom{border-radius:4px;border:1px solid var(--primary-button);color:var(--primary-button);padding:2px 20px 4px;cursor:pointer;background-color:#fff}.ProgressModal .footer .modal-button.secondary-btn-custom:hover{color:var(--secondary-button-hover)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ProgressModal .footer .modal-button{padding:23px 8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ProgressModal .footer .modal-button{padding:23px 8px}}.ProgressModal .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ProgressModal .swipe-indicator{display:none}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .ProgressModal .swipe-indicator{display:none}}.ProgressModal{background:var(--spinner-negative-space)}.ProgressModal.open{opacity:1;transition:opacity 1s 2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:999}.ProgressModal.closed{opacity:0}.ProgressModal .progress-ring__circle,.ProgressModal .progress-ring__fill{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.ProgressModal svg circle{fill:transparent;stroke-width:4}.ProgressModal svg circle.progress-ring__fill{stroke:var(--slider-background)}.ProgressModal svg circle.progress-ring__circle{stroke:var(--slider-filled)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var map = {\n\t\"./af.js\": [\n\t\t1255,\n\t\t63\n\t],\n\t\"./am.js\": [\n\t\t1256,\n\t\t64\n\t],\n\t\"./ar-dz.js\": [\n\t\t1257,\n\t\t65\n\t],\n\t\"./ar-iq.js\": [\n\t\t1258,\n\t\t66\n\t],\n\t\"./ar-kw.js\": [\n\t\t1259,\n\t\t67\n\t],\n\t\"./ar-ly.js\": [\n\t\t1260,\n\t\t68\n\t],\n\t\"./ar-ma.js\": [\n\t\t1261,\n\t\t69\n\t],\n\t\"./ar-sa.js\": [\n\t\t1262,\n\t\t70\n\t],\n\t\"./ar-tn.js\": [\n\t\t1263,\n\t\t71\n\t],\n\t\"./ar.js\": [\n\t\t1264,\n\t\t72\n\t],\n\t\"./az.js\": [\n\t\t1265,\n\t\t73\n\t],\n\t\"./be.js\": [\n\t\t1266,\n\t\t74\n\t],\n\t\"./bg.js\": [\n\t\t1267,\n\t\t75\n\t],\n\t\"./bi.js\": [\n\t\t1268,\n\t\t76\n\t],\n\t\"./bm.js\": [\n\t\t1269,\n\t\t77\n\t],\n\t\"./bn-bd.js\": [\n\t\t1270,\n\t\t78\n\t],\n\t\"./bn.js\": [\n\t\t1271,\n\t\t79\n\t],\n\t\"./bo.js\": [\n\t\t1272,\n\t\t80\n\t],\n\t\"./br.js\": [\n\t\t1273,\n\t\t81\n\t],\n\t\"./bs.js\": [\n\t\t1274,\n\t\t82\n\t],\n\t\"./ca.js\": [\n\t\t1275,\n\t\t83\n\t],\n\t\"./cs.js\": [\n\t\t1276,\n\t\t84\n\t],\n\t\"./cv.js\": [\n\t\t1277,\n\t\t85\n\t],\n\t\"./cy.js\": [\n\t\t1278,\n\t\t86\n\t],\n\t\"./da.js\": [\n\t\t1279,\n\t\t87\n\t],\n\t\"./de-at.js\": [\n\t\t1280,\n\t\t88\n\t],\n\t\"./de-ch.js\": [\n\t\t1281,\n\t\t89\n\t],\n\t\"./de.js\": [\n\t\t1282,\n\t\t90\n\t],\n\t\"./dv.js\": [\n\t\t1283,\n\t\t91\n\t],\n\t\"./el.js\": [\n\t\t1284,\n\t\t92\n\t],\n\t\"./en-au.js\": [\n\t\t1285,\n\t\t93\n\t],\n\t\"./en-ca.js\": [\n\t\t1286,\n\t\t94\n\t],\n\t\"./en-gb.js\": [\n\t\t1287,\n\t\t95\n\t],\n\t\"./en-ie.js\": [\n\t\t1288,\n\t\t96\n\t],\n\t\"./en-il.js\": [\n\t\t1289,\n\t\t97\n\t],\n\t\"./en-in.js\": [\n\t\t1290,\n\t\t98\n\t],\n\t\"./en-nz.js\": [\n\t\t1291,\n\t\t99\n\t],\n\t\"./en-sg.js\": [\n\t\t1292,\n\t\t100\n\t],\n\t\"./en-tt.js\": [\n\t\t1293,\n\t\t101\n\t],\n\t\"./en.js\": [\n\t\t1294,\n\t\t102\n\t],\n\t\"./eo.js\": [\n\t\t1295,\n\t\t103\n\t],\n\t\"./es-do.js\": [\n\t\t1296,\n\t\t104\n\t],\n\t\"./es-mx.js\": [\n\t\t1297,\n\t\t105\n\t],\n\t\"./es-pr.js\": [\n\t\t1298,\n\t\t106\n\t],\n\t\"./es-us.js\": [\n\t\t1299,\n\t\t107\n\t],\n\t\"./es.js\": [\n\t\t1300,\n\t\t108\n\t],\n\t\"./et.js\": [\n\t\t1301,\n\t\t109\n\t],\n\t\"./eu.js\": [\n\t\t1302,\n\t\t110\n\t],\n\t\"./fa.js\": [\n\t\t1303,\n\t\t111\n\t],\n\t\"./fi.js\": [\n\t\t1304,\n\t\t112\n\t],\n\t\"./fo.js\": [\n\t\t1305,\n\t\t113\n\t],\n\t\"./fr-ca.js\": [\n\t\t1306,\n\t\t114\n\t],\n\t\"./fr-ch.js\": [\n\t\t1307,\n\t\t115\n\t],\n\t\"./fr.js\": [\n\t\t1308,\n\t\t116\n\t],\n\t\"./fy.js\": [\n\t\t1309,\n\t\t117\n\t],\n\t\"./ga.js\": [\n\t\t1310,\n\t\t118\n\t],\n\t\"./gd.js\": [\n\t\t1311,\n\t\t119\n\t],\n\t\"./gl.js\": [\n\t\t1312,\n\t\t120\n\t],\n\t\"./gom-latn.js\": [\n\t\t1313,\n\t\t121\n\t],\n\t\"./gu.js\": [\n\t\t1314,\n\t\t122\n\t],\n\t\"./he.js\": [\n\t\t1315,\n\t\t123\n\t],\n\t\"./hi.js\": [\n\t\t1316,\n\t\t124\n\t],\n\t\"./hr.js\": [\n\t\t1317,\n\t\t125\n\t],\n\t\"./ht.js\": [\n\t\t1318,\n\t\t126\n\t],\n\t\"./hu.js\": [\n\t\t1319,\n\t\t127\n\t],\n\t\"./hy-am.js\": [\n\t\t1320,\n\t\t128\n\t],\n\t\"./id.js\": [\n\t\t1321,\n\t\t129\n\t],\n\t\"./is.js\": [\n\t\t1322,\n\t\t130\n\t],\n\t\"./it-ch.js\": [\n\t\t1323,\n\t\t131\n\t],\n\t\"./it.js\": [\n\t\t1324,\n\t\t132\n\t],\n\t\"./ja.js\": [\n\t\t1325,\n\t\t133\n\t],\n\t\"./jv.js\": [\n\t\t1326,\n\t\t134\n\t],\n\t\"./ka.js\": [\n\t\t1327,\n\t\t135\n\t],\n\t\"./kk.js\": [\n\t\t1328,\n\t\t136\n\t],\n\t\"./km.js\": [\n\t\t1329,\n\t\t137\n\t],\n\t\"./kn.js\": [\n\t\t1330,\n\t\t138\n\t],\n\t\"./ko.js\": [\n\t\t1331,\n\t\t139\n\t],\n\t\"./ku.js\": [\n\t\t1332,\n\t\t140\n\t],\n\t\"./ky.js\": [\n\t\t1333,\n\t\t141\n\t],\n\t\"./lb.js\": [\n\t\t1334,\n\t\t142\n\t],\n\t\"./lo.js\": [\n\t\t1335,\n\t\t143\n\t],\n\t\"./lt.js\": [\n\t\t1336,\n\t\t144\n\t],\n\t\"./lv.js\": [\n\t\t1337,\n\t\t145\n\t],\n\t\"./me.js\": [\n\t\t1338,\n\t\t146\n\t],\n\t\"./mi.js\": [\n\t\t1339,\n\t\t147\n\t],\n\t\"./mk.js\": [\n\t\t1340,\n\t\t148\n\t],\n\t\"./ml.js\": [\n\t\t1341,\n\t\t149\n\t],\n\t\"./mn.js\": [\n\t\t1342,\n\t\t150\n\t],\n\t\"./mr.js\": [\n\t\t1343,\n\t\t151\n\t],\n\t\"./ms-my.js\": [\n\t\t1344,\n\t\t152\n\t],\n\t\"./ms.js\": [\n\t\t1345,\n\t\t153\n\t],\n\t\"./mt.js\": [\n\t\t1346,\n\t\t154\n\t],\n\t\"./my.js\": [\n\t\t1347,\n\t\t155\n\t],\n\t\"./nb.js\": [\n\t\t1348,\n\t\t156\n\t],\n\t\"./ne.js\": [\n\t\t1349,\n\t\t157\n\t],\n\t\"./nl-be.js\": [\n\t\t1350,\n\t\t158\n\t],\n\t\"./nl.js\": [\n\t\t1351,\n\t\t159\n\t],\n\t\"./nn.js\": [\n\t\t1352,\n\t\t160\n\t],\n\t\"./oc-lnc.js\": [\n\t\t1353,\n\t\t161\n\t],\n\t\"./pa-in.js\": [\n\t\t1354,\n\t\t162\n\t],\n\t\"./pl.js\": [\n\t\t1355,\n\t\t163\n\t],\n\t\"./pt-br.js\": [\n\t\t1356,\n\t\t164\n\t],\n\t\"./pt.js\": [\n\t\t1357,\n\t\t165\n\t],\n\t\"./rn.js\": [\n\t\t1358,\n\t\t166\n\t],\n\t\"./ro.js\": [\n\t\t1359,\n\t\t167\n\t],\n\t\"./ru.js\": [\n\t\t1360,\n\t\t168\n\t],\n\t\"./rw.js\": [\n\t\t1361,\n\t\t169\n\t],\n\t\"./sd.js\": [\n\t\t1362,\n\t\t170\n\t],\n\t\"./se.js\": [\n\t\t1363,\n\t\t171\n\t],\n\t\"./si.js\": [\n\t\t1364,\n\t\t172\n\t],\n\t\"./sk.js\": [\n\t\t1365,\n\t\t173\n\t],\n\t\"./sl.js\": [\n\t\t1366,\n\t\t174\n\t],\n\t\"./sq.js\": [\n\t\t1367,\n\t\t175\n\t],\n\t\"./sr-cyrl.js\": [\n\t\t1368,\n\t\t176\n\t],\n\t\"./sr.js\": [\n\t\t1369,\n\t\t177\n\t],\n\t\"./ss.js\": [\n\t\t1370,\n\t\t178\n\t],\n\t\"./sv-fi.js\": [\n\t\t1371,\n\t\t179\n\t],\n\t\"./sv.js\": [\n\t\t1372,\n\t\t180\n\t],\n\t\"./sw.js\": [\n\t\t1373,\n\t\t181\n\t],\n\t\"./ta.js\": [\n\t\t1374,\n\t\t182\n\t],\n\t\"./te.js\": [\n\t\t1375,\n\t\t183\n\t],\n\t\"./tet.js\": [\n\t\t1376,\n\t\t184\n\t],\n\t\"./tg.js\": [\n\t\t1377,\n\t\t185\n\t],\n\t\"./th.js\": [\n\t\t1378,\n\t\t186\n\t],\n\t\"./tk.js\": [\n\t\t1379,\n\t\t187\n\t],\n\t\"./tl-ph.js\": [\n\t\t1380,\n\t\t188\n\t],\n\t\"./tlh.js\": [\n\t\t1381,\n\t\t189\n\t],\n\t\"./tr.js\": [\n\t\t1382,\n\t\t190\n\t],\n\t\"./tzl.js\": [\n\t\t1383,\n\t\t191\n\t],\n\t\"./tzm-latn.js\": [\n\t\t1384,\n\t\t192\n\t],\n\t\"./tzm.js\": [\n\t\t1385,\n\t\t193\n\t],\n\t\"./ug-cn.js\": [\n\t\t1386,\n\t\t194\n\t],\n\t\"./uk.js\": [\n\t\t1387,\n\t\t195\n\t],\n\t\"./ur.js\": [\n\t\t1388,\n\t\t196\n\t],\n\t\"./uz-latn.js\": [\n\t\t1389,\n\t\t197\n\t],\n\t\"./uz.js\": [\n\t\t1390,\n\t\t198\n\t],\n\t\"./vi.js\": [\n\t\t1391,\n\t\t199\n\t],\n\t\"./x-pseudo.js\": [\n\t\t1392,\n\t\t200\n\t],\n\t\"./yo.js\": [\n\t\t1393,\n\t\t201\n\t],\n\t\"./zh-cn.js\": [\n\t\t1394,\n\t\t202\n\t],\n\t\"./zh-hk.js\": [\n\t\t1395,\n\t\t203\n\t],\n\t\"./zh-tw.js\": [\n\t\t1396,\n\t\t204\n\t],\n\t\"./zh.js\": [\n\t\t1397,\n\t\t205\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1209;\nmodule.exports = webpackAsyncContext;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./App.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var escape = require(\"../../../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@font-face{font-family:Lato;src:url(\" + escape(require(\"../../../assets/fonts/Lato-Regular.woff\")) + \") format(\\\"woff\\\");font-style:normal;font-weight:400}@font-face{font-family:Lato;src:url(\" + escape(require(\"../../../assets/fonts/Lato-Italic.woff\")) + \") format(\\\"woff\\\");font-style:italic;font-weight:400}@font-face{font-family:Lato;src:url(\" + escape(require(\"../../../assets/fonts/Lato-Bold.woff\")) + \") format(\\\"woff\\\");font-style:normal;font-weight:700}@font-face{font-family:Lato;src:url(\" + escape(require(\"../../../assets/fonts/Lato-BoldItalic.woff\")) + \") format(\\\"woff\\\");font-weight:700;font-style:italic}@font-face{font-family:GreatVibes-Regular;src:url(\" + escape(require(\"../../../assets/fonts/GreatVibes-Regular.woff2\")) + \") format(\\\"woff2\\\"),url(\" + escape(require(\"../../../assets/fonts/GreatVibes-Regular.woff\")) + \") format(\\\"woff\\\");font-weight:400;font-style:normal}@font-face{font-family:Satisfy;src:url(\" + escape(require(\"../../../assets/fonts/Satisfy.woff\")) + \") format(\\\"woff\\\");font-weight:400;font-style:normal}@font-face{font-family:Nothing-You-Could-Do;src:url(\" + escape(require(\"../../../assets/fonts/Nothing-You-Could-Do.woff\")) + \") format(\\\"woff\\\");font-weight:400;font-style:normal}@font-face{font-family:La-Belle-Aurore;src:url(\" + escape(require(\"../../../assets/fonts/La-Belle-Aurore.woff\")) + \") format(\\\"woff\\\");font-weight:400;font-style:normal}@font-face{font-family:Whisper;src:url(\" + escape(require(\"../../../assets/fonts/Whisper.woff\")) + \") format(\\\"woff\\\");font-weight:400;font-style:normal}:root{--blue-1:#e7edf3;--blue-2:#dde6ee;--blue-3:#cfd8e0;--blue-4:#c7d2dd;--blue-5:#3183c8;--blue-6:#1a4971;--gray-0:#fff;--gray-1:#f8f9fa;--gray-2:#f1f3f5;--gray-3:#e7ebee;--gray-4:#dee2e6;--gray-5:#cfd4da;--gray-6:#adb5bd;--gray-7:#868e96;--gray-8:#485056;--gray-9:#343a40;--gray-10:#21242a;--gray-11:#101214;--gray-12:#000;--yellow-1:rgba(250,206,0,0.50196);--red:red;--component-background:var(--gray-0);--mobile-presets-background:var(--gray-1);--faded-component-background:var(--gray-2);--toggle-zoom-overlay-background:var(--gray-2);--ribbons-background:var(--gray-3);--document-background-color:var(--gray-2);--error-text-color:var(--red);--error-border-color:var(--red);--slider-filled:var(--blue-5);--slider-background:var(--gray-4);--badge-fill:var(--gray-8);--badge-text-color:var(--gray-0);--view-header-icon-active-fill:var(--blue-6);--text-color:var(--gray-8);--faded-text:var(--gray-7);--placeholder-text:var(--gray-6);--ribbon-active-color:var(--blue-5);--no-presets-text:var(--gray-6);--disabled-text:var(--gray-5);--disabled-icon:var(--gray-5);--scroll-chevron-color:var(--gray-6);--icon-color:var(--gray-7);--selected-icon-color:var(--gray-8);--view-header-button-hover:var(--blue-1);--view-header-button-active:var(--blue-2);--popup-button-hover:var(--blue-1);--popup-button-active:var(--blue-2);--primary-button:var(--blue-5);--primary-button-text:var(--gray-1);--primary-button-hover:var(--blue-6);--secondary-button-text:var(--blue-5);--secondary-button-hover:var(--blue-6);--box-shadow:var(--gray-6);--document-box-shadow:var(--gray-7);--panel-background:var(--gray-1);--divider:var(--gray-5);--reply-divider:var(--gray-3);--side-panel-border:var(--divider);--border:var(--gray-5);--focus-border:var(--blue-5);--color-palette-border:var(--gray-8);--image-signature-drop-background:var(--blue-1);--image-signature-drop-border:var(--blue-5);--file-picker-drop-background:var(--blue-1);--file-picker-drop-border:var(--blue-5);--signature-draw-background:var(--gray-2);--modal-stroke-and-border:var(--gray-5);--modal-negative-space:rgba(0,0,0,0.3);--spinner-negative-space:rgba(0,0,0,0.3);--white-color-palette-border:var(--border);--list-separator-color:var(--gray-7);--scrollbar-color:var(--gray-6);--note-box-shadow:var(--gray-7);--note-box-shadow-expanded:rgba(134,142,150,0.24);--tools-header-background:var(--gray-3);--view-header-background:var(--gray-1);--tools-overlay-background:var(--gray-0);--tools-button-hover:var(--blue-3);--tools-button-active:var(--blue-4);--tools-overlay-button-hover:var(--blue-1);--tools-overlay-button-active:var(--blue-2);--outline-color:var(--blue-5);--outline-hover:var(--gray-2);--outline-selected:var(--blue-1);--preset-background:var(--gray-1);--scale-overlay-item-hover:var(--blue-4)}*{transition:background-color .25s ease}::-webkit-scrollbar{width:7px}::-webkit-scrollbar:horizontal{height:7px}::-webkit-scrollbar-track{width:10px;border-radius:10px;background:none}::-webkit-scrollbar-thumb{border-radius:10px;background-color:#adb5bd;background-color:var(--scrollbar-color);border-top:2px solid transparent}.DocumentContainer{border-right:3px solid transparent}#app,body,html{width:100%;max-width:100%;height:100%;margin:0;padding:0;overflow:hidden;visibility:visible!important}#app,#note-state-popup-portal,body,button,form,html,input,label,select,textarea{font-family:Lato,sans-serif;color:#485056;color:var(--text-color)}#app,button,form,input,label,select,textarea{font-size:13px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) #app,.App:not(.is-in-desktop-only-mode):not(.is-web-component) button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) form,.App:not(.is-in-desktop-only-mode):not(.is-web-component) input,.App:not(.is-in-desktop-only-mode):not(.is-web-component) label,.App:not(.is-in-desktop-only-mode):not(.is-web-component) select,.App:not(.is-in-desktop-only-mode):not(.is-web-component) textarea{font-size:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) #app,.App.is-web-component:not(.is-in-desktop-only-mode) button,.App.is-web-component:not(.is-in-desktop-only-mode) form,.App.is-web-component:not(.is-in-desktop-only-mode) input,.App.is-web-component:not(.is-in-desktop-only-mode) label,.App.is-web-component:not(.is-in-desktop-only-mode) select,.App.is-web-component:not(.is-in-desktop-only-mode) textarea{font-size:16px}}input,select,textarea{border:1px solid #cfd4da;border:1px solid var(--border);border-radius:4px;background:#fff;background:var(--component-background);color:#485056;color:var(--text-color)}input:focus,select:focus,textarea:focus{outline:none;border:1px solid #3183c8;border:1px solid var(--focus-border)}.App{display:flex;flex-direction:column;position:static;width:100%;height:100%;margin:0;padding:0;background-color:#f1f3f5;background-color:var(--document-background-color);-webkit-font-smoothing:antialiased}.App>.content{display:flex;flex-direction:row;flex:1;overflow:auto}.App *,.App :after,.App :before{box-sizing:border-box}.App div{-webkit-tap-highlight-color:rgba(0,0,0,0)}.App canvas,.App div{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.App canvas.ql-clipboard,.App div.ql-clipboard{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.App input[type=text],.App textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.App input[type=text]{font-family:Lato}.freetext-editor .ql-editor{padding:0}.ql-editor>p{margin:0;padding:0}.ql-clipboard{width:0;height:1px}.visually-hidden{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","module.exports = function escape(url) {\n    if (typeof url !== 'string') {\n        return url\n    }\n    // If url is already wrapped in quotes, remove them\n    if (/^['\"].*['\"]$/.test(url)) {\n        url = url.slice(1, -1);\n    }\n    // Should url be wrapped?\n    // See https://drafts.csswg.org/css-values-3/#urls\n    if (/[\"'() \\t\\n]/.test(url)) {\n        return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n    }\n\n    return url\n}\n","module.exports = \"./assets/fonts/Lato-Regular.woff\";","module.exports = \"./assets/fonts/Lato-Italic.woff\";","module.exports = \"./assets/fonts/Lato-Bold.woff\";","module.exports = \"./assets/fonts/Lato-BoldItalic.woff\";","module.exports = \"./assets/fonts/GreatVibes-Regular.woff2\";","module.exports = \"./assets/fonts/GreatVibes-Regular.woff\";","module.exports = \"./assets/fonts/Satisfy.woff\";","module.exports = \"./assets/fonts/Nothing-You-Could-Do.woff\";","module.exports = \"./assets/fonts/La-Belle-Aurore.woff\";","module.exports = \"./assets/fonts/Whisper.woff\";","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./MultiViewerWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _sourceMap = _interopRequireDefault(require(\"source-map\"));\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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 MapGenerator = /*#__PURE__*/function () {\n  function MapGenerator(stringify, root, opts) {\n    this.stringify = stringify;\n    this.mapOpts = opts.map || {};\n    this.root = root;\n    this.opts = opts;\n  }\n\n  var _proto = MapGenerator.prototype;\n\n  _proto.isMap = function isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map;\n    }\n\n    return this.previous().length > 0;\n  };\n\n  _proto.previous = function previous() {\n    var _this = this;\n\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      this.root.walk(function (node) {\n        if (node.source && node.source.input.map) {\n          var map = node.source.input.map;\n\n          if (_this.previousMaps.indexOf(map) === -1) {\n            _this.previousMaps.push(map);\n          }\n        }\n      });\n    }\n\n    return this.previousMaps;\n  };\n\n  _proto.isInline = function isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline;\n    }\n\n    var annotation = this.mapOpts.annotation;\n\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.inline;\n      });\n    }\n\n    return true;\n  };\n\n  _proto.isSourcesContent = function isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.withContent();\n      });\n    }\n\n    return true;\n  };\n\n  _proto.clearAnnotation = function clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    var node;\n\n    for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n      node = this.root.nodes[i];\n      if (node.type !== 'comment') continue;\n\n      if (node.text.indexOf('# sourceMappingURL=') === 0) {\n        this.root.removeChild(i);\n      }\n    }\n  };\n\n  _proto.setSourcesContent = function setSourcesContent() {\n    var _this2 = this;\n\n    var already = {};\n    this.root.walk(function (node) {\n      if (node.source) {\n        var from = node.source.input.from;\n\n        if (from && !already[from]) {\n          already[from] = true;\n\n          var relative = _this2.relative(from);\n\n          _this2.map.setSourceContent(relative, node.source.input.css);\n        }\n      }\n    });\n  };\n\n  _proto.applyPrevMaps = function applyPrevMaps() {\n    for (var _iterator = _createForOfIteratorHelperLoose(this.previous()), _step; !(_step = _iterator()).done;) {\n      var prev = _step.value;\n      var from = this.relative(prev.file);\n\n      var root = prev.root || _path.default.dirname(prev.file);\n\n      var map = void 0;\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new _sourceMap.default.SourceMapConsumer(prev.text);\n\n        if (map.sourcesContent) {\n          map.sourcesContent = map.sourcesContent.map(function () {\n            return null;\n          });\n        }\n      } else {\n        map = prev.consumer();\n      }\n\n      this.map.applySourceMap(map, from, this.relative(root));\n    }\n  };\n\n  _proto.isAnnotation = function isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.annotation;\n      });\n    }\n\n    return true;\n  };\n\n  _proto.toBase64 = function toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64');\n    }\n\n    return window.btoa(unescape(encodeURIComponent(str)));\n  };\n\n  _proto.addAnnotation = function addAnnotation() {\n    var content;\n\n    if (this.isInline()) {\n      content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation;\n    } else {\n      content = this.outputFile() + '.map';\n    }\n\n    var eol = '\\n';\n    if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n  };\n\n  _proto.outputFile = function outputFile() {\n    if (this.opts.to) {\n      return this.relative(this.opts.to);\n    }\n\n    if (this.opts.from) {\n      return this.relative(this.opts.from);\n    }\n\n    return 'to.css';\n  };\n\n  _proto.generateMap = function generateMap() {\n    this.generateString();\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n\n    if (this.isInline()) {\n      return [this.css];\n    }\n\n    return [this.css, this.map];\n  };\n\n  _proto.relative = function relative(file) {\n    if (file.indexOf('<') === 0) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    var from = this.opts.to ? _path.default.dirname(this.opts.to) : '.';\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = _path.default.dirname(_path.default.resolve(from, this.mapOpts.annotation));\n    }\n\n    file = _path.default.relative(from, file);\n\n    if (_path.default.sep === '\\\\') {\n      return file.replace(/\\\\/g, '/');\n    }\n\n    return file;\n  };\n\n  _proto.sourcePath = function sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.mapOpts.from;\n    }\n\n    return this.relative(node.source.input.from);\n  };\n\n  _proto.generateString = function generateString() {\n    var _this3 = this;\n\n    this.css = '';\n    this.map = new _sourceMap.default.SourceMapGenerator({\n      file: this.outputFile()\n    });\n    var line = 1;\n    var column = 1;\n    var lines, last;\n    this.stringify(this.root, function (str, node, type) {\n      _this3.css += str;\n\n      if (node && type !== 'end') {\n        if (node.source && node.source.start) {\n          _this3.map.addMapping({\n            source: _this3.sourcePath(node),\n            generated: {\n              line: line,\n              column: column - 1\n            },\n            original: {\n              line: node.source.start.line,\n              column: node.source.start.column - 1\n            }\n          });\n        } else {\n          _this3.map.addMapping({\n            source: '<no source>',\n            original: {\n              line: 1,\n              column: 0\n            },\n            generated: {\n              line: line,\n              column: column - 1\n            }\n          });\n        }\n      }\n\n      lines = str.match(/\\n/g);\n\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf('\\n');\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n\n      if (node && type !== 'start') {\n        var p = node.parent || {\n          raws: {}\n        };\n\n        if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            _this3.map.addMapping({\n              source: _this3.sourcePath(node),\n              generated: {\n                line: line,\n                column: column - 2\n              },\n              original: {\n                line: node.source.end.line,\n                column: node.source.end.column - 1\n              }\n            });\n          } else {\n            _this3.map.addMapping({\n              source: '<no source>',\n              original: {\n                line: 1,\n                column: 0\n              },\n              generated: {\n                line: line,\n                column: column - 1\n              }\n            });\n          }\n        }\n      }\n    });\n  };\n\n  _proto.generate = function generate() {\n    this.clearAnnotation();\n\n    if (this.isMap()) {\n      return this.generateMap();\n    }\n\n    var result = '';\n    this.stringify(this.root, function (i) {\n      result += i;\n    });\n    return [result];\n  };\n\n  return MapGenerator;\n}();\n\nvar _default = MapGenerator;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwidG9TdHJpbmciLCJ3aW5kb3ciLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhZGRBbm5vdGF0aW9uIiwiY29udGVudCIsIm91dHB1dEZpbGUiLCJlb2wiLCJ0byIsImdlbmVyYXRlTWFwIiwiZ2VuZXJhdGVTdHJpbmciLCJ0ZXN0IiwicmVzb2x2ZSIsInNlcCIsInJlcGxhY2UiLCJzb3VyY2VQYXRoIiwiU291cmNlTWFwR2VuZXJhdG9yIiwibGluZSIsImNvbHVtbiIsImxpbmVzIiwibGFzdCIsInN0YXJ0IiwiYWRkTWFwcGluZyIsImdlbmVyYXRlZCIsIm9yaWdpbmFsIiwibWF0Y2giLCJsYXN0SW5kZXhPZiIsInAiLCJwYXJlbnQiLCJyYXdzIiwic2VtaWNv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YUFBcEI7QUFLRDtBQUNGO0FBQ0Y7QUFDRixLQXBERDtBQXFERCxHOztTQUVEYyxRLEdBQUEsb0JBQVk7QUFDVixTQUFLekQsZUFBTDs7QUFFQSxRQUFJLEtBQUtsQixLQUFMLEVBQUosRUFBa0I7QUFDaEIsYUFBTyxLQUFLb0QsV0FBTCxFQUFQO0FBQ0Q7O0FBRUQsUUFBSXdCLE1BQU0sR0FBRyxFQUFiO0FBQ0EsU0FBS2pGLFNBQUwsQ0FBZSxLQUFLQyxJQUFwQixFQUEwQixVQUFBa0IsQ0FBQyxFQUFJO0FBQzdCOEQsTUFBQUEsTUFBTSxJQUFJOUQsQ0FBVjtBQUNELEtBRkQ7QUFHQSxXQUFPLENBQUM4RCxNQUFELENBQVA7QUFDRCxHOzs7OztlQUdZbEYsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuXG5jbGFzcyBNYXBHZW5lcmF0b3Ige1xuICBjb25zdHJ1Y3RvciAoc3RyaW5naWZ5LCByb290LCBvcHRzKSB7XG4gICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcbiAgICB0aGlzLm1hcE9wdHMgPSBvcHRzLm1hcCB8fCB7IH1cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgdGhpcy5vcHRzID0gb3B0c1xuICB9XG5cbiAgaXNNYXAgKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAhIXRoaXMub3B0cy5tYXBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwXG4gIH1cblxuICBwcmV2aW91cyAoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZpb3VzTWFwcykge1xuICAgICAgdGhpcy5wcmV2aW91c01hcHMgPSBbXVxuICAgICAgdGhpcy5yb290LndhbGsobm9kZSA9PiB7XG4gICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5pbnB1dC5tYXApIHtcbiAgICAgICAgICBsZXQgbWFwID0gbm9kZS5zb3VyY2UuaW5wdXQubWFwXG4gICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNNYXBzLmluZGV4T2YobWFwKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNNYXBzLnB1c2gobWFwKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcmV2aW91c01hcHNcbiAgfVxuXG4gIGlzSW5saW5lICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5pbmxpbmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmlubGluZVxuICAgIH1cblxuICAgIGxldCBhbm5vdGF0aW9uID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb25cbiAgICBpZiAodHlwZW9mIGFubm90YXRpb24gIT09ICd1bmRlZmluZWQnICYmIGFubm90YXRpb24gIT09IHRydWUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXZpb3VzKCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmV2aW91cygpLnNvbWUoaSA9PiBpLmlubGluZSlcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlzU291cmNlc0NvbnRlbnQgKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudFxuICAgIH1cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS53aXRoQ29udGVudCgpKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY2xlYXJBbm5vdGF0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09IGZhbHNlKSByZXR1cm5cblxuICAgIGxldCBub2RlXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucm9vdC5ub2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbm9kZSA9IHRoaXMucm9vdC5ub2Rlc1tpXVxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2NvbW1lbnQnKSBjb250aW51ZVxuICAgICAgaWYgKG5vZGUudGV4dC5pbmRleE9mKCcjIHNvdXJjZU1hcHBpbmdVUkw9JykgPT09IDApIHtcbiAgICAgICAgdGhpcy5yb290LnJlbW92ZUNoaWxkKGkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U291cmNlc0NvbnRlbnQgKCkge1xuICAgIGxldCBhbHJlYWR5ID0geyB9XG4gICAgdGhpcy5yb290LndhbGsobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgbGV0IGZyb20gPSBub2RlLnNvdXJjZS5pbnB1dC5mcm9tXG4gICAgICAgIGlmIChmcm9tICYmICFhbHJlYWR5W2Zyb21dKSB7XG4gICAgICAgICAgYWxyZWFkeVtmcm9tXSA9IHRydWVcbiAgICAgICAgICBsZXQgcmVsYXRpdmUgPSB0aGlzLnJlbGF0aXZlKGZyb20pXG4gICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UHJldk1hcHMgKCkge1xuICAgIGZvciAobGV0IHByZXYgb2YgdGhpcy5wcmV2aW91cygpKSB7XG4gICAgICBsZXQgZnJvbSA9IHRoaXMucmVsYXRpdmUocHJldi5maWxlKVxuICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSlcbiAgICAgIGxldCBtYXBcblxuICAgICAgaWYgKHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KVxuICAgICAgICBpZiAobWFwLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCgoKSA9PiBudWxsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXAgPSBwcmV2LmNvbnN1bWVyKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuYXBwbHlTb3VyY2VNYXAobWFwLCBmcm9tLCB0aGlzLnJlbGF0aXZlKHJvb3QpKVxuICAgIH1cbiAgfVxuXG4gIGlzQW5ub3RhdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvblxuICAgIH1cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS5hbm5vdGF0aW9uKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgdG9CYXNlNjQgKHN0cikge1xuICAgIGlmIChCdWZmZXIpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpKVxuICB9XG5cbiAgYWRkQW5ub3RhdGlvbiAoKSB7XG4gICAgbGV0IGNvbnRlbnRcblxuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIGNvbnRlbnQgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICtcbiAgICAgICAgICAgICAgICB0aGlzLnRvQmFzZTY0KHRoaXMubWFwLnRvU3RyaW5nKCkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb25cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMub3V0cHV0RmlsZSgpICsgJy5tYXAnXG4gICAgfVxuXG4gICAgbGV0IGVvbCA9ICdcXG4nXG4gICAgaWYgKHRoaXMuY3NzLmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSkgZW9sID0gJ1xcclxcbidcblxuICAgIHRoaXMuY3NzICs9IGVvbCArICcvKiMgc291cmNlTWFwcGluZ1VSTD0nICsgY29udGVudCArICcgKi8nXG4gIH1cblxuICBvdXRwdXRGaWxlICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLnRvKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMudG8pXG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuZnJvbSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLmZyb20pXG4gICAgfVxuICAgIHJldHVybiAndG8uY3NzJ1xuICB9XG5cbiAgZ2VuZXJhdGVNYXAgKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVTdHJpbmcoKVxuICAgIGlmICh0aGlzLmlzU291cmNlc0NvbnRlbnQoKSkgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpXG4gICAgaWYgKHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwKSB0aGlzLmFwcGx5UHJldk1hcHMoKVxuICAgIGlmICh0aGlzLmlzQW5ub3RhdGlvbigpKSB0aGlzLmFkZEFubm90YXRpb24oKVxuXG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLmNzc11cbiAgICB9XG4gICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdXG4gIH1cblxuICByZWxhdGl2ZSAoZmlsZSkge1xuICAgIGlmIChmaWxlLmluZGV4T2YoJzwnKSA9PT0gMCkgcmV0dXJuIGZpbGVcbiAgICBpZiAoL15cXHcrOlxcL1xcLy8udGVzdChmaWxlKSkgcmV0dXJuIGZpbGVcblxuICAgIGxldCBmcm9tID0gdGhpcy5vcHRzLnRvID8gcGF0aC5kaXJuYW1lKHRoaXMub3B0cy50bykgOiAnLidcblxuICAgIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBmcm9tID0gcGF0aC5kaXJuYW1lKHBhdGgucmVzb2x2ZShmcm9tLCB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbikpXG4gICAgfVxuXG4gICAgZmlsZSA9IHBhdGgucmVsYXRpdmUoZnJvbSwgZmlsZSlcbiAgICBpZiAocGF0aC5zZXAgPT09ICdcXFxcJykge1xuICAgICAgcmV0dXJuIGZpbGUucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgfVxuICAgIHJldHVybiBmaWxlXG4gIH1cblxuICBzb3VyY2VQYXRoIChub2RlKSB7XG4gICAgaWYgKHRoaXMubWFwT3B0cy5mcm9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmZyb21cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmUobm9kZS5zb3VyY2UuaW5wdXQuZnJvbSlcbiAgfVxuXG4gIGdlbmVyYXRlU3RyaW5nICgpIHtcbiAgICB0aGlzLmNzcyA9ICcnXG4gICAgdGhpcy5tYXAgPSBuZXcgbW96aWxsYS5Tb3VyY2VNYXBHZW5lcmF0b3IoeyBmaWxlOiB0aGlzLm91dHB1dEZpbGUoKSB9KVxuXG4gICAgbGV0IGxpbmUgPSAxXG4gICAgbGV0IGNvbHVtbiA9IDFcblxuICAgIGxldCBsaW5lcywgbGFzdFxuICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgdGhpcy5jc3MgKz0gc3RyXG5cbiAgICAgIGlmIChub2RlICYmIHR5cGUgIT09ICdlbmQnKSB7XG4gICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCkge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVBhdGgobm9kZSksXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH0sXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBub2RlLnNvdXJjZS5zdGFydC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpbmVzID0gc3RyLm1hdGNoKC9cXG4vZylcbiAgICAgIGlmIChsaW5lcykge1xuICAgICAgICBsaW5lICs9IGxpbmVzLmxlbmd0aFxuICAgICAgICBsYXN0ID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKVxuICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgJiYgdHlwZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICBsZXQgcCA9IG5vZGUucGFyZW50IHx8IHsgcmF3czogeyB9IH1cbiAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2RlY2wnIHx8IG5vZGUgIT09IHAubGFzdCB8fCBwLnJhd3Muc2VtaWNvbG9uKSB7XG4gICAgICAgICAgaWYgKG5vZGUuc291cmNlICYmIG5vZGUuc291cmNlLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAyIH0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgICAgbGluZTogbm9kZS5zb3VyY2UuZW5kLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBub2RlLnNvdXJjZS5lbmQuY29sdW1uIC0gMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgICBvcmlnaW5hbDogeyBsaW5lOiAxLCBjb2x1bW46IDAgfSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZW5lcmF0ZSAoKSB7XG4gICAgdGhpcy5jbGVhckFubm90YXRpb24oKVxuXG4gICAgaWYgKHRoaXMuaXNNYXAoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVNYXAoKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgaSA9PiB7XG4gICAgICByZXN1bHQgKz0gaVxuICAgIH0pXG4gICAgcmV0dXJuIFtyZXN1bHRdXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwR2VuZXJhdG9yXG4iXSwiZmlsZSI6Im1hcC1nZW5lcmF0b3IuanMifQ==\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    mappings.map(function (mapping) {\n      var source = mapping.source === null ? null : this._sources.at(mapping.source);\n      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n      return {\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : this._names.at(mapping.name)\n      };\n    }, this).forEach(aCallback, context);\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        // Because each offset is encoded relative to the previous one,\n        // many segments often have the same encoding. We can exploit this\n        // fact by caching the parsed variable length fields of each segment,\n        // allowing us to avoid a second parse if we encounter the same\n        // segment again.\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = cachedSegments[str];\n        if (segment) {\n          index += str.length;\n        } else {\n          segment = [];\n          while (index < end) {\n            base64VLQ.decode(aStr, index, temp);\n            value = temp.value;\n            index = temp.rest;\n            segment.push(value);\n          }\n\n          if (segment.length === 2) {\n            throw new Error('Found a source, but no line and column');\n          }\n\n          if (segment.length === 3) {\n            throw new Error('Found a source and line, but no column');\n          }\n\n          cachedSegments[str] = segment;\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          originalMappings.push(mapping);\n        }\n      }\n    }\n\n    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n    this.__generatedMappings = generatedMappings;\n\n    quickSort(originalMappings, util.compareByOriginalPositions);\n    this.__originalMappings = originalMappings;\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content) {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n  doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n  if (printed[message]) return;\n  printed[message] = true;\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message);\n  }\n}\n\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsicHJpbnRlZCIsIndhcm5PbmNlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsT0FBTyxHQUFHLEVBQWQ7O0FBRWUsU0FBU0MsUUFBVCxDQUFtQkMsT0FBbkIsRUFBNEI7QUFDekMsTUFBSUYsT0FBTyxDQUFDRSxPQUFELENBQVgsRUFBc0I7QUFDdEJGLEVBQUFBLE9BQU8sQ0FBQ0UsT0FBRCxDQUFQLEdBQW1CLElBQW5COztBQUVBLE1BQUksT0FBT0MsT0FBUCxLQUFtQixXQUFuQixJQUFrQ0EsT0FBTyxDQUFDQyxJQUE5QyxFQUFvRDtBQUNsREQsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFGLE9BQWI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHByaW50ZWQgPSB7IH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2Fybk9uY2UgKG1lc3NhZ2UpIHtcbiAgaWYgKHByaW50ZWRbbWVzc2FnZV0pIHJldHVyblxuICBwcmludGVkW21lc3NhZ2VdID0gdHJ1ZVxuXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpXG4gIH1cbn1cbiJdLCJmaWxlIjoid2Fybi1vbmNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _warning = _interopRequireDefault(require(\"./warning\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([autoprefixer]).process(css).then(result => {\n *  console.log(result.css)\n * })\n *\n * @example\n * const result2 = postcss.parse(css).toResult()\n */\nvar Result = /*#__PURE__*/function () {\n  /**\n   * @param {Processor} processor Processor used for this transformation.\n   * @param {Root}      root      Root node after all transformations.\n   * @param {processOptions} opts Options from the {@link Processor#process}\n   *                              or {@link Root#toResult}.\n   */\n  function Result(processor, root, opts) {\n    /**\n     * The Processor instance used for this transformation.\n     *\n     * @type {Processor}\n     *\n     * @example\n     * for (const plugin of result.processor.plugins) {\n     *   if (plugin.postcssPlugin === 'postcss-bad') {\n     *     throw 'postcss-good is incompatible with postcss-bad'\n     *   }\n     * })\n     */\n    this.processor = processor;\n    /**\n     * Contains messages from plugins (e.g., warnings or custom messages).\n     * Each message should have type and plugin properties.\n     *\n     * @type {Message[]}\n     *\n     * @example\n     * postcss.plugin('postcss-min-browser', () => {\n     *   return (root, result) => {\n     *     const browsers = detectMinBrowsersByCanIUse(root)\n     *     result.messages.push({\n     *       type: 'min-browser',\n     *       plugin: 'postcss-min-browser',\n     *       browsers\n     *     })\n     *   }\n     * })\n     */\n\n    this.messages = [];\n    /**\n     * Root node after all transformations.\n     *\n     * @type {Root}\n     *\n     * @example\n     * root.toResult().root === root\n     */\n\n    this.root = root;\n    /**\n     * Options from the {@link Processor#process} or {@link Root#toResult} call\n     * that produced this Result instance.\n     *\n     * @type {processOptions}\n     *\n     * @example\n     * root.toResult(opts).opts === opts\n     */\n\n    this.opts = opts;\n    /**\n     * A CSS string representing of {@link Result#root}.\n     *\n     * @type {string}\n     *\n     * @example\n     * postcss.parse('a{}').toResult().css //=> \"a{}\"\n     */\n\n    this.css = undefined;\n    /**\n     * An instance of `SourceMapGenerator` class from the `source-map` library,\n     * representing changes to the {@link Result#root} instance.\n     *\n     * @type {SourceMapGenerator}\n     *\n     * @example\n     * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n     *\n     * @example\n     * if (result.map) {\n     *   fs.writeFileSync(result.opts.to + '.map', result.map.toString())\n     * }\n     */\n\n    this.map = undefined;\n  }\n  /**\n   * Returns for @{link Result#css} content.\n   *\n   * @example\n   * result + '' === result.css\n   *\n   * @return {string} String representing of {@link Result#root}.\n   */\n\n\n  var _proto = Result.prototype;\n\n  _proto.toString = function toString() {\n    return this.css;\n  }\n  /**\n   * Creates an instance of {@link Warning} and adds it\n   * to {@link Result#messages}.\n   *\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   *\n   * @return {Warning} Created warning.\n   */\n  ;\n\n  _proto.warn = function warn(text, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n\n    var warning = new _warning.default(text, opts);\n    this.messages.push(warning);\n    return warning;\n  }\n  /**\n     * Returns warnings from plugins. Filters {@link Warning} instances\n     * from {@link Result#messages}.\n     *\n     * @example\n     * result.warnings().forEach(warn => {\n     *   console.warn(warn.toString())\n     * })\n     *\n     * @return {Warning[]} Warnings from plugins.\n     */\n  ;\n\n  _proto.warnings = function warnings() {\n    return this.messages.filter(function (i) {\n      return i.type === 'warning';\n    });\n  }\n  /**\n   * An alias for the {@link Result#css} property.\n   * Use it with syntaxes that generate non-CSS output.\n   *\n   * @type {string}\n   *\n   * @example\n   * result.css === result.content\n   */\n  ;\n\n  _createClass(Result, [{\n    key: \"content\",\n    get: function get() {\n      return this.css;\n    }\n  }]);\n\n  return Result;\n}();\n\nvar _default = Result;\n/**\n * @typedef  {object} Message\n * @property {string} type   Message type.\n * @property {string} plugin Source PostCSS plugin name.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0lBY01BLE07QUFDSjs7Ozs7O0FBTUEsa0JBQWFDLFNBQWIsRUFBd0JDLElBQXhCLEVBQThCQyxJQUE5QixFQUFvQztBQUNsQzs7Ozs7Ozs7Ozs7O0FBWUEsU0FBS0YsU0FBTCxHQUFpQkEsU0FBakI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7Ozs7O0FBU0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtFLEdBQUwsR0FBV0MsU0FBWDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFLQyxHQUFMLEdBQVdELFNBQVg7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7U0FRQUUsUSxHQUFBLG9CQUFZO0FBQ1YsV0FBTyxLQUFLSCxHQUFaO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0JBSSxJLEdBQUEsY0FBTUMsSUFBTixFQUFZUCxJQUFaLEVBQXdCO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUN0QixRQUFJLENBQUNBLElBQUksQ0FBQ1EsTUFBVixFQUFrQjtBQUNoQixVQUFJLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQkMsYUFBdkMsRUFBc0Q7QUFDcERWLFFBQUFBLElBQUksQ0FBQ1EsTUFBTCxHQUFjLEtBQUtDLFVBQUwsQ0FBZ0JDLGFBQTlCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQyxPQUFPLEdBQUcsSUFBSUMsZ0JBQUosQ0FBWUwsSUFBWixFQUFrQlAsSUFBbEIsQ0FBZDtBQUNBLFNBQUtDLFFBQUwsQ0FBY1ksSUFBZCxDQUFtQkYsT0FBbkI7QUFFQSxXQUFPQSxPQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7OztTQVdBRyxRLEdBQUEsb0JBQVk7QUFDVixXQUFPLEtBQUtiLFFBQUwsQ0FBY2MsTUFBZCxDQUFxQixVQUFBQyxDQUFDO0FBQUEsYUFBSUEsQ0FBQyxDQUFDQyxJQUFGLEtBQVcsU0FBZjtBQUFBLEtBQXRCLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O3dCQVNlO0FBQ2IsYUFBTyxLQUFLZixHQUFaO0FBQ0Q7Ozs7OztlQUdZTCxNO0FBRWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2FybmluZyBmcm9tICcuL3dhcm5pbmcnXG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIHJlc3VsdCBvZiB0aGUgUG9zdENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQSBSZXN1bHQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgYnkge0BsaW5rIExhenlSZXN1bHQjdGhlbn1cbiAqIG9yIHtAbGluayBSb290I3RvUmVzdWx0fSBtZXRob2RzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykudGhlbihyZXN1bHQgPT4ge1xuICogIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gKiB9KVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQyID0gcG9zdGNzcy5wYXJzZShjc3MpLnRvUmVzdWx0KClcbiAqL1xuY2xhc3MgUmVzdWx0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7UHJvY2Vzc29yfSBwcm9jZXNzb3IgUHJvY2Vzc29yIHVzZWQgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgUm9vdCBub2RlIGFmdGVyIGFsbCB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IG9wdHMgT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgIC8qKlxuICAgICAqIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGZvciAoY29uc3QgcGx1Z2luIG9mIHJlc3VsdC5wcm9jZXNzb3IucGx1Z2lucykge1xuICAgICAqICAgaWYgKHBsdWdpbi5wb3N0Y3NzUGx1Z2luID09PSAncG9zdGNzcy1iYWQnKSB7XG4gICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnXG4gICAgICogICB9XG4gICAgICogfSlcbiAgICAgKi9cbiAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvclxuICAgIC8qKlxuICAgICAqIENvbnRhaW5zIG1lc3NhZ2VzIGZyb20gcGx1Z2lucyAoZS5nLiwgd2FybmluZ3Mgb3IgY3VzdG9tIG1lc3NhZ2VzKS5cbiAgICAgKiBFYWNoIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgdHlwZSBhbmQgcGx1Z2luIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1taW4tYnJvd3NlcicsICgpID0+IHtcbiAgICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAgICogICAgIGNvbnN0IGJyb3dzZXJzID0gZGV0ZWN0TWluQnJvd3NlcnNCeUNhbklVc2Uocm9vdClcbiAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAqICAgICAgIHR5cGU6ICdtaW4tYnJvd3NlcicsXG4gICAgICogICAgICAgcGx1Z2luOiAncG9zdGNzcy1taW4tYnJvd3NlcicsXG4gICAgICogICAgICAgYnJvd3NlcnNcbiAgICAgKiAgICAgfSlcbiAgICAgKiAgIH1cbiAgICAgKiB9KVxuICAgICAqL1xuICAgIHRoaXMubWVzc2FnZXMgPSBbXVxuICAgIC8qKlxuICAgICAqIFJvb3Qgbm9kZSBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zLlxuICAgICAqXG4gICAgICogQHR5cGUge1Jvb3R9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3QudG9SZXN1bHQoKS5yb290ID09PSByb290XG4gICAgICovXG4gICAgdGhpcy5yb290ID0gcm9vdFxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gY2FsbFxuICAgICAqIHRoYXQgcHJvZHVjZWQgdGhpcyBSZXN1bHQgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3QudG9SZXN1bHQob3B0cykub3B0cyA9PT0gb3B0c1xuICAgICAqL1xuICAgIHRoaXMub3B0cyA9IG9wdHNcbiAgICAvKipcbiAgICAgKiBBIENTUyBzdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnBhcnNlKCdhe30nKS50b1Jlc3VsdCgpLmNzcyAvLz0+IFwiYXt9XCJcbiAgICAgKi9cbiAgICB0aGlzLmNzcyA9IHVuZGVmaW5lZFxuICAgIC8qKlxuICAgICAqIEFuIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgIGNsYXNzIGZyb20gdGhlIGBzb3VyY2UtbWFwYCBsaWJyYXJ5LFxuICAgICAqIHJlcHJlc2VudGluZyBjaGFuZ2VzIHRvIHRoZSB7QGxpbmsgUmVzdWx0I3Jvb3R9IGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRvcn1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0Lm1hcC50b0pTT04oKSAvLz0+IHsgdmVyc2lvbjogMywgZmlsZTogJ2EuY3NzJywg4oCmIH1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKHJlc3VsdC5tYXApIHtcbiAgICAgKiAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0Lm9wdHMudG8gKyAnLm1hcCcsIHJlc3VsdC5tYXAudG9TdHJpbmcoKSlcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy5tYXAgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZvciBAe2xpbmsgUmVzdWx0I2Nzc30gY29udGVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcmVzdWx0ICsgJycgPT09IHJlc3VsdC5jc3NcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBTdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgV2FybmluZ30gYW5kIGFkZHMgaXRcbiAgICogdG8ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICBXYXJuaW5nIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gICAgICBXYXJuaW5nIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7Tm9kZX0gICBvcHRzLm5vZGUgICBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIFdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdHMuaW5kZXggIEluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBOYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHdhcm5pbmcuIHtAbGluayBSZXN1bHQjd2Fybn0gZmlsbHNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHJldHVybiB7V2FybmluZ30gQ3JlYXRlZCB3YXJuaW5nLlxuICAgKi9cbiAgd2FybiAodGV4dCwgb3B0cyA9IHsgfSkge1xuICAgIGlmICghb3B0cy5wbHVnaW4pIHtcbiAgICAgIGlmICh0aGlzLmxhc3RQbHVnaW4gJiYgdGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW4pIHtcbiAgICAgICAgb3B0cy5wbHVnaW4gPSB0aGlzLmxhc3RQbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB3YXJuaW5nID0gbmV3IFdhcm5pbmcodGV4dCwgb3B0cylcbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2god2FybmluZylcblxuICAgIHJldHVybiB3YXJuaW5nXG4gIH1cblxuICAvKipcbiAgICAgKiBSZXR1cm5zIHdhcm5pbmdzIGZyb20gcGx1Z2lucy4gRmlsdGVycyB7QGxpbmsgV2FybmluZ30gaW5zdGFuY2VzXG4gICAgICogZnJvbSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0Lndhcm5pbmdzKCkuZm9yRWFjaCh3YXJuID0+IHtcbiAgICAgKiAgIGNvbnNvbGUud2Fybih3YXJuLnRvU3RyaW5nKCkpXG4gICAgICogfSlcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gV2FybmluZ3MgZnJvbSBwbHVnaW5zLlxuICAgICAqL1xuICB3YXJuaW5ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZXMuZmlsdGVyKGkgPT4gaS50eXBlID09PSAnd2FybmluZycpXG4gIH1cblxuICAvKipcbiAgICogQW4gYWxpYXMgZm9yIHRoZSB7QGxpbmsgUmVzdWx0I2Nzc30gcHJvcGVydHkuXG4gICAqIFVzZSBpdCB3aXRoIHN5bnRheGVzIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJlc3VsdC5jc3MgPT09IHJlc3VsdC5jb250ZW50XG4gICAqL1xuICBnZXQgY29udGVudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0XG5cbi8qKlxuICogQHR5cGVkZWYgIHtvYmplY3R9IE1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlICAgTWVzc2FnZSB0eXBlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBsdWdpbiBTb3VyY2UgUG9zdENTUyBwbHVnaW4gbmFtZS5cbiAqL1xuIl0sImZpbGUiOiJyZXN1bHQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if (decl.important) {\n *   decl.warn(result, 'Avoid !important', { word: '!important' })\n * }\n */\nvar Warning = /*#__PURE__*/function () {\n  /**\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   */\n  function Warning(text, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    /**\n     * Type to filter warnings from {@link Result#messages}.\n     * Always equal to `\"warning\"`.\n     *\n     * @type {string}\n     *\n     * @example\n     * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n     */\n    this.type = 'warning';\n    /**\n     * The warning message.\n     *\n     * @type {string}\n     *\n     * @example\n     * warning.text //=> 'Try to avoid !important'\n     */\n\n    this.text = text;\n\n    if (opts.node && opts.node.source) {\n      var pos = opts.node.positionBy(opts);\n      /**\n       * Line in the input file with this warning’s source.\n       * @type {number}\n       *\n       * @example\n       * warning.line //=> 5\n       */\n\n      this.line = pos.line;\n      /**\n       * Column in the input file with this warning’s source.\n       *\n       * @type {number}\n       *\n       * @example\n       * warning.column //=> 6\n       */\n\n      this.column = pos.column;\n    }\n\n    for (var opt in opts) {\n      this[opt] = opts[opt];\n    }\n  }\n  /**\n   * Returns a warning position and message.\n   *\n   * @example\n   * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n   *\n   * @return {string} Warning position and message.\n   */\n\n\n  var _proto = Warning.prototype;\n\n  _proto.toString = function toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        plugin: this.plugin,\n        index: this.index,\n        word: this.word\n      }).message;\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text;\n    }\n\n    return this.text;\n  }\n  /**\n   * @memberof Warning#\n   * @member {string} plugin The name of the plugin that created\n   *                         it will fill this property automatically.\n   *                         this warning. When you call {@link Node#warn}\n   *\n   * @example\n   * warning.plugin //=> 'postcss-important'\n   */\n\n  /**\n   * @memberof Warning#\n   * @member {Node} node Contains the CSS node that caused the warning.\n   *\n   * @example\n   * warning.node.toString() //=> 'color: white !important'\n   */\n  ;\n\n  return Warning;\n}();\n\nvar _default = Warning;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7SUFRTUEsTztBQUNKOzs7Ozs7Ozs7OztBQVdBLG1CQUFhQyxJQUFiLEVBQW1CQyxJQUFuQixFQUErQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDN0I7Ozs7Ozs7OztBQVNBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFJQyxJQUFJLENBQUNFLElBQUwsSUFBYUYsSUFBSSxDQUFDRSxJQUFMLENBQVVDLE1BQTNCLEVBQW1DO0FBQ2pDLFVBQUlDLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxJQUFMLENBQVVHLFVBQVYsQ0FBcUJMLElBQXJCLENBQVY7QUFDQTs7Ozs7Ozs7QUFPQSxXQUFLTSxJQUFMLEdBQVlGLEdBQUcsQ0FBQ0UsSUFBaEI7QUFDQTs7Ozs7Ozs7O0FBUUEsV0FBS0MsTUFBTCxHQUFjSCxHQUFHLENBQUNHLE1BQWxCO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJQyxHQUFULElBQWdCUixJQUFoQjtBQUFzQixXQUFLUSxHQUFMLElBQVlSLElBQUksQ0FBQ1EsR0FBRCxDQUFoQjtBQUF0QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVFBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJLEtBQUtQLElBQVQsRUFBZTtBQUNiLGFBQU8sS0FBS0EsSUFBTCxDQUFVUSxLQUFWLENBQWdCLEtBQUtYLElBQXJCLEVBQTJCO0FBQ2hDWSxRQUFBQSxNQUFNLEVBQUUsS0FBS0EsTUFEbUI7QUFFaENDLFFBQUFBLEtBQUssRUFBRSxLQUFLQSxLQUZvQjtBQUdoQ0MsUUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBSHFCLE9BQTNCLEVBSUpDLE9BSkg7QUFLRDs7QUFFRCxRQUFJLEtBQUtILE1BQVQsRUFBaUI7QUFDZixhQUFPLEtBQUtBLE1BQUwsR0FBYyxJQUFkLEdBQXFCLEtBQUtaLElBQWpDO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLQSxJQUFaO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7Ozs7ZUFTYUQsTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChkZWNsLmltcG9ydGFudCkge1xuICogICBkZWNsLndhcm4ocmVzdWx0LCAnQXZvaWQgIWltcG9ydGFudCcsIHsgd29yZDogJyFpbXBvcnRhbnQnIH0pXG4gKiB9XG4gKi9cbmNsYXNzIFdhcm5pbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAgICAgIFdhcm5pbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtOb2RlfSAgIG9wdHMubm9kZSAgIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgV29yZCBpbiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgSW5kZXggaW4gQ1NTIG5vZGUgc3RyaW5nIHRoYXQgY2F1c2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIE5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHRleHQsIG9wdHMgPSB7IH0pIHtcbiAgICAvKipcbiAgICAgKiBUeXBlIHRvIGZpbHRlciB3YXJuaW5ncyBmcm9tIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgICAqIEFsd2F5cyBlcXVhbCB0byBgXCJ3YXJuaW5nXCJgLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSAnd2FybmluZydcbiAgICAvKipcbiAgICAgKiBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50ZXh0IC8vPT4gJ1RyeSB0byBhdm9pZCAhaW1wb3J0YW50J1xuICAgICAqL1xuICAgIHRoaXMudGV4dCA9IHRleHRcblxuICAgIGlmIChvcHRzLm5vZGUgJiYgb3B0cy5ub2RlLnNvdXJjZSkge1xuICAgICAgbGV0IHBvcyA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgaW4gdGhlIGlucHV0IGZpbGUgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIHdhcm5pbmcubGluZSAvLz0+IDVcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gcG9zLmxpbmVcbiAgICAgIC8qKlxuICAgICAgICogQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2UuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtblxuICAgIH1cblxuICAgIGZvciAobGV0IG9wdCBpbiBvcHRzKSB0aGlzW29wdF0gPSBvcHRzW29wdF1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBXYXJuaW5nIHBvc2l0aW9uIGFuZCBtZXNzYWdlLlxuICAgKi9cbiAgdG9TdHJpbmcgKCkge1xuICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgIHBsdWdpbjogdGhpcy5wbHVnaW4sXG4gICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICB3b3JkOiB0aGlzLndvcmRcbiAgICAgIH0pLm1lc3NhZ2VcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wbHVnaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnBsdWdpbiArICc6ICcgKyB0aGlzLnRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXh0XG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGx1Z2luIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgZmlsbCB0aGlzIHByb3BlcnR5IGF1dG9tYXRpY2FsbHkuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4gV2hlbiB5b3UgY2FsbCB7QGxpbmsgTm9kZSN3YXJufVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB3YXJuaW5nLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLWltcG9ydGFudCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXYXJuaW5nI1xuICAgKiBAbWVtYmVyIHtOb2RlfSBub2RlIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBXYXJuaW5nXG4iXSwiZmlsZSI6Indhcm5pbmcuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _tokenize = _interopRequireDefault(require(\"./tokenize\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _atRule = _interopRequireDefault(require(\"./at-rule\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _rule = _interopRequireDefault(require(\"./rule\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Parser = /*#__PURE__*/function () {\n  function Parser(input) {\n    this.input = input;\n    this.root = new _root.default();\n    this.current = this.root;\n    this.spaces = '';\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = {\n      input: input,\n      start: {\n        line: 1,\n        column: 1\n      }\n    };\n  }\n\n  var _proto = Parser.prototype;\n\n  _proto.createTokenizer = function createTokenizer() {\n    this.tokenizer = (0, _tokenize.default)(this.input);\n  };\n\n  _proto.parse = function parse() {\n    var token;\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1];\n          break;\n\n        case ';':\n          this.freeSemicolon(token);\n          break;\n\n        case '}':\n          this.end(token);\n          break;\n\n        case 'comment':\n          this.comment(token);\n          break;\n\n        case 'at-word':\n          this.atrule(token);\n          break;\n\n        case '{':\n          this.emptyRule(token);\n          break;\n\n        default:\n          this.other(token);\n          break;\n      }\n    }\n\n    this.endFile();\n  };\n\n  _proto.comment = function comment(token) {\n    var node = new _comment.default();\n    this.init(node, token[2], token[3]);\n    node.source.end = {\n      line: token[4],\n      column: token[5]\n    };\n    var text = token[1].slice(2, -2);\n\n    if (/^\\s*$/.test(text)) {\n      node.text = '';\n      node.raws.left = text;\n      node.raws.right = '';\n    } else {\n      var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n      node.text = match[2];\n      node.raws.left = match[1];\n      node.raws.right = match[3];\n    }\n  };\n\n  _proto.emptyRule = function emptyRule(token) {\n    var node = new _rule.default();\n    this.init(node, token[2], token[3]);\n    node.selector = '';\n    node.raws.between = '';\n    this.current = node;\n  };\n\n  _proto.other = function other(start) {\n    var end = false;\n    var type = null;\n    var colon = false;\n    var bracket = null;\n    var brackets = [];\n    var tokens = [];\n    var token = start;\n\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token;\n        brackets.push(type === '(' ? ')' : ']');\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === '{') {\n          this.rule(tokens);\n          return;\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === ':') {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n\n      token = this.tokenizer.nextToken();\n    }\n\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n\n    if (end && colon) {\n      while (tokens.length) {\n        token = tokens[tokens.length - 1][0];\n        if (token !== 'space' && token !== 'comment') break;\n        this.tokenizer.back(tokens.pop());\n      }\n\n      this.decl(tokens);\n    } else {\n      this.unknownWord(tokens);\n    }\n  };\n\n  _proto.rule = function rule(tokens) {\n    tokens.pop();\n    var node = new _rule.default();\n    this.init(node, tokens[0][2], tokens[0][3]);\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node, 'selector', tokens);\n    this.current = node;\n  };\n\n  _proto.decl = function decl(tokens) {\n    var node = new _declaration.default();\n    this.init(node);\n    var last = tokens[tokens.length - 1];\n\n    if (last[0] === ';') {\n      this.semicolon = true;\n      tokens.pop();\n    }\n\n    if (last[4]) {\n      node.source.end = {\n        line: last[4],\n        column: last[5]\n      };\n    } else {\n      node.source.end = {\n        line: last[2],\n        column: last[3]\n      };\n    }\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node.raws.before += tokens.shift()[1];\n    }\n\n    node.source.start = {\n      line: tokens[0][2],\n      column: tokens[0][3]\n    };\n    node.prop = '';\n\n    while (tokens.length) {\n      var type = tokens[0][0];\n\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break;\n      }\n\n      node.prop += tokens.shift()[1];\n    }\n\n    node.raws.between = '';\n    var token;\n\n    while (tokens.length) {\n      token = tokens.shift();\n\n      if (token[0] === ':') {\n        node.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n\n        node.raws.between += token[1];\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0];\n      node.prop = node.prop.slice(1);\n    }\n\n    node.raws.between += this.spacesAndCommentsFromStart(tokens);\n    this.precheckMissedSemicolon(tokens);\n\n    for (var i = tokens.length - 1; i > 0; i--) {\n      token = tokens[i];\n\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true;\n        var string = this.stringFrom(tokens, i);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== ' !important') node.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === 'important') {\n        var cache = tokens.slice(0);\n        var str = '';\n\n        for (var j = i; j > 0; j--) {\n          var _type = cache[j][0];\n\n          if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n            break;\n          }\n\n          str = cache.pop()[1] + str;\n        }\n\n        if (str.trim().indexOf('!') === 0) {\n          node.important = true;\n          node.raws.important = str;\n          tokens = cache;\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break;\n      }\n    }\n\n    this.raw(node, 'value', tokens);\n    if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n  };\n\n  _proto.atrule = function atrule(token) {\n    var node = new _atRule.default();\n    node.name = token[1].slice(1);\n\n    if (node.name === '') {\n      this.unnamedAtrule(node, token);\n    }\n\n    this.init(node, token[2], token[3]);\n    var prev;\n    var shift;\n    var last = false;\n    var open = false;\n    var params = [];\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n\n      if (token[0] === ';') {\n        node.source.end = {\n          line: token[2],\n          column: token[3]\n        };\n        this.semicolon = true;\n        break;\n      } else if (token[0] === '{') {\n        open = true;\n        break;\n      } else if (token[0] === '}') {\n        if (params.length > 0) {\n          shift = params.length - 1;\n          prev = params[shift];\n\n          while (prev && prev[0] === 'space') {\n            prev = params[--shift];\n          }\n\n          if (prev) {\n            node.source.end = {\n              line: prev[4],\n              column: prev[5]\n            };\n          }\n        }\n\n        this.end(token);\n        break;\n      } else {\n        params.push(token);\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params);\n\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node, 'params', params);\n\n      if (last) {\n        token = params[params.length - 1];\n        node.source.end = {\n          line: token[4],\n          column: token[5]\n        };\n        this.spaces = node.raws.between;\n        node.raws.between = '';\n      }\n    } else {\n      node.raws.afterName = '';\n      node.params = '';\n    }\n\n    if (open) {\n      node.nodes = [];\n      this.current = node;\n    }\n  };\n\n  _proto.end = function end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n    this.spaces = '';\n\n    if (this.current.parent) {\n      this.current.source.end = {\n        line: token[2],\n        column: token[3]\n      };\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  };\n\n  _proto.endFile = function endFile() {\n    if (this.current.parent) this.unclosedBlock();\n\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n  };\n\n  _proto.freeSemicolon = function freeSemicolon(token) {\n    this.spaces += token[1];\n\n    if (this.current.nodes) {\n      var prev = this.current.nodes[this.current.nodes.length - 1];\n\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = '';\n      }\n    }\n  } // Helpers\n  ;\n\n  _proto.init = function init(node, line, column) {\n    this.current.push(node);\n    node.source = {\n      start: {\n        line: line,\n        column: column\n      },\n      input: this.input\n    };\n    node.raws.before = this.spaces;\n    this.spaces = '';\n    if (node.type !== 'comment') this.semicolon = false;\n  };\n\n  _proto.raw = function raw(node, prop, tokens) {\n    var token, type;\n    var length = tokens.length;\n    var value = '';\n    var clean = true;\n    var next, prev;\n    var pattern = /^([.|#])?([\\w])+/i;\n\n    for (var i = 0; i < length; i += 1) {\n      token = tokens[i];\n      type = token[0];\n\n      if (type === 'comment' && node.type === 'rule') {\n        prev = tokens[i - 1];\n        next = tokens[i + 1];\n\n        if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n          value += token[1];\n        } else {\n          clean = false;\n        }\n\n        continue;\n      }\n\n      if (type === 'comment' || type === 'space' && i === length - 1) {\n        clean = false;\n      } else {\n        value += token[1];\n      }\n    }\n\n    if (!clean) {\n      var raw = tokens.reduce(function (all, i) {\n        return all + i[1];\n      }, '');\n      node.raws[prop] = {\n        value: value,\n        raw: raw\n      };\n    }\n\n    node[prop] = value;\n  };\n\n  _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n    var lastTokenType;\n    var spaces = '';\n\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n\n    return spaces;\n  };\n\n  _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n    var next;\n    var spaces = '';\n\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== 'space' && next !== 'comment') break;\n      spaces += tokens.shift()[1];\n    }\n\n    return spaces;\n  };\n\n  _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n    var lastTokenType;\n    var spaces = '';\n\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== 'space') break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n\n    return spaces;\n  };\n\n  _proto.stringFrom = function stringFrom(tokens, from) {\n    var result = '';\n\n    for (var i = from; i < tokens.length; i++) {\n      result += tokens[i][1];\n    }\n\n    tokens.splice(from, tokens.length - from);\n    return result;\n  };\n\n  _proto.colon = function colon(tokens) {\n    var brackets = 0;\n    var token, type, prev;\n\n    for (var i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      type = token[0];\n\n      if (type === '(') {\n        brackets += 1;\n      }\n\n      if (type === ')') {\n        brackets -= 1;\n      }\n\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue;\n        } else {\n          return i;\n        }\n      }\n\n      prev = token;\n    }\n\n    return false;\n  } // Errors\n  ;\n\n  _proto.unclosedBracket = function unclosedBracket(bracket) {\n    throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n  };\n\n  _proto.unknownWord = function unknownWord(tokens) {\n    throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n  };\n\n  _proto.unexpectedClose = function unexpectedClose(token) {\n    throw this.input.error('Unexpected }', token[2], token[3]);\n  };\n\n  _proto.unclosedBlock = function unclosedBlock() {\n    var pos = this.current.source.start;\n    throw this.input.error('Unclosed block', pos.line, pos.column);\n  };\n\n  _proto.doubleColon = function doubleColon(token) {\n    throw this.input.error('Double colon', token[2], token[3]);\n  };\n\n  _proto.unnamedAtrule = function unnamedAtrule(node, token) {\n    throw this.input.error('At-rule without name', token[2], token[3]);\n  };\n\n  _proto.precheckMissedSemicolon = function precheckMissedSemicolon()\n  /* tokens */\n  {// Hook for Safe Parser\n  };\n\n  _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n    var colon = this.colon(tokens);\n    if (colon === false) return;\n    var founded = 0;\n    var token;\n\n    for (var j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n\n      if (token[0] !== 'space') {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n\n    throw this.input.error('Missed semicolon', token[2], token[3]);\n  };\n\n  return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBRXFCQSxNO0FBQ25CLGtCQUFhQyxLQUFiLEVBQW9CO0FBQ2xCLFNBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUVBLFNBQUtDLElBQUwsR0FBWSxJQUFJQyxhQUFKLEVBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0YsSUFBcEI7QUFDQSxTQUFLRyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsS0FBakI7QUFFQSxTQUFLQyxlQUFMO0FBQ0EsU0FBS0wsSUFBTCxDQUFVTSxNQUFWLEdBQW1CO0FBQUVQLE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTUSxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFLENBQVI7QUFBV0MsUUFBQUEsTUFBTSxFQUFFO0FBQW5CO0FBQWhCLEtBQW5CO0FBQ0Q7Ozs7U0FFREosZSxHQUFBLDJCQUFtQjtBQUNqQixTQUFLSyxTQUFMLEdBQWlCLHVCQUFVLEtBQUtYLEtBQWYsQ0FBakI7QUFDRCxHOztTQUVEWSxLLEdBQUEsaUJBQVM7QUFDUCxRQUFJQyxLQUFKOztBQUNBLFdBQU8sQ0FBQyxLQUFLRixTQUFMLENBQWVHLFNBQWYsRUFBUixFQUFvQztBQUNsQ0QsTUFBQUEsS0FBSyxHQUFHLEtBQUtGLFNBQUwsQ0FBZUksU0FBZixFQUFSOztBQUVBLGNBQVFGLEtBQUssQ0FBQyxDQUFELENBQWI7QUFDRSxhQUFLLE9BQUw7QUFDRSxlQUFLVCxNQUFMLElBQWVTLEtBQUssQ0FBQyxDQUFELENBQXBCO0FBQ0E7O0FBRUYsYUFBSyxHQUFMO0FBQ0UsZUFBS0csYUFBTCxDQUFtQkgsS0FBbkI7QUFD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LENBQWhCLEVBQW1CO0FBQ3BCO0FBQ0Y7O0FBQ0QsVUFBTSxLQUFLaEcsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixrQkFBakIsRUFBcUNqRixLQUFLLENBQUMsQ0FBRCxDQUExQyxFQUErQ0EsS0FBSyxDQUFDLENBQUQsQ0FBcEQsQ0FBTjtBQUNELEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSdcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBBdFJ1bGUgZnJvbSAnLi9hdC1ydWxlJ1xuaW1wb3J0IFJvb3QgZnJvbSAnLi9yb290J1xuaW1wb3J0IFJ1bGUgZnJvbSAnLi9ydWxlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRcblxuICAgIHRoaXMucm9vdCA9IG5ldyBSb290KClcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnJvb3RcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jcmVhdGVUb2tlbml6ZXIoKVxuICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9XG4gIH1cblxuICBjcmVhdGVUb2tlbml6ZXIgKCkge1xuICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyKHRoaXMuaW5wdXQpXG4gIH1cblxuICBwYXJzZSAoKSB7XG4gICAgbGV0IHRva2VuXG4gICAgd2hpbGUgKCF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSkge1xuICAgICAgdG9rZW4gPSB0aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKVxuXG4gICAgICBzd2l0Y2ggKHRva2VuWzBdKSB7XG4gICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnOyc6XG4gICAgICAgICAgdGhpcy5mcmVlU2VtaWNvbG9uKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICB0aGlzLmNvbW1lbnQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdhdC13b3JkJzpcbiAgICAgICAgICB0aGlzLmF0cnVsZSh0b2tlbilcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgIHRoaXMuZW1wdHlSdWxlKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLm90aGVyKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW5kRmlsZSgpXG4gIH1cblxuICBjb21tZW50ICh0b2tlbikge1xuICAgIGxldCBub2RlID0gbmV3IENvbW1lbnQoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG5cbiAgICBsZXQgdGV4dCA9IHRva2VuWzFdLnNsaWNlKDIsIC0yKVxuICAgIGlmICgvXlxccyokLy50ZXN0KHRleHQpKSB7XG4gICAgICBub2RlLnRleHQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmxlZnQgPSB0ZXh0XG4gICAgICBub2RlLnJhd3MucmlnaHQgPSAnJ1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKFxccyopKFteXSpbXlxcc10pKFxccyopJC8pXG4gICAgICBub2RlLnRleHQgPSBtYXRjaFsyXVxuICAgICAgbm9kZS5yYXdzLmxlZnQgPSBtYXRjaFsxXVxuICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM11cbiAgICB9XG4gIH1cblxuICBlbXB0eVJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgICBub2RlLnNlbGVjdG9yID0gJydcbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG4gICAgdGhpcy5jdXJyZW50ID0gbm9kZVxuICB9XG5cbiAgb3RoZXIgKHN0YXJ0KSB7XG4gICAgbGV0IGVuZCA9IGZhbHNlXG4gICAgbGV0IHR5cGUgPSBudWxsXG4gICAgbGV0IGNvbG9uID0gZmFsc2VcbiAgICBsZXQgYnJhY2tldCA9IG51bGxcbiAgICBsZXQgYnJhY2tldHMgPSBbXVxuXG4gICAgbGV0IHRva2VucyA9IFtdXG4gICAgbGV0IHRva2VuID0gc3RhcnRcbiAgICB3aGlsZSAodG9rZW4pIHtcbiAgICAgIHR5cGUgPSB0b2tlblswXVxuICAgICAgdG9rZW5zLnB1c2godG9rZW4pXG5cbiAgICAgIGlmICh0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snKSB7XG4gICAgICAgIGlmICghYnJhY2tldCkgYnJhY2tldCA9IHRva2VuXG4gICAgICAgIGJyYWNrZXRzLnB1c2godHlwZSA9PT0gJygnID8gJyknIDogJ10nKVxuICAgICAgfSBlbHNlIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICc7Jykge1xuICAgICAgICAgIGlmIChjb2xvbikge1xuICAgICAgICAgICAgdGhpcy5kZWNsKHRva2VucylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAneycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGUodG9rZW5zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd9Jykge1xuICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKVxuICAgICAgICAgIGVuZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICc6Jykge1xuICAgICAgICAgIGNvbG9uID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgIGJyYWNrZXRzLnBvcCgpXG4gICAgICAgIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIGJyYWNrZXQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkpIGVuZCA9IHRydWVcbiAgICBpZiAoYnJhY2tldHMubGVuZ3RoID4gMCkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldClcblxuICAgIGlmIChlbmQgJiYgY29sb24pIHtcbiAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgIHRva2VuID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVswXVxuICAgICAgICBpZiAodG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYmFjayh0b2tlbnMucG9wKCkpXG4gICAgICB9XG4gICAgICB0aGlzLmRlY2wodG9rZW5zKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVua25vd25Xb3JkKHRva2VucylcbiAgICB9XG4gIH1cblxuICBydWxlICh0b2tlbnMpIHtcbiAgICB0b2tlbnMucG9wKClcblxuICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlbnNbMF1bMl0sIHRva2Vuc1swXVszXSlcblxuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKVxuICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2VucylcbiAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gIH1cblxuICBkZWNsICh0b2tlbnMpIHtcbiAgICBsZXQgbm9kZSA9IG5ldyBEZWNsYXJhdGlvbigpXG4gICAgdGhpcy5pbml0KG5vZGUpXG5cbiAgICBsZXQgbGFzdCA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgICBpZiAobGFzdFswXSA9PT0gJzsnKSB7XG4gICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgIHRva2Vucy5wb3AoKVxuICAgIH1cbiAgICBpZiAobGFzdFs0XSkge1xuICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9XG4gICAgfVxuXG4gICAgd2hpbGUgKHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnKSB7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpXG4gICAgICBub2RlLnJhd3MuYmVmb3JlICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIG5vZGUuc291cmNlLnN0YXJ0ID0geyBsaW5lOiB0b2tlbnNbMF1bMl0sIGNvbHVtbjogdG9rZW5zWzBdWzNdIH1cblxuICAgIG5vZGUucHJvcCA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxldCB0eXBlID0gdG9rZW5zWzBdWzBdXG4gICAgICBpZiAodHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBub2RlLnByb3AgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICB9XG5cbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG5cbiAgICBsZXQgdG9rZW5cbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgdG9rZW4gPSB0b2tlbnMuc2hpZnQoKVxuXG4gICAgICBpZiAodG9rZW5bMF0gPT09ICc6Jykge1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRva2VuWzBdID09PSAnd29yZCcgJiYgL1xcdy8udGVzdCh0b2tlblsxXSkpIHtcbiAgICAgICAgICB0aGlzLnVua25vd25Xb3JkKFt0b2tlbl0pXG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobm9kZS5wcm9wWzBdID09PSAnXycgfHwgbm9kZS5wcm9wWzBdID09PSAnKicpIHtcbiAgICAgIG5vZGUucmF3cy5iZWZvcmUgKz0gbm9kZS5wcm9wWzBdXG4gICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSlcbiAgICB9XG4gICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpXG4gICAgdGhpcy5wcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG5cbiAgICBmb3IgKGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJyFpbXBvcnRhbnQnKSB7XG4gICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICBsZXQgc3RyaW5nID0gdGhpcy5zdHJpbmdGcm9tKHRva2VucywgaSlcbiAgICAgICAgc3RyaW5nID0gdGhpcy5zcGFjZXNGcm9tRW5kKHRva2VucykgKyBzdHJpbmdcbiAgICAgICAgaWYgKHN0cmluZyAhPT0gJyAhaW1wb3J0YW50Jykgbm9kZS5yYXdzLmltcG9ydGFudCA9IHN0cmluZ1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnaW1wb3J0YW50Jykge1xuICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMClcbiAgICAgICAgbGV0IHN0ciA9ICcnXG4gICAgICAgIGZvciAobGV0IGogPSBpOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgbGV0IHR5cGUgPSBjYWNoZVtqXVswXVxuICAgICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCAmJiB0eXBlICE9PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0clxuICAgICAgICB9XG4gICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICAgIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJcbiAgICAgICAgICB0b2tlbnMgPSBjYWNoZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJyAmJiB0b2tlblswXSAhPT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yYXcobm9kZSwgJ3ZhbHVlJywgdG9rZW5zKVxuXG4gICAgaWYgKG5vZGUudmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkgdGhpcy5jaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG4gIH1cblxuICBhdHJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgQXRSdWxlKClcbiAgICBub2RlLm5hbWUgPSB0b2tlblsxXS5zbGljZSgxKVxuICAgIGlmIChub2RlLm5hbWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnVubmFtZWRBdHJ1bGUobm9kZSwgdG9rZW4pXG4gICAgfVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG5cbiAgICBsZXQgcHJldlxuICAgIGxldCBzaGlmdFxuICAgIGxldCBsYXN0ID0gZmFsc2VcbiAgICBsZXQgb3BlbiA9IGZhbHNlXG4gICAgbGV0IHBhcmFtcyA9IFtdXG5cbiAgICB3aGlsZSAoIXRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpXG5cbiAgICAgIGlmICh0b2tlblswXSA9PT0gJzsnKSB7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bMl0sIGNvbHVtbjogdG9rZW5bM10gfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW5bMF0gPT09ICd7Jykge1xuICAgICAgICBvcGVuID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblswXSA9PT0gJ30nKSB7XG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNoaWZ0ID0gcGFyYW1zLmxlbmd0aCAtIDFcbiAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XVxuICAgICAgICAgIHdoaWxlIChwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScpIHtcbiAgICAgICAgICAgIHByZXYgPSBwYXJhbXNbLS1zaGlmdF1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMucHVzaCh0b2tlbilcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICAgIGxhc3QgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZS5yYXdzLmJldHdlZW4gPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZChwYXJhbXMpXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcylcbiAgICAgIHRoaXMucmF3KG5vZGUsICdwYXJhbXMnLCBwYXJhbXMpXG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV1cbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG4gICAgICAgIHRoaXMuc3BhY2VzID0gbm9kZS5yYXdzLmJldHdlZW5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gJydcbiAgICAgIG5vZGUucGFyYW1zID0gJydcbiAgICB9XG5cbiAgICBpZiAob3Blbikge1xuICAgICAgbm9kZS5ub2RlcyA9IFtdXG4gICAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gICAgfVxuICB9XG5cbiAgZW5kICh0b2tlbikge1xuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMgJiYgdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb25cbiAgICB9XG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXNcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG5cbiAgICBpZiAodGhpcy5jdXJyZW50LnBhcmVudCkge1xuICAgICAgdGhpcy5jdXJyZW50LnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH1cbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuY3VycmVudC5wYXJlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmV4cGVjdGVkQ2xvc2UodG9rZW4pXG4gICAgfVxuICB9XG5cbiAgZW5kRmlsZSAoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudC5wYXJlbnQpIHRoaXMudW5jbG9zZWRCbG9jaygpXG4gICAgaWYgKHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvblxuICAgIH1cbiAgICB0aGlzLmN1cnJlbnQucmF3cy5hZnRlciA9ICh0aGlzLmN1cnJlbnQucmF3cy5hZnRlciB8fCAnJykgKyB0aGlzLnNwYWNlc1xuICB9XG5cbiAgZnJlZVNlbWljb2xvbiAodG9rZW4pIHtcbiAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMpIHtcbiAgICAgIGxldCBwcmV2ID0gdGhpcy5jdXJyZW50Lm5vZGVzW3RoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggLSAxXVxuICAgICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24pIHtcbiAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzXG4gICAgICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXJzXG5cbiAgaW5pdCAobm9kZSwgbGluZSwgY29sdW1uKSB7XG4gICAgdGhpcy5jdXJyZW50LnB1c2gobm9kZSlcblxuICAgIG5vZGUuc291cmNlID0geyBzdGFydDogeyBsaW5lLCBjb2x1bW4gfSwgaW5wdXQ6IHRoaXMuaW5wdXQgfVxuICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlc1xuICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICBpZiAobm9kZS50eXBlICE9PSAnY29tbWVudCcpIHRoaXMuc2VtaWNvbG9uID0gZmFsc2VcbiAgfVxuXG4gIHJhdyAobm9kZSwgcHJvcCwgdG9rZW5zKSB7XG4gICAgbGV0IHRva2VuLCB0eXBlXG4gICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGhcbiAgICBsZXQgdmFsdWUgPSAnJ1xuICAgIGxldCBjbGVhbiA9IHRydWVcbiAgICBsZXQgbmV4dCwgcHJldlxuICAgIGxldCBwYXR0ZXJuID0gL14oWy58I10pPyhbXFx3XSkrL2lcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXVxuICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgbmV4dFswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChuZXh0WzFdKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSArPSB0b2tlblsxXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsZWFuID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tbWVudCcgfHwgKHR5cGUgPT09ICdzcGFjZScgJiYgaSA9PT0gbGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgY2xlYW4gPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjbGVhbikge1xuICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoKGFsbCwgaSkgPT4gYWxsICsgaVsxXSwgJycpXG4gICAgICBub2RlLnJhd3NbcHJvcF0gPSB7IHZhbHVlLCByYXcgfVxuICAgIH1cbiAgICBub2RlW3Byb3BdID0gdmFsdWVcbiAgfVxuXG4gIHNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCAodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RUb2tlblR5cGVcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbGFzdFRva2VuVHlwZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1bMF1cbiAgICAgIGlmIChsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmIGxhc3RUb2tlblR5cGUgIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCAodG9rZW5zKSB7XG4gICAgbGV0IG5leHRcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbmV4dCA9IHRva2Vuc1swXVswXVxuICAgICAgaWYgKG5leHQgIT09ICdzcGFjZScgJiYgbmV4dCAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgc3BhY2VzICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIHJldHVybiBzcGFjZXNcbiAgfVxuXG4gIHNwYWNlc0Zyb21FbmQgKHRva2Vucykge1xuICAgIGxldCBsYXN0VG9rZW5UeXBlXG4gICAgbGV0IHNwYWNlcyA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdXG4gICAgICBpZiAobGFzdFRva2VuVHlwZSAhPT0gJ3NwYWNlJykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzdHJpbmdGcm9tICh0b2tlbnMsIGZyb20pIHtcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IHRva2Vuc1tpXVsxXVxuICAgIH1cbiAgICB0b2tlbnMuc3BsaWNlKGZyb20sIHRva2Vucy5sZW5ndGggLSBmcm9tKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGNvbG9uICh0b2tlbnMpIHtcbiAgICBsZXQgYnJhY2tldHMgPSAwXG4gICAgbGV0IHRva2VuLCB0eXBlLCBwcmV2XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICcoJykge1xuICAgICAgICBicmFja2V0cyArPSAxXG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gJyknKSB7XG4gICAgICAgIGJyYWNrZXRzIC09IDFcbiAgICAgIH1cbiAgICAgIGlmIChicmFja2V0cyA9PT0gMCAmJiB0eXBlID09PSAnOicpIHtcbiAgICAgICAgaWYgKCFwcmV2KSB7XG4gICAgICAgICAgdGhpcy5kb3VibGVDb2xvbih0b2tlbilcbiAgICAgICAgfSBlbHNlIGlmIChwcmV2WzBdID09PSAnd29yZCcgJiYgcHJldlsxXSA9PT0gJ3Byb2dpZCcpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJldiA9IHRva2VuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gRXJyb3JzXG5cbiAgdW5jbG9zZWRCcmFja2V0IChicmFja2V0KSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5jbG9zZWQgYnJhY2tldCcsIGJyYWNrZXRbMl0sIGJyYWNrZXRbM10pXG4gIH1cblxuICB1bmtub3duV29yZCAodG9rZW5zKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5rbm93biB3b3JkJywgdG9rZW5zWzBdWzJdLCB0b2tlbnNbMF1bM10pXG4gIH1cblxuICB1bmV4cGVjdGVkQ2xvc2UgKHRva2VuKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5leHBlY3RlZCB9JywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgdW5jbG9zZWRCbG9jayAoKSB7XG4gICAgbGV0IHBvcyA9IHRoaXMuY3VycmVudC5zb3VyY2Uuc3RhcnRcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBibG9jaycsIHBvcy5saW5lLCBwb3MuY29sdW1uKVxuICB9XG5cbiAgZG91YmxlQ29sb24gKHRva2VuKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignRG91YmxlIGNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgdW5uYW1lZEF0cnVsZSAobm9kZSwgdG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdBdC1ydWxlIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgfVxuXG4gIHByZWNoZWNrTWlzc2VkU2VtaWNvbG9uICgvKiB0b2tlbnMgKi8pIHtcbiAgICAvLyBIb29rIGZvciBTYWZlIFBhcnNlclxuICB9XG5cbiAgY2hlY2tNaXNzZWRTZW1pY29sb24gKHRva2Vucykge1xuICAgIGxldCBjb2xvbiA9IHRoaXMuY29sb24odG9rZW5zKVxuICAgIGlmIChjb2xvbiA9PT0gZmFsc2UpIHJldHVyblxuXG4gICAgbGV0IGZvdW5kZWQgPSAwXG4gICAgbGV0IHRva2VuXG4gICAgZm9yIChsZXQgaiA9IGNvbG9uIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2pdXG4gICAgICBpZiAodG9rZW5bMF0gIT09ICdzcGFjZScpIHtcbiAgICAgICAgZm91bmRlZCArPSAxXG4gICAgICAgIGlmIChmb3VuZGVkID09PSAyKSBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdNaXNzZWQgc2VtaWNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG59XG4iXSwiZmlsZSI6InBhcnNlci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = '\\''.charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = '\\\\'.charCodeAt(0);\nvar SLASH = '/'.charCodeAt(0);\nvar NEWLINE = '\\n'.charCodeAt(0);\nvar SPACE = ' '.charCodeAt(0);\nvar FEED = '\\f'.charCodeAt(0);\nvar TAB = '\\t'.charCodeAt(0);\nvar CR = '\\r'.charCodeAt(0);\nvar OPEN_SQUARE = '['.charCodeAt(0);\nvar CLOSE_SQUARE = ']'.charCodeAt(0);\nvar OPEN_PARENTHESES = '('.charCodeAt(0);\nvar CLOSE_PARENTHESES = ')'.charCodeAt(0);\nvar OPEN_CURLY = '{'.charCodeAt(0);\nvar CLOSE_CURLY = '}'.charCodeAt(0);\nvar SEMICOLON = ';'.charCodeAt(0);\nvar ASTERISK = '*'.charCodeAt(0);\nvar COLON = ':'.charCodeAt(0);\nvar AT = '@'.charCodeAt(0);\nvar RE_AT_END = /[ \\n\\t\\r\\f{}()'\"\\\\;/[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f(){}:;@!'\"\\\\\\][#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\/(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var css = input.css.valueOf();\n  var ignore = options.ignoreErrors;\n  var code, next, quote, lines, last, content, escape;\n  var nextLine, nextOffset, escaped, escapePos, prev, n, currentToken;\n  var length = css.length;\n  var offset = -1;\n  var line = 1;\n  var pos = 0;\n  var buffer = [];\n  var returned = [];\n\n  function position() {\n    return pos;\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, line, pos - offset);\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n\n    if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n      offset = pos;\n      line += 1;\n    }\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED:\n        next = pos;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n\n          if (code === NEWLINE) {\n            offset = next;\n            line += 1;\n          }\n        } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n        currentToken = ['space', css.slice(pos, next)];\n        pos = next - 1;\n        break;\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES:\n        var controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, line, pos - offset];\n        break;\n\n      case OPEN_PARENTHESES:\n        prev = buffer.length ? buffer.pop()[1] : '';\n        n = css.charCodeAt(pos + 1);\n\n        if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n          next = pos;\n\n          do {\n            escaped = false;\n            next = css.indexOf(')', next + 1);\n\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed('bracket');\n              }\n            }\n\n            escapePos = next;\n\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n\n          currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n          pos = next;\n        } else {\n          next = css.indexOf(')', pos + 1);\n          content = css.slice(pos, next + 1);\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', line, pos - offset];\n          } else {\n            currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n            pos = next;\n          }\n        }\n\n        break;\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE:\n        quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n        next = pos;\n\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed('string');\n            }\n          }\n\n          escapePos = next;\n\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n\n        content = css.slice(pos, next + 1);\n        lines = content.split('\\n');\n        last = lines.length - 1;\n\n        if (last > 0) {\n          nextLine = line + last;\n          nextOffset = next - lines[last].length;\n        } else {\n          nextLine = line;\n          nextOffset = offset;\n        }\n\n        currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n        offset = nextOffset;\n        line = nextLine;\n        pos = next;\n        break;\n\n      case AT:\n        RE_AT_END.lastIndex = pos + 1;\n        RE_AT_END.test(css);\n\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END.lastIndex - 2;\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n        pos = next;\n        break;\n\n      case BACKSLASH:\n        next = pos;\n        escape = true;\n\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1;\n          escape = !escape;\n        }\n\n        code = css.charCodeAt(next + 1);\n\n        if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n          next += 1;\n\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1;\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n        pos = next;\n        break;\n\n      default:\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1;\n\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed('comment');\n            }\n          }\n\n          content = css.slice(pos, next + 1);\n          lines = content.split('\\n');\n          last = lines.length - 1;\n\n          if (last > 0) {\n            nextLine = line + last;\n            nextOffset = next - lines[last].length;\n          } else {\n            nextLine = line;\n            nextOffset = offset;\n          }\n\n          currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n          offset = nextOffset;\n          line = nextLine;\n          pos = next;\n        } else {\n          RE_WORD_END.lastIndex = pos + 1;\n          RE_WORD_END.test(css);\n\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END.lastIndex - 2;\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n          buffer.push(currentToken);\n          pos = next;\n        }\n\n        break;\n    }\n\n    pos++;\n    return currentToken;\n  }\n\n  function back(token) {\n    returned.push(token);\n  }\n\n  return {\n    back: back,\n    nextToken: nextToken,\n    endOfFile: endOfFile,\n    position: position\n  };\n}\n\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJTSU5HTEVfUVVPVEUiLCJjaGFyQ29kZUF0IiwiRE9VQkxFX1FVT1RFIiwiQkFDS1NMQVNIIiwiU0xBU0giLCJORVdMSU5FIiwiU1BBQ0UiLCJGRUVEIiwiVEFCIiwiQ1IiLCJPUEVOX1NRVUFSRSIsIkNMT1NFX1NRVUFSRSIsIk9QRU5fUEFSRU5USEVTRVMiLCJDTE9TRV9QQVJFTlRIRVNFUyIsIk9QRU5fQ1VSTFkiLCJDTE9TRV9DVVJMWSIsIlNFTUlDT0xPTiIsIkFTVEVSSVNLIiwiQ09MT04iLCJBVCIsIlJFX0FUX0VORCIsIlJFX1dPUkRfRU5EIiwiUkVfQkFEX0JSQUNLRVQiLCJSRV9IRVhfRVNDQVBFIiwidG9rZW5pemVyIiwiaW5wdXQiLCJvcHRpb25zIiwiY3NzIiwidmFsdWVPZiIsImlnbm9yZSIsImlnbm9yZUVycm9ycyIsImNvZGUiLCJuZXh0IiwicXVvdGUiLCJsaW5lcyIsImxhc3QiLCJjb250ZW50IiwiZXNjYXBlIiwibmV4dExpbmUiLCJuZXh0T2Zmc2V0IiwiZXNjYXBlZCIsImVzY2FwZVBvcyIsInByZXYiLCJuIiwiY3VycmVudFRva2VuIiwibGVuZ3RoIiwib2Zmc2V0IiwibGluZSIsInBvcyIsImJ1ZmZlciIsInJldHVybmVkIiwicG9zaXRpb24iLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsIm9wdHMiLCJwb3AiLCJpZ25vcmVVbmNsb3NlZCIsInNsaWNlIiwiY29udHJvbENoYXIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJpbmRleE9mIiwidGVzdCIsInNwbGl0IiwibGFzdEluZGV4IiwiY2hhckF0IiwicHVzaCIsImJhY2siLCJ0b2tlbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQU1BLFlBQVksR0FBRyxLQUFLQyxVQUFMLENBQWdCLENBQWhCLENBQXJCO0FBQ0EsSUFBTUMsWUFBWSxHQUFHLElBQUlELFVBQUosQ0FBZSxDQUFm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LElBQVQsQ0FBZUMsS0FBZixFQUFzQjtBQUNwQnJCLElBQUFBLFFBQVEsQ0FBQ21CLElBQVQsQ0FBY0UsS0FBZDtBQUNEOztBQUVELFNBQU87QUFDTEQsSUFBQUEsSUFBSSxFQUFKQSxJQURLO0FBRUxkLElBQUFBLFNBQVMsRUFBVEEsU0FGSztBQUdMRCxJQUFBQSxTQUFTLEVBQVRBLFNBSEs7QUFJTEosSUFBQUEsUUFBUSxFQUFSQTtBQUpLLEdBQVA7QUFNRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSA9ICdcXCcnLmNoYXJDb2RlQXQoMClcbmNvbnN0IERPVUJMRV9RVU9URSA9ICdcIicuY2hhckNvZGVBdCgwKVxuY29uc3QgQkFDS1NMQVNIID0gJ1xcXFwnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNMQVNIID0gJy8nLmNoYXJDb2RlQXQoMClcbmNvbnN0IE5FV0xJTkUgPSAnXFxuJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTUEFDRSA9ICcgJy5jaGFyQ29kZUF0KDApXG5jb25zdCBGRUVEID0gJ1xcZicuY2hhckNvZGVBdCgwKVxuY29uc3QgVEFCID0gJ1xcdCcuY2hhckNvZGVBdCgwKVxuY29uc3QgQ1IgPSAnXFxyJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX1NRVUFSRSA9ICdbJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9TUVVBUkUgPSAnXScuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklTSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5cbmNvbnN0IFJFX0FUX0VORCA9IC9bIFxcblxcdFxcclxcZnt9KCknXCJcXFxcOy9bXFxdI10vZ1xuY29uc3QgUkVfV09SRF9FTkQgPSAvWyBcXG5cXHRcXHJcXGYoKXt9OjtAISdcIlxcXFxcXF1bI118XFwvKD89XFwqKS9nXG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFwvKFwiJ1xcbl0vXG5jb25zdCBSRV9IRVhfRVNDQVBFID0gL1thLWYwLTldL2lcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemVyIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjc3MgPSBpbnB1dC5jc3MudmFsdWVPZigpXG4gIGxldCBpZ25vcmUgPSBvcHRpb25zLmlnbm9yZUVycm9yc1xuXG4gIGxldCBjb2RlLCBuZXh0LCBxdW90ZSwgbGluZXMsIGxhc3QsIGNvbnRlbnQsIGVzY2FwZVxuICBsZXQgbmV4dExpbmUsIG5leHRPZmZzZXQsIGVzY2FwZWQsIGVzY2FwZVBvcywgcHJldiwgbiwgY3VycmVudFRva2VuXG5cbiAgbGV0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuICBsZXQgYnVmZmVyID0gW11cbiAgbGV0IHJldHVybmVkID0gW11cblxuICBmdW5jdGlvbiBwb3NpdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgZnVuY3Rpb24gdW5jbG9zZWQgKHdoYXQpIHtcbiAgICB0aHJvdyBpbnB1dC5lcnJvcignVW5jbG9zZWQgJyArIHdoYXQsIGxpbmUsIHBvcyAtIG9mZnNldClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mRmlsZSAoKSB7XG4gICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBuZXh0VG9rZW4gKG9wdHMpIHtcbiAgICBpZiAocmV0dXJuZWQubGVuZ3RoKSByZXR1cm4gcmV0dXJuZWQucG9wKClcbiAgICBpZiAocG9zID49IGxlbmd0aCkgcmV0dXJuXG5cbiAgICBsZXQgaWdub3JlVW5jbG9zZWQgPSBvcHRzID8gb3B0cy5pZ25vcmVVbmNsb3NlZCA6IGZhbHNlXG5cbiAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKVxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCB8fFxuICAgICAgKGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpICE9PSBORVdMSU5FKVxuICAgICkge1xuICAgICAgb2Zmc2V0ID0gcG9zXG4gICAgICBsaW5lICs9IDFcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICBjYXNlIFRBQjpcbiAgICAgIGNhc2UgQ1I6XG4gICAgICBjYXNlIEZFRUQ6XG4gICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgZG8ge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KVxuICAgICAgICAgIGlmIChjb2RlID09PSBORVdMSU5FKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBuZXh0XG4gICAgICAgICAgICBsaW5lICs9IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgIGNvZGUgPT09IFNQQUNFIHx8XG4gICAgICAgICAgY29kZSA9PT0gTkVXTElORSB8fFxuICAgICAgICAgIGNvZGUgPT09IFRBQiB8fFxuICAgICAgICAgIGNvZGUgPT09IENSIHx8XG4gICAgICAgICAgY29kZSA9PT0gRkVFRFxuICAgICAgICApXG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXVxuICAgICAgICBwb3MgPSBuZXh0IC0gMVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fU1FVQVJFOlxuICAgICAgY2FzZSBDTE9TRV9TUVVBUkU6XG4gICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICBjYXNlIENMT1NFX0NVUkxZOlxuICAgICAgY2FzZSBDT0xPTjpcbiAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgbGV0IGNvbnRyb2xDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbY29udHJvbENoYXIsIGNvbnRyb2xDaGFyLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgcHJldiA9IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIucG9wKClbMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgbiAhPT0gU0lOR0xFX1FVT1RFICYmIG4gIT09IERPVUJMRV9RVU9URSAmJlxuICAgICAgICAgIG4gIT09IFNQQUNFICYmIG4gIT09IE5FV0xJTkUgJiYgbiAhPT0gVEFCICYmXG4gICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUlxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlXG4gICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSlcbiAgICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2JyYWNrZXQnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMVxuICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChlc2NhcGVkKVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcpJywgcG9zICsgMSlcbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG5cbiAgICAgICAgICBpZiAobmV4dCA9PT0gLTEgfHwgUkVfQkFEX0JSQUNLRVQudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWycoJywgJygnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgRE9VQkxFX1FVT1RFOlxuICAgICAgICBxdW90ZSA9IGNvZGUgPT09IFNJTkdMRV9RVU9URSA/ICdcXCcnIDogJ1wiJ1xuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YocXVvdGUsIG5leHQgKyAxKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZSB8fCBpZ25vcmVVbmNsb3NlZCkge1xuICAgICAgICAgICAgICBuZXh0ID0gcG9zICsgMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5jbG9zZWQoJ3N0cmluZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHRcbiAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgZXNjYXBlUG9zIC09IDFcbiAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoZXNjYXBlZClcblxuICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG4gICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICBpZiAobGFzdCA+IDApIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgIF1cblxuICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0XG4gICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQVQ6XG4gICAgICAgIFJFX0FUX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcylcbiAgICAgICAgaWYgKFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDApIHtcbiAgICAgICAgICBuZXh0ID0gY3NzLmxlbmd0aCAtIDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIHdoaWxlIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGVzY2FwZSA9ICFlc2NhcGVcbiAgICAgICAgfVxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpXG4gICAgICAgIGlmIChcbiAgICAgICAgICBlc2NhcGUgJiZcbiAgICAgICAgICBjb2RlICE9PSBTTEFTSCAmJlxuICAgICAgICAgIGNvZGUgIT09IFNQQUNFICYmXG4gICAgICAgICAgY29kZSAhPT0gTkVXTElORSAmJlxuICAgICAgICAgIGNvZGUgIT09IFRBQiAmJlxuICAgICAgICAgIGNvZGUgIT09IENSICYmXG4gICAgICAgICAgY29kZSAhPT0gRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBpZiAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpKSB7XG4gICAgICAgICAgICB3aGlsZSAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCArIDEpKSkge1xuICAgICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFKSB7XG4gICAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcqLycsIHBvcyArIDIpICsgMVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1bmNsb3NlZCgnY29tbWVudCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgICBsYXN0ID0gbGluZXMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBvZmZzZXRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgXVxuXG4gICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfV09SRF9FTkQudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIGJ1ZmZlci5wdXNoKGN1cnJlbnRUb2tlbilcblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zKytcbiAgICByZXR1cm4gY3VycmVudFRva2VuXG4gIH1cblxuICBmdW5jdGlvbiBiYWNrICh0b2tlbikge1xuICAgIHJldHVybmVkLnB1c2godG9rZW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJhY2ssXG4gICAgbmV4dFRva2VuLFxuICAgIGVuZE9mRmlsZSxcbiAgICBwb3NpdGlvblxuICB9XG59XG4iXSwiZmlsZSI6InRva2VuaXplLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _previousMap = _interopRequireDefault(require(\"./previous-map\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 sequence = 0;\n/**\n * Represents the source CSS.\n *\n * @example\n * const root  = postcss.parse(css, { from: file })\n * const input = root.source.input\n */\n\nvar Input = /*#__PURE__*/function () {\n  /**\n   * @param {string} css    Input CSS source.\n   * @param {object} [opts] {@link Processor#process} options.\n   */\n  function Input(css, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (css === null || typeof css === 'undefined' || typeof css === 'object' && !css.toString) {\n      throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n    }\n    /**\n     * Input CSS source\n     *\n     * @type {string}\n     *\n     * @example\n     * const input = postcss.parse('a{}', { from: file }).input\n     * input.css //=> \"a{}\"\n     */\n\n\n    this.css = css.toString();\n\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\\uFFFE\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n\n    if (opts.from) {\n      if (/^\\w+:\\/\\//.test(opts.from) || _path.default.isAbsolute(opts.from)) {\n        /**\n         * The absolute path to the CSS source file defined\n         * with the `from` option.\n         *\n         * @type {string}\n         *\n         * @example\n         * const root = postcss.parse(css, { from: 'a.css' })\n         * root.source.input.file //=> '/home/ai/a.css'\n         */\n        this.file = opts.from;\n      } else {\n        this.file = _path.default.resolve(opts.from);\n      }\n    }\n\n    var map = new _previousMap.default(this.css, opts);\n\n    if (map.text) {\n      /**\n       * The input source map passed from a compilation step before PostCSS\n       * (for example, from Sass compiler).\n       *\n       * @type {PreviousMap}\n       *\n       * @example\n       * root.source.input.map.consumer().sources //=> ['a.sass']\n       */\n      this.map = map;\n      var file = map.consumer().file;\n      if (!this.file && file) this.file = this.mapResolve(file);\n    }\n\n    if (!this.file) {\n      sequence += 1;\n      /**\n       * The unique ID of the CSS source. It will be created if `from` option\n       * is not provided (because PostCSS does not know the file path).\n       *\n       * @type {string}\n       *\n       * @example\n       * const root = postcss.parse(css)\n       * root.source.input.file //=> undefined\n       * root.source.input.id   //=> \"<input css 1>\"\n       */\n\n      this.id = '<input css ' + sequence + '>';\n    }\n\n    if (this.map) this.map.file = this.from;\n  }\n\n  var _proto = Input.prototype;\n\n  _proto.error = function error(message, line, column, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    var result;\n    var origin = this.origin(line, column);\n\n    if (origin) {\n      result = new _cssSyntaxError.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n    } else {\n      result = new _cssSyntaxError.default(message, line, column, this.css, this.file, opts.plugin);\n    }\n\n    result.input = {\n      line: line,\n      column: column,\n      source: this.css\n    };\n    if (this.file) result.input.file = this.file;\n    return result;\n  }\n  /**\n   * Reads the input source map and returns a symbol position\n   * in the input source (e.g., in a Sass file that was compiled\n   * to CSS before being passed to PostCSS).\n   *\n   * @param {number} line   Line in input CSS.\n   * @param {number} column Column in input CSS.\n   *\n   * @return {filePosition} Position in input source.\n   *\n   * @example\n   * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n   */\n  ;\n\n  _proto.origin = function origin(line, column) {\n    if (!this.map) return false;\n    var consumer = this.map.consumer();\n    var from = consumer.originalPositionFor({\n      line: line,\n      column: column\n    });\n    if (!from.source) return false;\n    var result = {\n      file: this.mapResolve(from.source),\n      line: from.line,\n      column: from.column\n    };\n    var source = consumer.sourceContentFor(from.source);\n    if (source) result.source = source;\n    return result;\n  };\n\n  _proto.mapResolve = function mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n\n    return _path.default.resolve(this.map.consumer().sourceRoot || '.', file);\n  }\n  /**\n   * The CSS source identifier. Contains {@link Input#file} if the user\n   * set the `from` option, or {@link Input#id} if they did not.\n   *\n   * @type {string}\n   *\n   * @example\n   * const root = postcss.parse(css, { from: 'a.css' })\n   * root.source.input.from //=> \"/home/ai/a.css\"\n   *\n   * const root = postcss.parse(css)\n   * root.source.input.from //=> \"<input css 1>\"\n   */\n  ;\n\n  _createClass(Input, [{\n    key: \"from\",\n    get: function get() {\n      return this.file || this.id;\n    }\n  }]);\n\n  return Input;\n}();\n\nvar _default = Input;\n/**\n * @typedef  {object} filePosition\n * @property {string} file   Path to file.\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJoYXNCT00iLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwicGF0aCIsImlzQWJzb2x1dGUiLCJmaWxlIiwicmVzb2x2ZSIsIm1hcCIsIlByZXZpb3VzTWFwIiwidGV4dCIsImNvbnN1bWVyIiwibWFwUmVzb2x2ZSIsImlkIiwiZXJyb3IiLCJtZXNzYWdlIiwibGluZSIsImNvbHVtbiIsInJlc3VsdCIsIm9yaWdpbiIsIkNzc1N5bnRheEVycm9yIiwic291cmNlIiwicGx1Z2luIiwiaW5wdXQiLCJvcmlnaW5hbFBvc2l0aW9uRm9yIiwic291cmNlQ29udGVudEZvciIsInNvdXJjZVJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLENBQWY7QUFFQTs7Ozs7Ozs7SUFPTUMsSztBQUNKOzs7O0FBSUEsaUJBQWFDLEdBQWIsRUFBa0JDLElBQWxCLEVBQThCO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUM1QixRQUNFRCxHQUFHLEtBQUssSUFBUixJQUNBLE9BQU9BLEdBQVAsS0FBZSxXQURmLElBRUMsT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsQ0FBQ0EsR0FBRyxDQUFDRSxRQUhuQyxFQUlFO0FBQ0EsWUFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLFNBQUtBLEdBQUwsR0FBV0EsR0FBRyxDQUFDRSxRQUFKLEVBQVg7O0FBRUEsUUFBSSxLQUFLRixHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoQixJQUE0QixLQUFLQSxHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoRCxFQUEwRDtBQUN4RCxXQUFLSSxNQUFMLEdBQWMsSUFBZDtBQUNBLFdBQUtKLEdBQUwsR0FBVyxLQUFLQSxHQUFMLENBQVNLLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDRCxLQUhELE1BR087QUFDTCxXQUFLRCxNQUFMLEdBQWMsS0FBZDtBQUNEOztBQUVELFFBQUlILElBQUksQ0FBQ0ssSUFBVCxFQUFlO0FBQ2IsVUFBSSxZQUFZQyxJQUFaLENBQWlCTixJQUFJLENBQUNLLElBQXRCLEtBQStCRSxjQUFLQyxVQUFMLENBQWdCUixJQUFJLENBQUNLLElBQXJCLENBQW5DLEVBQStEO0FBQzdEOzs7Ozs7Ozs7O0FBVUEsYUFBS0ksSUFBTCxHQUFZVCxJQUFJLENBQUNLLElBQWpCO0FBQ0QsT0FaRCxNQVlPO0FBQ0wsYUFBS0ksSUFBTCxHQUFZRixjQUFLRyxPQUFMLENBQWFWLElBQUksQ0FBQ0ssSUFBbEIsQ0FBWjtBQUNEO0FBQ0Y7O0FBRUQsUUFBSU0sR0FBRyxHQUFHLElBQUlDLG9CQUFKLENBQWdCLEtBQUtiLEdBQXJCLEVBQTBCQyxJQUExQixDQUFWOztBQUNBLFFBQUlXLEdBQUcsQ0FBQ0UsSUFBUixFQUFjO0FBQ1o7Ozs7Ozs7OztBQVNBLFdBQUtGLEdBQUwsR0FBV0EsR0FBWDtBQUNBLFVBQUlGLElBQUksR0FBR0UsR0FBRyxDQUFDRyxRQUFKLEdBQWVMLElBQTFCO0FBQ0EsVUFBSSxDQUFDLEtBQUtBLElBQU4sSUFBY0EsSUFBbEIsRUFBd0IsS0FBS0EsSUFBTCxHQUFZLEtBQUtNLFVBQUwsQ0FBZ0JOLElBQWhCLENBQVo7QUFDekI7O0FBRUQsUUFBSSxDQUFDLEtBQUtBLElBQVYsRUFBZ0I7QUFDZFosTUFBQUEsUUFBUSxJQUFJLENBQVo7QUFDQTs7Ozs7Ozs7Ozs7O0FBV0EsV0FBS21CLEVBQUwsR0FBVSxnQkFBZ0JuQixRQUFoQixHQUEyQixHQUFyQztBQUNEOztBQUNELFFBQUksS0FBS2MsR0FBVCxFQUFjLEtBQUtBLEdBQUwsQ0FBU0YsSUFBVCxHQUFnQixLQUFLSixJQUFyQjtBQUNmOzs7O1NBRURZLEssR0FBQSxlQUFPQyxPQUFQLEVBQWdCQyxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJwQixJQUE5QixFQUEwQztBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDeEMsUUFBSXFCLE1BQUo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLEVBQWtCQyxNQUFsQixDQUFiOztBQUNBLFFBQUlFLE1BQUosRUFBWTtBQUNWRCxNQUFBQSxNQUFNLEdBQUcsSUFBSUUsdUJBQUosQ0FDUEwsT0FETyxFQUNFSSxNQUFNLENBQUNILElBRFQsRUFDZUcsTUFBTSxDQUFDRixNQUR0QixFQUVQRSxNQUFNLENBQUNFLE1BRkEsRUFFUUYsTUFBTSxDQUFDYixJQUZmLEVBRXFCVCxJQUFJLENBQUN5QixNQUYxQixDQUFUO0FBSUQsS0FMRCxNQUtPO0FBQ0xKLE1BQUFBLE1BQU0sR0FBRyxJQUFJRSx1QkFBSixDQUNQTCxPQURPLEVBQ0VDLElBREYsRUFDUUMsTUFEUixFQUNnQixLQUFLckIsR0FEckIsRUFDMEIsS0FBS1UsSUFEL0IsRUFDcUNULElBQUksQ0FBQ3lCLE1BRDFDLENBQVQ7QUFFRDs7QUFFREosSUFBQUEsTUFBTSxDQUFDSyxLQUFQLEdBQWU7QUFBRVAsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkEsTUFBUjtBQUFnQkksTUFBQUEsTUFBTSxFQUFFLEtBQUt6QjtBQUE3QixLQUFmO0FBQ0EsUUFBSSxLQUFLVSxJQUFULEVBQWVZLE1BQU0sQ0FBQ0ssS0FBUCxDQUFhakIsSUFBYixHQUFvQixLQUFLQSxJQUF6QjtBQUVmLFdBQU9ZLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7U0FhQUMsTSxHQUFBLGdCQUFRSCxJQUFSLEVBQWNDLE1BQWQsRUFBc0I7QUFDcEIsUUFBSSxDQUFDLEtBQUtULEdBQVYsRUFBZSxPQUFPLEtBQVA7QUFDZixRQUFJRyxRQUFRLEdBQUcsS0FBS0gsR0FBTCxDQUFTRyxRQUFULEVBQWY7QUFFQSxRQUFJVCxJQUFJLEdBQUdTLFFBQVEsQ0FBQ2EsbUJBQVQsQ0FBNkI7QUFBRVIsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkE7QUFBUixLQUE3QixDQUFYO0FBQ0EsUUFBSSxDQUFDZixJQUFJLENBQUNtQixNQUFWLEVBQWtCLE9BQU8sS0FBUDtBQUVsQixRQUFJSCxNQUFNLEdBQUc7QUFDWFosTUFBQUEsSUFBSSxFQUFFLEtBQUtNLFVBQUwsQ0FBZ0JWLElBQUksQ0FBQ21CLE1BQXJCLENBREs7QUFFWEwsTUFBQUEsSUFBSSxFQUFFZCxJQUFJLENBQUNjLElBRkE7QUFHWEMsTUFBQUEsTUFBTSxFQUFFZixJQUFJLENBQUNlO0FBSEYsS0FBYjtBQU1BLFFBQUlJLE1BQU0sR0FBR1YsUUFBUSxDQUFDYyxnQkFBVCxDQUEwQnZCLElBQUksQ0FBQ21CLE1BQS9CLENBQWI7QUFDQSxRQUFJQSxNQUFKLEVBQVlILE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkEsTUFBaEI7QUFFWixXQUFPSCxNQUFQO0FBQ0QsRzs7U0FFRE4sVSxHQUFBLG9CQUFZTixJQUFaLEVBQWtCO0FBQ2hCLFFBQUksWUFBWUgsSUFBWixDQUFpQkcsSUFBakIsQ0FBSixFQUE0QjtBQUMxQixhQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT0YsY0FBS0csT0FBTCxDQUFhLEtBQUtDLEdBQUwsQ0FBU0csUUFBVCxHQUFvQmUsVUFBcEIsSUFBa0MsR0FBL0MsRUFBb0RwQixJQUFwRCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYVk7QUFDVixhQUFPLEtBQUtBLElBQUwsSUFBYSxLQUFLTyxFQUF6QjtBQUNEOzs7Ozs7ZUFHWWxCLEs7QUFFZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InXG5pbXBvcnQgUHJldmlvdXNNYXAgZnJvbSAnLi9wcmV2aW91cy1tYXAnXG5cbmxldCBzZXF1ZW5jZSA9IDBcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzb3VyY2UgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ICA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206IGZpbGUgfSlcbiAqIGNvbnN0IGlucHV0ID0gcm9vdC5zb3VyY2UuaW5wdXRcbiAqL1xuY2xhc3MgSW5wdXQge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICBJbnB1dCBDU1Mgc291cmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gb3B0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAoXG4gICAgICBjc3MgPT09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjc3MgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAodHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgIWNzcy50b1N0cmluZylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUG9zdENTUyByZWNlaXZlZCAkeyBjc3MgfSBpbnN0ZWFkIG9mIENTUyBzdHJpbmdgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElucHV0IENTUyBzb3VyY2VcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGlucHV0ID0gcG9zdGNzcy5wYXJzZSgnYXt9JywgeyBmcm9tOiBmaWxlIH0pLmlucHV0XG4gICAgICogaW5wdXQuY3NzIC8vPT4gXCJhe31cIlxuICAgICAqL1xuICAgIHRoaXMuY3NzID0gY3NzLnRvU3RyaW5nKClcblxuICAgIGlmICh0aGlzLmNzc1swXSA9PT0gJ1xcdUZFRkYnIHx8IHRoaXMuY3NzWzBdID09PSAnXFx1RkZGRScpIHtcbiAgICAgIHRoaXMuaGFzQk9NID0gdHJ1ZVxuICAgICAgdGhpcy5jc3MgPSB0aGlzLmNzcy5zbGljZSgxKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhc0JPTSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZnJvbSkge1xuICAgICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3Qob3B0cy5mcm9tKSB8fCBwYXRoLmlzQWJzb2x1dGUob3B0cy5mcm9tKSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIENTUyBzb3VyY2UgZmlsZSBkZWZpbmVkXG4gICAgICAgICAqIHdpdGggdGhlIGBmcm9tYCBvcHRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZpbGUgLy89PiAnL2hvbWUvYWkvYS5jc3MnXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZpbGUgPSBvcHRzLmZyb21cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsZSA9IHBhdGgucmVzb2x2ZShvcHRzLmZyb20pXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG1hcCA9IG5ldyBQcmV2aW91c01hcCh0aGlzLmNzcywgb3B0cylcbiAgICBpZiAobWFwLnRleHQpIHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGlucHV0IHNvdXJjZSBtYXAgcGFzc2VkIGZyb20gYSBjb21waWxhdGlvbiBzdGVwIGJlZm9yZSBQb3N0Q1NTXG4gICAgICAgKiAoZm9yIGV4YW1wbGUsIGZyb20gU2FzcyBjb21waWxlcikuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge1ByZXZpb3VzTWFwfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5tYXAuY29uc3VtZXIoKS5zb3VyY2VzIC8vPT4gWydhLnNhc3MnXVxuICAgICAgICovXG4gICAgICB0aGlzLm1hcCA9IG1hcFxuICAgICAgbGV0IGZpbGUgPSBtYXAuY29uc3VtZXIoKS5maWxlXG4gICAgICBpZiAoIXRoaXMuZmlsZSAmJiBmaWxlKSB0aGlzLmZpbGUgPSB0aGlzLm1hcFJlc29sdmUoZmlsZSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmlsZSkge1xuICAgICAgc2VxdWVuY2UgKz0gMVxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdW5pcXVlIElEIG9mIHRoZSBDU1Mgc291cmNlLiBJdCB3aWxsIGJlIGNyZWF0ZWQgaWYgYGZyb21gIG9wdGlvblxuICAgICAgICogaXMgbm90IHByb3ZpZGVkIChiZWNhdXNlIFBvc3RDU1MgZG9lcyBub3Qga25vdyB0aGUgZmlsZSBwYXRoKS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5maWxlIC8vPT4gdW5kZWZpbmVkXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5pZCAgIC8vPT4gXCI8aW5wdXQgY3NzIDE+XCJcbiAgICAgICAqL1xuICAgICAgdGhpcy5pZCA9ICc8aW5wdXQgY3NzICcgKyBzZXF1ZW5jZSArICc+J1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXApIHRoaXMubWFwLmZpbGUgPSB0aGlzLmZyb21cbiAgfVxuXG4gIGVycm9yIChtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIG9wdHMgPSB7IH0pIHtcbiAgICBsZXQgcmVzdWx0XG4gICAgbGV0IG9yaWdpbiA9IHRoaXMub3JpZ2luKGxpbmUsIGNvbHVtbilcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsIG9yaWdpbi5saW5lLCBvcmlnaW4uY29sdW1uLFxuICAgICAgICBvcmlnaW4uc291cmNlLCBvcmlnaW4uZmlsZSwgb3B0cy5wbHVnaW5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gbmV3IENzc1N5bnRheEVycm9yKFxuICAgICAgICBtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHRoaXMuY3NzLCB0aGlzLmZpbGUsIG9wdHMucGx1Z2luKVxuICAgIH1cblxuICAgIHJlc3VsdC5pbnB1dCA9IHsgbGluZSwgY29sdW1uLCBzb3VyY2U6IHRoaXMuY3NzIH1cbiAgICBpZiAodGhpcy5maWxlKSByZXN1bHQuaW5wdXQuZmlsZSA9IHRoaXMuZmlsZVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBpbnB1dCBzb3VyY2UgbWFwIGFuZCByZXR1cm5zIGEgc3ltYm9sIHBvc2l0aW9uXG4gICAqIGluIHRoZSBpbnB1dCBzb3VyY2UgKGUuZy4sIGluIGEgU2FzcyBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkXG4gICAqIHRvIENTUyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIFBvc3RDU1MpLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGluZSAgIExpbmUgaW4gaW5wdXQgQ1NTLlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uIENvbHVtbiBpbiBpbnB1dCBDU1MuXG4gICAqXG4gICAqIEByZXR1cm4ge2ZpbGVQb3NpdGlvbn0gUG9zaXRpb24gaW4gaW5wdXQgc291cmNlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LnNvdXJjZS5pbnB1dC5vcmlnaW4oMSwgMSkgLy89PiB7IGZpbGU6ICdhLmNzcycsIGxpbmU6IDMsIGNvbHVtbjogMSB9XG4gICAqL1xuICBvcmlnaW4gKGxpbmUsIGNvbHVtbikge1xuICAgIGlmICghdGhpcy5tYXApIHJldHVybiBmYWxzZVxuICAgIGxldCBjb25zdW1lciA9IHRoaXMubWFwLmNvbnN1bWVyKClcblxuICAgIGxldCBmcm9tID0gY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7IGxpbmUsIGNvbHVtbiB9KVxuICAgIGlmICghZnJvbS5zb3VyY2UpIHJldHVybiBmYWxzZVxuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIGZpbGU6IHRoaXMubWFwUmVzb2x2ZShmcm9tLnNvdXJjZSksXG4gICAgICBsaW5lOiBmcm9tLmxpbmUsXG4gICAgICBjb2x1bW46IGZyb20uY29sdW1uXG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZSA9IGNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoZnJvbS5zb3VyY2UpXG4gICAgaWYgKHNvdXJjZSkgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgbWFwUmVzb2x2ZSAoZmlsZSkge1xuICAgIGlmICgvXlxcdys6XFwvXFwvLy50ZXN0KGZpbGUpKSB7XG4gICAgICByZXR1cm4gZmlsZVxuICAgIH1cbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMubWFwLmNvbnN1bWVyKCkuc291cmNlUm9vdCB8fCAnLicsIGZpbGUpXG4gIH1cblxuICAvKipcbiAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAqIHNldCB0aGUgYGZyb21gIG9wdGlvbiwgb3Ige0BsaW5rIElucHV0I2lkfSBpZiB0aGV5IGRpZCBub3QuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIi9ob21lL2FpL2EuY3NzXCJcbiAgICpcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzKVxuICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCI8aW5wdXQgY3NzIDE+XCJcbiAgICovXG4gIGdldCBmcm9tICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnB1dFxuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgUGF0aCB0byBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpbmUgICBTb3VyY2UgbGluZSBpbiBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiBTb3VyY2UgY29sdW1uIGluIGZpbGUuXG4gKi9cbiJdLCJmaWxlIjoiaW5wdXQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _sourceMap = _interopRequireDefault(require(\"source-map\"));\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nvar _fs = _interopRequireDefault(require(\"fs\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString();\n  } else {\n    return window.atob(str);\n  }\n}\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' })\n * root.input.map //=> PreviousMap\n */\n\n\nvar PreviousMap = /*#__PURE__*/function () {\n  /**\n   * @param {string}         css    Input CSS source.\n   * @param {processOptions} [opts] {@link Processor#process} options.\n   */\n  function PreviousMap(css, opts) {\n    this.loadAnnotation(css);\n    /**\n     * Was source map inlined by data-uri to input CSS.\n     *\n     * @type {boolean}\n     */\n\n    this.inline = this.startWith(this.annotation, 'data:');\n    var prev = opts.map ? opts.map.prev : undefined;\n    var text = this.loadMap(opts.from, prev);\n    if (text) this.text = text;\n  }\n  /**\n   * Create a instance of `SourceMapGenerator` class\n   * from the `source-map` library to work with source map information.\n   *\n   * It is lazy method, so it will create object only on first call\n   * and then it will use cache.\n   *\n   * @return {SourceMapGenerator} Object with source map information.\n   */\n\n\n  var _proto = PreviousMap.prototype;\n\n  _proto.consumer = function consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new _sourceMap.default.SourceMapConsumer(this.text);\n    }\n\n    return this.consumerCache;\n  }\n  /**\n   * Does source map contains `sourcesContent` with input source text.\n   *\n   * @return {boolean} Is `sourcesContent` present.\n   */\n  ;\n\n  _proto.withContent = function withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  };\n\n  _proto.startWith = function startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  };\n\n  _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n    return sourceMapString.match(/\\/\\*\\s*# sourceMappingURL=((?:(?!sourceMappingURL=).)*)\\*\\//)[1].trim();\n  };\n\n  _proto.loadAnnotation = function loadAnnotation(css) {\n    var annotations = css.match(/\\/\\*\\s*# sourceMappingURL=(?:(?!sourceMappingURL=).)*\\*\\//gm);\n\n    if (annotations && annotations.length > 0) {\n      // Locate the last sourceMappingURL to avoid picking up\n      // sourceMappingURLs from comments, strings, etc.\n      var lastAnnotation = annotations[annotations.length - 1];\n\n      if (lastAnnotation) {\n        this.annotation = this.getAnnotationURL(lastAnnotation);\n      }\n    }\n  };\n\n  _proto.decodeInline = function decodeInline(text) {\n    var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    var baseUri = /^data:application\\/json;base64,/;\n    var uri = 'data:application/json,';\n\n    if (this.startWith(text, uri)) {\n      return decodeURIComponent(text.substr(uri.length));\n    }\n\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length));\n    }\n\n    var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error('Unsupported source map encoding ' + encoding);\n  };\n\n  _proto.loadMap = function loadMap(file, prev) {\n    if (prev === false) return false;\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev;\n      } else if (typeof prev === 'function') {\n        var prevPath = prev(file);\n\n        if (prevPath && _fs.default.existsSync && _fs.default.existsSync(prevPath)) {\n          return _fs.default.readFileSync(prevPath, 'utf-8').toString().trim();\n        } else {\n          throw new Error('Unable to load previous source map: ' + prevPath.toString());\n        }\n      } else if (prev instanceof _sourceMap.default.SourceMapConsumer) {\n        return _sourceMap.default.SourceMapGenerator.fromSourceMap(prev).toString();\n      } else if (prev instanceof _sourceMap.default.SourceMapGenerator) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error('Unsupported previous source map format: ' + prev.toString());\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      var map = this.annotation;\n      if (file) map = _path.default.join(_path.default.dirname(file), map);\n      this.root = _path.default.dirname(map);\n\n      if (_fs.default.existsSync && _fs.default.existsSync(map)) {\n        return _fs.default.readFileSync(map, 'utf-8').toString().trim();\n      } else {\n        return false;\n      }\n    }\n  };\n\n  _proto.isMap = function isMap(map) {\n    if (typeof map !== 'object') return false;\n    return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n  };\n\n  return PreviousMap;\n}();\n\nvar _default = PreviousMap;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsIndpbmRvdyIsImF0b2IiLCJQcmV2aW91c01hcCIsImNzcyIsIm9wdHMiLCJsb2FkQW5ub3RhdGlvbiIsImlubGluZSIsInN0YXJ0V2l0aCIsImFubm90YXRpb24iLCJwcmV2IiwibWFwIiwidW5kZWZpbmVkIiwidGV4dCIsImxvYWRNYXAiLCJjb25zdW1lciIsImNvbnN1bWVyQ2FjaGUiLCJtb3ppbGxhIiwiU291cmNlTWFwQ29uc3VtZXIiLCJ3aXRoQ29udGVudCIsInNvdXJjZXNDb250ZW50IiwibGVuZ3RoIiwic3RyaW5nIiwic3RhcnQiLCJzdWJzdHIiLCJnZXRBbm5vdGF0aW9uVVJMIiwic291cmNlTWFwU3RyaW5nIiwibWF0Y2giLCJ0cmltIiwiYW5ub3RhdGlvbnMiLCJsYXN0QW5ub3RhdGlvbiIsImRlY29kZUlubGluZSIsImJhc2VDaGFyc2V0VXJpIiwiYmFzZVVyaSIsInVyaSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJSZWdFeHAiLCJsYXN0TWF0Y2giLCJlbmNvZGluZyIsIkVycm9yIiwiZmlsZSIsInByZXZQYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiU291cmNlTWFwR2VuZXJhdG9yIiwiZnJvbVNvdXJjZU1hcCIsImlzTWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGgiLCJqb2luIiwiZGlybmFtZSIsInJvb3QiLCJtYXBwaW5ncyIsIl9tYXBwaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBcUJDLEdBQXJCLEVBQTBCO0FBQ3hCLE1BQUlDLE1BQUosRUFBWTtBQUNWLFdBQU9BLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixHQUFaLEVBQWlCLFFBQWpCLEVBQTJCRyxRQUEzQixFQUFQO0FBQ0QsR0FGRCxN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QUFMLENBQWV4QyxJQUFmLENBQVA7QUFDRCxPQUZNLE1BRUE7QUFDTCxjQUFNLElBQUk4QixLQUFKLENBQ0osNkNBQTZDOUIsSUFBSSxDQUFDVixRQUFMLEVBRHpDLENBQU47QUFFRDtBQUNGLEtBckJELE1BcUJPLElBQUksS0FBS08sTUFBVCxFQUFpQjtBQUN0QixhQUFPLEtBQUt3QixZQUFMLENBQWtCLEtBQUt0QixVQUF2QixDQUFQO0FBQ0QsS0FGTSxNQUVBLElBQUksS0FBS0EsVUFBVCxFQUFxQjtBQUMxQixVQUFJRSxHQUFHLEdBQUcsS0FBS0YsVUFBZjtBQUNBLFVBQUlnQyxJQUFKLEVBQVU5QixHQUFHLEdBQUd3QyxjQUFLQyxJQUFMLENBQVVELGNBQUtFLE9BQUwsQ0FBYVosSUFBYixDQUFWLEVBQThCOUIsR0FBOUIsQ0FBTjtBQUVWLFdBQUsyQyxJQUFMLEdBQVlILGNBQUtFLE9BQUwsQ0FBYTFDLEdBQWIsQ0FBWjs7QUFDQSxVQUFJZ0MsWUFBR0MsVUFBSCxJQUFpQkQsWUFBR0MsVUFBSCxDQUFjakMsR0FBZCxDQUFyQixFQUF5QztBQUN2QyxlQUFPZ0MsWUFBR0UsWUFBSCxDQUFnQmxDLEdBQWhCLEVBQXFCLE9BQXJCLEVBQThCWCxRQUE5QixHQUF5QzRCLElBQXpDLEVBQVA7QUFDRCxPQUZELE1BRU87QUFDTCxlQUFPLEtBQVA7QUFDRDtBQUNGO0FBQ0YsRzs7U0FFRG9CLEssR0FBQSxlQUFPckMsR0FBUCxFQUFZO0FBQ1YsUUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkIsT0FBTyxLQUFQO0FBQzdCLFdBQU8sT0FBT0EsR0FBRyxDQUFDNEMsUUFBWCxLQUF3QixRQUF4QixJQUFvQyxPQUFPNUMsR0FBRyxDQUFDNkMsU0FBWCxLQUF5QixRQUFwRTtBQUNELEc7Ozs7O2VBR1lyRCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vemlsbGEgZnJvbSAnc291cmNlLW1hcCdcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5cbmZ1bmN0aW9uIGZyb21CYXNlNjQgKHN0cikge1xuICBpZiAoQnVmZmVyKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2luZG93LmF0b2Ioc3RyKVxuICB9XG59XG5cbi8qKlxuICogU291cmNlIG1hcCBpbmZvcm1hdGlvbiBmcm9tIGlucHV0IENTUy5cbiAqIEZvciBleGFtcGxlLCBzb3VyY2UgbWFwIGFmdGVyIFNhc3MgY29tcGlsZXIuXG4gKlxuICogVGhpcyBjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBzb3VyY2UgbWFwIGluIGlucHV0IENTUyBvciBpbiBmaWxlIHN5c3RlbVxuICogbmVhciBpbnB1dCBmaWxlIChhY2NvcmRpbmcgYGZyb21gIG9wdGlvbikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5zYXNzLmNzcycgfSlcbiAqIHJvb3QuaW5wdXQubWFwIC8vPT4gUHJldmlvdXNNYXBcbiAqL1xuY2xhc3MgUHJldmlvdXNNYXAge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgY3NzICAgIElucHV0IENTUyBzb3VyY2UuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IG9wdGlvbnMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoY3NzLCBvcHRzKSB7XG4gICAgdGhpcy5sb2FkQW5ub3RhdGlvbihjc3MpXG4gICAgLyoqXG4gICAgICogV2FzIHNvdXJjZSBtYXAgaW5saW5lZCBieSBkYXRhLXVyaSB0byBpbnB1dCBDU1MuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlubGluZSA9IHRoaXMuc3RhcnRXaXRoKHRoaXMuYW5ub3RhdGlvbiwgJ2RhdGE6JylcblxuICAgIGxldCBwcmV2ID0gb3B0cy5tYXAgPyBvcHRzLm1hcC5wcmV2IDogdW5kZWZpbmVkXG4gICAgbGV0IHRleHQgPSB0aGlzLmxvYWRNYXAob3B0cy5mcm9tLCBwcmV2KVxuICAgIGlmICh0ZXh0KSB0aGlzLnRleHQgPSB0ZXh0XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3NcbiAgICogZnJvbSB0aGUgYHNvdXJjZS1tYXBgIGxpYnJhcnkgdG8gd29yayB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEl0IGlzIGxhenkgbWV0aG9kLCBzbyBpdCB3aWxsIGNyZWF0ZSBvYmplY3Qgb25seSBvbiBmaXJzdCBjYWxsXG4gICAqIGFuZCB0aGVuIGl0IHdpbGwgdXNlIGNhY2hlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtTb3VyY2VNYXBHZW5lcmF0b3J9IE9iamVjdCB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb24uXG4gICAqL1xuICBjb25zdW1lciAoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnN1bWVyQ2FjaGUpIHtcbiAgICAgIHRoaXMuY29uc3VtZXJDYWNoZSA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyKHRoaXMudGV4dClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uc3VtZXJDYWNoZVxuICB9XG5cbiAgLyoqXG4gICAqIERvZXMgc291cmNlIG1hcCBjb250YWlucyBgc291cmNlc0NvbnRlbnRgIHdpdGggaW5wdXQgc291cmNlIHRleHQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGBzb3VyY2VzQ29udGVudGAgcHJlc2VudC5cbiAgICovXG4gIHdpdGhDb250ZW50ICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50ICYmXG4gICAgICAgICAgICAgIHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudC5sZW5ndGggPiAwKVxuICB9XG5cbiAgc3RhcnRXaXRoIChzdHJpbmcsIHN0YXJ0KSB7XG4gICAgaWYgKCFzdHJpbmcpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIHN0YXJ0Lmxlbmd0aCkgPT09IHN0YXJ0XG4gIH1cblxuICBnZXRBbm5vdGF0aW9uVVJMIChzb3VyY2VNYXBTdHJpbmcpIHtcbiAgICByZXR1cm4gc291cmNlTWFwU3RyaW5nXG4gICAgICAubWF0Y2goL1xcL1xcKlxccyojIHNvdXJjZU1hcHBpbmdVUkw9KCg/Oig/IXNvdXJjZU1hcHBpbmdVUkw9KS4pKilcXCpcXC8vKVsxXVxuICAgICAgLnRyaW0oKVxuICB9XG5cbiAgbG9hZEFubm90YXRpb24gKGNzcykge1xuICAgIGxldCBhbm5vdGF0aW9ucyA9IGNzcy5tYXRjaChcbiAgICAgIC9cXC9cXCpcXHMqIyBzb3VyY2VNYXBwaW5nVVJMPSg/Oig/IXNvdXJjZU1hcHBpbmdVUkw9KS4pKlxcKlxcLy9nbVxuICAgIClcblxuICAgIGlmIChhbm5vdGF0aW9ucyAmJiBhbm5vdGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBMb2NhdGUgdGhlIGxhc3Qgc291cmNlTWFwcGluZ1VSTCB0byBhdm9pZCBwaWNraW5nIHVwXG4gICAgICAvLyBzb3VyY2VNYXBwaW5nVVJMcyBmcm9tIGNvbW1lbnRzLCBzdHJpbmdzLCBldGMuXG4gICAgICBsZXQgbGFzdEFubm90YXRpb24gPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9ucy5sZW5ndGggLSAxXVxuICAgICAgaWYgKGxhc3RBbm5vdGF0aW9uKSB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbiA9IHRoaXMuZ2V0QW5ub3RhdGlvblVSTChsYXN0QW5ub3RhdGlvbilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWNvZGVJbmxpbmUgKHRleHQpIHtcbiAgICBsZXQgYmFzZUNoYXJzZXRVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2NoYXJzZXQ9dXRmLT84O2Jhc2U2NCwvXG4gICAgbGV0IGJhc2VVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2Jhc2U2NCwvXG4gICAgbGV0IHVyaSA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJ1xuXG4gICAgaWYgKHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkpIHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodGV4dC5zdWJzdHIodXJpLmxlbmd0aCkpXG4gICAgfVxuXG4gICAgaWYgKGJhc2VDaGFyc2V0VXJpLnRlc3QodGV4dCkgfHwgYmFzZVVyaS50ZXN0KHRleHQpKSB7XG4gICAgICByZXR1cm4gZnJvbUJhc2U2NCh0ZXh0LnN1YnN0cihSZWdFeHAubGFzdE1hdGNoLmxlbmd0aCkpXG4gICAgfVxuXG4gICAgbGV0IGVuY29kaW5nID0gdGV4dC5tYXRjaCgvZGF0YTphcHBsaWNhdGlvblxcL2pzb247KFteLF0rKSwvKVsxXVxuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc291cmNlIG1hcCBlbmNvZGluZyAnICsgZW5jb2RpbmcpXG4gIH1cblxuICBsb2FkTWFwIChmaWxlLCBwcmV2KSB7XG4gICAgaWYgKHByZXYgPT09IGZhbHNlKSByZXR1cm4gZmFsc2VcblxuICAgIGlmIChwcmV2KSB7XG4gICAgICBpZiAodHlwZW9mIHByZXYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxldCBwcmV2UGF0aCA9IHByZXYoZmlsZSlcbiAgICAgICAgaWYgKHByZXZQYXRoICYmIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhwcmV2UGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHByZXZQYXRoLCAndXRmLTgnKS50b1N0cmluZygpLnRyaW0oKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdVbmFibGUgdG8gbG9hZCBwcmV2aW91cyBzb3VyY2UgbWFwOiAnICsgcHJldlBhdGgudG9TdHJpbmcoKSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcmV2IGluc3RhbmNlb2YgbW96aWxsYS5Tb3VyY2VNYXBDb25zdW1lcikge1xuICAgICAgICByZXR1cm4gbW96aWxsYS5Tb3VyY2VNYXBHZW5lcmF0b3IuZnJvbVNvdXJjZU1hcChwcmV2KS50b1N0cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvcikge1xuICAgICAgICByZXR1cm4gcHJldi50b1N0cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNNYXAocHJldikpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHByZXYpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Vuc3VwcG9ydGVkIHByZXZpb3VzIHNvdXJjZSBtYXAgZm9ybWF0OiAnICsgcHJldi50b1N0cmluZygpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pbmxpbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlY29kZUlubGluZSh0aGlzLmFubm90YXRpb24pXG4gICAgfSBlbHNlIGlmICh0aGlzLmFubm90YXRpb24pIHtcbiAgICAgIGxldCBtYXAgPSB0aGlzLmFubm90YXRpb25cbiAgICAgIGlmIChmaWxlKSBtYXAgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGZpbGUpLCBtYXApXG5cbiAgICAgIHRoaXMucm9vdCA9IHBhdGguZGlybmFtZShtYXApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyAmJiBmcy5leGlzdHNTeW5jKG1hcCkpIHtcbiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhtYXAsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc01hcCAobWFwKSB7XG4gICAgaWYgKHR5cGVvZiBtYXAgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gdHlwZW9mIG1hcC5tYXBwaW5ncyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG1hcC5fbWFwcGluZ3MgPT09ICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJldmlvdXNNYXBcbiJdLCJmaWxlIjoicHJldmlvdXMtbWFwLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor\n *\n * @namespace vendor\n */\nvar vendor = {\n  /**\n   * Returns the vendor prefix extracted from an input string.\n   *\n   * @param {string} prop String with or without vendor prefix.\n   *\n   * @return {string} vendor prefix or empty string\n   *\n   * @example\n   * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n   * postcss.vendor.prefix('tab-size')      //=> ''\n   */\n  prefix: function prefix(prop) {\n    var match = prop.match(/^(-\\w+-)/);\n\n    if (match) {\n      return match[0];\n    }\n\n    return '';\n  },\n\n  /**\n     * Returns the input string stripped of its vendor prefix.\n     *\n     * @param {string} prop String with or without vendor prefix.\n     *\n     * @return {string} String name without vendor prefixes.\n     *\n     * @example\n     * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n     */\n  unprefixed: function unprefixed(prop) {\n    return prop.replace(/^-\\w+-/, '');\n  }\n};\nvar _default = vendor;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUEsSUFBSUEsTUFBTSxHQUFHO0FBRVg7Ozs7Ozs7Ozs7O0FBV0FDLEVBQUFBLE1BYlcsa0JBYUhDLElBYkcsRUFhRztBQUNaLFFBQUlDLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFMLENBQVcsVUFBWCxDQUFaOztBQUNBLFFBQUlBLEtBQUosRUFBVztBQUNULGFBQU9BLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQXBCVTs7QUFzQlg7Ozs7Ozs7Ozs7QUFVQUMsRUFBQUEsVUFoQ1csc0JBZ0NDRixJQWhDRCxFQWdDTztBQUNoQixXQUFPQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxRQUFiLEVBQXVCLEVBQXZCLENBQVA7QUFDRDtBQWxDVSxDQUFiO2VBc0NlTCxNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdmVuZG9yIHByZWZpeGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB2ZW5kb3IgPSBwb3N0Y3NzLnZlbmRvclxuICpcbiAqIEBuYW1lc3BhY2UgdmVuZG9yXG4gKi9cbmxldCB2ZW5kb3IgPSB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAqIHBvc3Rjc3MudmVuZG9yLnByZWZpeCgndGFiLXNpemUnKSAgICAgIC8vPT4gJydcbiAgICovXG4gIHByZWZpeCAocHJvcCkge1xuICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbMF1cbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfSxcblxuICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgc3RyaXBwZWQgb2YgaXRzIHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYi1zaXplJykgLy89PiAndGFiLXNpemUnXG4gICAgICovXG4gIHVucHJlZml4ZWQgKHByb3ApIHtcbiAgICByZXR1cm4gcHJvcC5yZXBsYWNlKC9eLVxcdystLywgJycpXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCB2ZW5kb3JcbiJdLCJmaWxlIjoidmVuZG9yLmpzIn0=\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/postcss-loader/src/index.js??postcss!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                const webComponents = document.getElementsByTagName('apryse-webviewer');\n                if (webComponents.length > 0) {\n                  const clonedStyleTags = [];\n                  for (let i = 0; i < webComponents.length; i++) {\n                    const webComponent = webComponents[i];\n                    if (i === 0) {\n                      webComponent.shadowRoot.appendChild(styleTag);\n                      styleTag.onload = function () {\n                        if (clonedStyleTags.length > 0) {\n                          clonedStyleTags.forEach((styleNode) => {\n                            // eslint-disable-next-line no-unsanitized/property\n                            styleNode.innerHTML = styleTag.innerHTML;\n                          });\n                        }\n                      };\n                    } else {\n                      const styleNode = styleTag.cloneNode(true);\n                      webComponent.shadowRoot.appendChild(styleNode);\n                      clonedStyleTags.push(styleNode);\n                    }\n                  }\n                } else {\n                  document.head.appendChild(styleTag);\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root{--color-theme-primary:#00a5e4;--color-theme-secondary:#242933;--color-font-primary:#232229;--color-font-secondary:#5b5c68;--color-gray-1:#fff;--color-gray-2:#f4f4f4;--color-gray-3:#e7ebee;--color-gray-4:#ddd;--color-gray-5:#cfd4da;--color-blue-gray-1:#dfe2ed;--color-blue-gray-2:#c3c6d4;--color-blue-gray-3:#abb0c4;--color-blue-gray-4:#8b92ab;--color-blue-gray-5:#6077bf;--color-blue-gray-6:#415797;--color-contrast-1:#fafafa;--color-contrast-2:#f0f0f0;--color-message-info:#2980b9;--color-message-success:#27ae60;--color-message-warning:#e67e22;--color-message-error:#e74c3c;--color-message-info-focus-shadow:rgba(41,128,185,0.4);--color-message-success-focus-shadow:rgba(39,174,96,0.4);--color-message-warning-focus-shadow:rgba(230,126,34,0.4);--color-message-error-focus-shadow:rgba(231,76,60,0.4);--color-background-canvas:#eee;--color-focus-shadow:rgba(20,110,170,0.4);--color-overlay-canvas:rgba(0,0,0,0.4);--font-size-tiny:9px;--font-size-small:11px;--font-size-default:13px;--font-size-medium:16px;--font-size-large:18px;--font-size-huge:24px;--font-weight-normal:400;--font-weight-bold:700;--padding-tiny:4px;--padding-small:8px;--padding-medium:12px;--padding:16px;--padding-large:24px;--padding-huge:32px;--border-radius-small:2px;--border-radius:4px;--border-radius-large:8px;--box-shadow-1:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--box-shadow-2:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--box-shadow-3:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23);--z-index-local:0;--z-index-raised:100;--z-index-dragging:200;--z-index-overlay:300;--font-family:Lato,Tahoma,sans-serif;--focus-transition:box-shadow 0.1s cubic-bezier(0.4,1,0.75,0.9)}html[data-theme=dark]{--color-theme-primary:#00a5e4;--color-theme-secondary:#8fa5c7;--color-font-primary:#d7daeb;--color-font-secondary:#989ba3;--color-gray-1:#4a4a4a;--color-gray-2:#444;--color-gray-3:#424242;--color-gray-4:#3f3f3f;--color-gray-5:#3a3a3a;--color-blue-gray-1:#46506d;--color-blue-gray-2:#525e80;--color-blue-gray-3:#6d7485;--color-blue-gray-4:#9098b3;--color-blue-gray-5:#aab1cf;--color-blue-gray-6:#9098b3;--color-contrast-1:#101010;--color-contrast-2:#1a1a1a;--color-background-canvas:#333;--color-focus-shadow:rgba(32,162,255,0.4)}@-webkit-keyframes timeline{0%{background-position:-200px 0}to{background-position:200px 0}}@keyframes timeline{0%{background-position:-200px 0}to{background-position:200px 0}}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes slide{to{transform:translateY(0)}}@keyframes slide{to{transform:translateY(0)}}.ui__base{\\n  /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */box-sizing:border-box;font-size:13px;font-size:var(--font-size-default);line-height:1.25;font-family:inherit;color:#232229;color:var(--color-font-primary);fill:#232229;fill:var(--color-font-primary);font-weight:400;font-weight:var(--font-weight-normal);font-family:Lato,Tahoma,sans-serif;font-family:var(--font-family);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.ui__base html{line-height:1.15;-webkit-text-size-adjust:100%}.ui__base body{margin:0}.ui__base main{display:block}.ui__base h1{font-size:2em;margin:.67em 0}.ui__base hr{box-sizing:content-box;height:0;overflow:visible}.ui__base pre{font-family:monospace,monospace;font-size:1em}.ui__base a{background-color:transparent}.ui__base abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.ui__base b,.ui__base strong{font-weight:bolder}.ui__base code,.ui__base kbd,.ui__base samp{font-family:monospace,monospace;font-size:1em}.ui__base small{font-size:80%}.ui__base sub,.ui__base sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.ui__base sub{bottom:-.25em}.ui__base sup{top:-.5em}.ui__base img{border-style:none}.ui__base button,.ui__base input,.ui__base optgroup,.ui__base select,.ui__base textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}.ui__base button,.ui__base input{overflow:visible}.ui__base button,.ui__base select{text-transform:none}.ui__base [type=button],.ui__base [type=reset],.ui__base [type=submit],.ui__base button{-webkit-appearance:button}.ui__base [type=button]::-moz-focus-inner,.ui__base [type=reset]::-moz-focus-inner,.ui__base [type=submit]::-moz-focus-inner,.ui__base button::-moz-focus-inner{border-style:none;padding:0}.ui__base [type=button]:-moz-focusring,.ui__base [type=reset]:-moz-focusring,.ui__base [type=submit]:-moz-focusring,.ui__base button:-moz-focusring{outline:1px dotted ButtonText}.ui__base fieldset{padding:.35em .75em .625em}.ui__base legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.ui__base progress{vertical-align:baseline}.ui__base textarea{overflow:auto}.ui__base [type=checkbox],.ui__base [type=radio]{box-sizing:border-box;padding:0}.ui__base [type=number]::-webkit-inner-spin-button,.ui__base [type=number]::-webkit-outer-spin-button{height:auto}.ui__base [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.ui__base [type=search]::-webkit-search-decoration{-webkit-appearance:none}.ui__base ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.ui__base details{display:block}.ui__base summary{display:list-item}.ui__base [hidden],.ui__base template{display:none}.ui__base *,.ui__base :after,.ui__base :before{box-sizing:inherit}.ui__button{cursor:pointer;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__button,.ui__button__internal{display:flex;justify-content:center;align-items:center}.ui__button--disabled{cursor:default;opacity:.7}.ui__button--disabled>*{opacity:.7}.ui__button:focus.ui__button--tabbing{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__button::-moz-focus-inner{border:0}.ui__button--style-default{border:1px solid #6077bf;border:1px solid var(--color-blue-gray-5);background-color:#6077bf;background-color:var(--color-blue-gray-5);color:#fafafa;color:var(--color-contrast-1)}.ui__button--style-default i{fill:#fafafa;fill:var(--color-contrast-1)}.ui__button--style-default:active:not(.ui__button--disabled){border-color:#415797;border-color:var(--color-blue-gray-6);background-color:#415797;background-color:var(--color-blue-gray-6)}.ui__button--style-borderless{border:1px solid transparent;background-color:transparent;color:#6077bf;color:var(--color-blue-gray-5)}.ui__button--style-borderless i{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__button--style-borderless:active:not(.ui__button--disabled){color:#415797;color:var(--color-blue-gray-6)}.ui__button--style-borderless:active:not(.ui__button--disabled) i{fill:#415797;fill:var(--color-blue-gray-6)}.ui__button--style-outline{border:1px solid #6077bf;border:1px solid var(--color-blue-gray-5);background-color:transparent;color:#6077bf;color:var(--color-blue-gray-5);transition:background-color 75ms ease-in-out,color 75ms ease-in-out}.ui__button--style-outline i{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__button--style-outline:focus.ui__button--tabbing,.ui__button--style-outline:hover:not(.ui__button--disabled){background-color:#6077bf;background-color:var(--color-blue-gray-5);color:#fafafa;color:var(--color-contrast-1)}.ui__button--style-outline:focus.ui__button--tabbing i,.ui__button--style-outline:hover:not(.ui__button--disabled) i{fill:#fafafa;fill:var(--color-contrast-1)}.ui__button--style-outline:active:not(.ui__button--disabled){border-color:#415797;border-color:var(--color-blue-gray-6);background-color:#415797;background-color:var(--color-blue-gray-6)}.ui__button--size-small{font-size:11px;font-size:var(--font-size-small);padding:2px 4px;padding:2px var(--padding-tiny);min-height:24px}.ui__button--size-default,.ui__button--size-small{border-radius:4px;border-radius:var(--border-radius)}.ui__button--size-default{padding:4px 12px;padding:var(--padding-tiny) var(--padding-medium);min-width:88px;min-height:32px}.ui__button--size-large{border-radius:4px;border-radius:var(--border-radius);padding:4px 24px;padding:var(--padding-tiny) var(--padding-large);min-width:120px;min-height:40px}.ui__buttonGroup{margin:-4px;margin:calc(0px - var(--padding-tiny));display:flex;flex-wrap:wrap}.ui__buttonGroup>.ui__buttonGroup{margin:0}.ui__buttonGroup>button{margin:4px;margin:var(--padding-tiny)}.ui__buttonGroup--reverse{flex-wrap:wrap-reverse}@media (max-width:767px){.ui__buttonGroup--centerMobile.ui__buttonGroup{justify-content:center}}.ui__buttonGroup--position-left{justify-content:flex-start}.ui__buttonGroup--position-center{justify-content:center}.ui__buttonGroup--position-right{justify-content:flex-end}.ui__buttonGroup--position-space-between{justify-content:space-between}.ui__buttonGroup--position-space-around{justify-content:space-around}.ui__choice{display:flex;margin:4px 4px 4px 0;margin:var(--padding-tiny) var(--padding-tiny) var(--padding-tiny) 0}.ui__choice--center{align-items:center}.ui__choice--disabled .ui__choice__input>input,.ui__choice--disabled .ui__choice__label{cursor:default}.ui__choice--radio .ui__choice__input__check{border-radius:50%}.ui__choice--radio .ui__choice__input__check--checked{background-color:#fafafa;background-color:var(--color-contrast-1);border:5px solid #6077bf;border:5px solid var(--color-blue-gray-5)}.ui__choice--radio .ui__choice__input__check--checked.ui__choice__input__check--disabled{background-color:#fafafa;background-color:var(--color-contrast-1);border:5px solid #cfd4da;border:5px solid var(--color-gray-5)}.ui__choice__input{position:relative;height:15px;width:15px;flex-shrink:0}.ui__choice__input__check{position:absolute;width:15px;height:15px;padding:2px;border:1px solid #abb0c4;border:1px solid var(--color-blue-gray-3);border-radius:2px;border-radius:var(--border-radius-small);background-color:#fff;background-color:var(--color-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__choice__input__check--disabled{border-color:#e7ebee;border-color:var(--color-gray-3)}.ui__choice__input__check--checked{background-color:#6077bf;background-color:var(--color-blue-gray-5);border-color:#6077bf;border-color:var(--color-blue-gray-5)}.ui__choice__input__check--checked.ui__choice__input__check--disabled{background-color:#cfd4da;background-color:var(--color-gray-5);border-color:#cfd4da;border-color:var(--color-gray-5)}.ui__choice__input__check--focus{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__choice__input__switch{position:absolute;width:24px;height:10px;padding:2px;border:1px solid #abb0c4;border:1px solid var(--color-blue-gray-3);border-radius:5px;background-color:#fff;background-color:var(--color-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);top:50%;transform:translateY(-50%)}.ui__choice__input__switch--disabled{border-color:#e7ebee;border-color:var(--color-gray-3)}.ui__choice__input__switch--disabled .ui__choice__input__toggle{background-color:#ddd;background-color:var(--color-gray-4)}.ui__choice__input__switch--checked .ui__choice__input__toggle{left:9px}.ui__choice__input__switch--focus .ui__choice__input__toggle{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__choice__input__toggle{position:absolute;height:14px;width:14px;border-radius:50%;background-color:#6077bf;background-color:var(--color-blue-gray-5);top:50%;left:-1px;transform:translateY(-50%);transition:left .25s ease}.ui__choice__input__icon{height:17px;width:17px;fill:#fafafa;fill:var(--color-contrast-1);position:absolute;top:-3px;left:-2px}.ui__choice__input>input{cursor:pointer;opacity:0;position:absolute;top:0;left:0;height:15px;width:15px}.ui__choice__input--switch{height:15px;width:24px}.ui__choice__input--switch>input{height:14px;width:24px}.ui__choice--leftLabel .ui__choice__label{padding-right:8px;padding-right:var(--padding-small);padding-left:0}.ui__choice__label{cursor:pointer;padding-left:8px;padding-left:var(--padding-small);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui__choice__label--disabled{color:#cfd4da;color:var(--color-gray-5)}.ui__clickableDiv{display:inline-block;outline:none;border:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__clickableDiv:focus.ui__clickableDiv--tabbing:not(.ui__clickableDiv--noFocusStyle):not(.ui__clickableDiv--disabled){box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__clickableDiv--usePointer{cursor:pointer}.ui__dragLayer{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0}.ui__draggable{display:inline-block}.ui__draggable__animated--inMotion{pointer-events:none}.ui__editableText--disabled .ui__editableText__button>span{opacity:.7}.ui__editableText--centerText .ui__editableText__button{justify-content:center}.ui__editableText--centerText .ui__editableText__field{text-align:center}.ui__editableText--bordered .ui__editableText__button{border:1px solid #c3c6d4;border:1px solid var(--color-blue-gray-2)}.ui__editableText--bordered:not(.ui__editableText--disabled) .ui__editableText__button:hover{background-color:#c3c6d4;background-color:var(--color-blue-gray-2)}.ui__editableText--bordered:not(.ui__editableText--disabled) .ui__editableText__button--placeholder{color:#abb0c4;color:var(--color-blue-gray-3)}.ui__editableText .ui__editableText__field{line-height:1}.ui__editableText__button,.ui__editableText__field{min-height:28px;min-width:100%;color:#232229;color:var(--color-font-primary);padding:4px;padding:var(--padding-tiny);border-radius:4px;border-radius:var(--border-radius);border:1px solid transparent}.ui__editableText__button{display:flex;align-items:center;transition:background-color .1s;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);line-height:1.15}.ui__editableText__button>span{line-height:1.15rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ui__editableText__button--noFocusTransition{transition:none}.ui__editableText:not(.ui__editableText--disabled):not(.ui__editableText--locked) .ui__editableText__button:hover{border:1px solid #c3c6d4;border:1px solid var(--color-blue-gray-2)}.ui__editableText:not(.ui__editableText--disabled):not(.ui__editableText--locked) .ui__editableText__button--placeholder{color:#abb0c4;color:var(--color-blue-gray-3)}.ui__editableText__field{background-color:#c3c6d4;background-color:var(--color-blue-gray-2);outline:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__editableText__field:focus.ui__editableText__field--tabbing{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow);transition:none}.ui__fileOrganizer{position:relative;outline:0;height:100%}.ui__fileOrganizer__draglayer{overflow:visible;display:flex;justify-content:center;align-items:center}.ui__filePicker__file{display:flex;align-items:center;min-height:28px}.ui__filePicker__file__text{flex:1 1 auto;overflow:hidden}.ui__filePicker__file__delete.ui__button.ui__iconButton{height:28px;width:28px;min-height:28px;min-width:28px;margin-left:4px;margin-left:var(--padding-tiny)}.ui__filePlaceholder{background-color:#fff;padding:10px;height:164px;width:128px;position:relative}.ui__filePlaceholder__block{background-color:#ccc}.ui__filePlaceholder__block--thumbnail{width:40px;height:40px;float:left}.ui__filePlaceholder__block--line-sm,.ui__filePlaceholder__block--line-xs{margin-left:50px;margin-top:10px;height:6px}.ui__filePlaceholder__block--line-xs{width:40px}.ui__filePlaceholder__block--line-df{margin-top:20px;width:90px;height:6px}.ui__filePlaceholder__block--line-lg{margin-top:10px;width:90px;height:6px}.ui__filePlaceholder__block--line-lgx{margin-top:10px;height:6px}.ui__filePlaceholder__extension{position:absolute;color:#ccc;text-align:center;font-size:18px;font-size:var(--font-size-large);right:10px;left:10px;bottom:10px}.ui__fileSkeleton{background-color:#fff;padding:10px;height:164px;width:128px}.ui__fileSkeleton__block{-webkit-animation:timeline 2s linear infinite;animation:timeline 2s linear infinite;background:linear-gradient(90deg,#eee,#ddd 10%,#eee 20%);background-size:600px auto}.ui__fileSkeleton__block--thumbnail{width:40px;height:40px;float:left}.ui__fileSkeleton__block--line-sm,.ui__fileSkeleton__block--line-xs{margin-left:50px;margin-top:10px;height:6px}.ui__fileSkeleton__block--line-xs{width:40px}.ui__fileSkeleton__block--line-df{margin-top:20px;width:90px;height:6px}.ui__fileSkeleton__block--line-lg{margin-top:10px;width:90px;height:6px}.ui__fileSkeleton__block--line-lgx{margin-top:10px;height:6px}.ui__focusTrap{color:#00f}.ui__focusTrap--disabled{color:red}.ui__icon{display:inline-flex;justify-content:center;align-items:center}.ui__button.ui__iconButton{width:auto;min-width:auto;padding:0 3px}.ui__image{max-width:100%;max-height:100%}.ui__input__wrapper{width:220px}.ui__input__wrapper--fill{width:100%}.ui__input__wrapper--pad{padding-bottom:20px}.ui__input{border-radius:4px;border-radius:var(--border-radius);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);background-color:#fff;background-color:var(--color-gray-1);border:1px solid #ddd;border:1px solid var(--color-gray-4);display:inline-flex;align-items:center;width:100%}.ui__input--message-default.ui__input--focused{border:1px solid #00a5e4;border:1px solid var(--color-theme-primary);box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__input--message-warning{border-color:#e67e22;border-color:var(--color-message-warning)}.ui__input--message-warning i{fill:#e67e22;fill:var(--color-message-warning)}.ui__input--message-warning.ui__input--focused{box-shadow:0 0 0 2px rgba(230,126,34,.4);box-shadow:0 0 0 2px var(--color-message-warning-focus-shadow)}.ui__input--message-error{border-color:#e74c3c;border-color:var(--color-message-error)}.ui__input--message-error i{fill:#e74c3c;fill:var(--color-message-error)}.ui__input--message-error.ui__input--focused{box-shadow:0 0 0 2px rgba(231,76,60,.4);box-shadow:0 0 0 2px var(--color-message-error-focus-shadow)}.ui__input .ui__input__input{flex:1 1 auto;padding:4px;padding:var(--padding-tiny);height:28px;outline:none;border:none;background-color:transparent;color:#232229;color:var(--color-font-primary);min-height:24px}.ui__input .ui__input__input--disabled{opacity:.7}.ui__input__messageText{width:100%;font-size:11px;font-size:var(--font-size-small);margin-top:4px;margin-top:var(--padding-tiny)}.ui__input .ui__iconButton{border:none;padding:0;min-height:0}.ui__input .ui__icon{padding:0 2px}.ui__input svg{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__label--attached:after{height:2px;width:1px;content:\\\"\\\";display:block}.ui__label--disabled{opacity:.7}.ui__label__optional{font-size:11px;font-size:var(--font-size-small);margin-left:4px;margin-left:var(--padding-tiny);color:#5b5c68;color:var(--color-font-secondary);font-style:italic}.ui__modal__wrapper{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .25s;opacity:1;background-color:rgba(0,0,0,.4);background-color:var(--color-overlay-canvas);overflow:auto;display:flex;padding:16px 16px 0;padding:var(--padding) var(--padding) 0}@media (min-width:768px){.ui__modal__wrapper{padding:32px 32px 0;padding:var(--padding-huge) var(--padding-huge) 0}}.ui__modal__wrapper--closed{opacity:0;pointer-events:none!important}.ui__modal__wrapper--fullWidth .ui__modal__paddingFix{max-width:none!important}.ui__modal__paddingFix{padding:0 0 16px;padding:0 0 var(--padding);margin:auto;width:100%}@media (min-width:768px){.ui__modal__paddingFix{padding:0 0 32px;padding:0 0 var(--padding-huge);max-width:500px}}.ui__modal{background-color:#f4f4f4;background-color:var(--color-gray-2);border-radius:4px;border-radius:var(--border-radius);overflow:hidden;width:100%}.ui__modal--hidden{pointer-events:none;visibility:hidden}.ui__modal__top{display:flex}.ui__modal__top__heading{font-size:18px;font-size:var(--font-size-large);flex:1 1 auto;padding:12px 16px;padding:var(--padding-medium) var(--padding)}.ui__modal__top__close.ui__button{padding:0 10px;padding:0 calc(var(--padding-medium) - 2px);margin:2px}.ui__modal__body{padding:12px 16px;padding:var(--padding-medium) var(--padding);background-color:#fff;background-color:var(--color-gray-1);border-top:1px solid #ddd;border-top:1px solid var(--color-gray-4);border-bottom:1px solid #ddd;border-bottom:1px solid var(--color-gray-4)}.ui__modal__body--noButton{border-bottom:none}.ui__modal__buttonGroup{padding:12px 16px;padding:var(--padding-medium) var(--padding)}.ui__overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;z-index:var(--z-index-overlay);pointer-events:none}.ui__overlay>*{pointer-events:all}.ui__spinner{display:inline-block}.ui__spinner__animated{-webkit-animation:spin 1.2s cubic-bezier(.4,.2,.6,.8) infinite;animation:spin 1.2s cubic-bezier(.4,.2,.6,.8) infinite;width:100%;height:100%;border-radius:50%;border:solid;border-color:#8b92ab #dfe2ed #dfe2ed;border-color:var(--color-blue-gray-4) var(--color-blue-gray-1) var(--color-blue-gray-1)}.ui__spinner--size-tiny{width:12px;height:12px}.ui__spinner--size-tiny .ui__spinner__animated{border-width:1px}.ui__spinner--size-small{width:16px;height:16px}.ui__spinner--size-small .ui__spinner__animated{border-width:2px}.ui__spinner--size-default{width:24px;height:24px}.ui__spinner--size-default .ui__spinner__animated{border-width:2px}.ui__spinner--size-large{width:32px;height:32px}.ui__spinner--size-large .ui__spinner__animated{border-width:2px}.ui__thumbnail{padding:16px;padding:var(--padding);position:relative;outline:none;width:240px;height:240px;transition:background-color .1s;display:flex;flex-direction:column}.ui__thumbnail--selected:not(.ui__thumbnail--dragging){background-color:#dfe2ed;background-color:var(--color-blue-gray-1)}.ui__thumbnail--dragging{border:2px dashed #00a5e4;border:2px dashed var(--color-theme-primary);z-index:200;z-index:var(--z-index-dragging);margin:-1px;width:242px;height:242px}.ui__thumbnail--dragging .ui__thumbnail__controls,.ui__thumbnail--dragging .ui__thumbnail__image,.ui__thumbnail--dragging .ui__thumbnail__label{visibility:hidden}.ui__thumbnail--otherDragging{pointer-events:none}@media (max-width:767px){.ui__thumbnail .ui__thumbnail__controls{opacity:1}}.ui__thumbnail--focused.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled):not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging) .ui__thumbnail__controls,.ui__thumbnail:hover:not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging) .ui__thumbnail__controls{opacity:1}.ui__thumbnail--focused.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled):not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging):not(.ui__thumbnail--selected),.ui__thumbnail:hover:not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging):not(.ui__thumbnail--selected){background-color:#ddd;background-color:var(--color-gray-4)}.ui__thumbnail:focus.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled) .ui__thumbnail__image .ui__thumbnail__image__skeleton,.ui__thumbnail:focus.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled) .ui__thumbnail__image img{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow);border-color:rgba(20,110,170,.4);border-color:var(--color-focus-shadow)}.ui__thumbnail__controls{transition:opacity .1s;position:absolute;top:4px;top:var(--padding-tiny);right:4px;right:var(--padding-tiny);opacity:0;display:flex;border-radius:4px;border-radius:var(--border-radius);background-color:#eee;background-color:var(--color-background-canvas)}.ui__thumbnail__selectedIcon{position:absolute;top:4px;top:var(--padding-tiny);left:4px;left:var(--padding-tiny)}.ui__thumbnail__image{display:flex;justify-content:center;align-items:center;flex-direction:column;height:0;flex:1 1 auto;pointer-events:none}.ui__thumbnail__image img{background-color:#fff}.ui__thumbnail__image .ui__thumbnail__image__placeholder,.ui__thumbnail__image .ui__thumbnail__image__skeleton,.ui__thumbnail__image img{border:1px solid #dfe2ed;border:1px solid var(--color-blue-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__thumbnail__label{text-align:center;margin-top:16px;margin-top:var(--padding)}.ui__thumbnailDragLayer{width:240px;height:240px;display:flex;justify-content:center;align-items:center}.ui__thumbnailDragLayer__icon{height:60px;width:60px;fill:#abb0c4;fill:var(--color-blue-gray-3)}.ui__thumbnailDragLayer__numFiles{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:flex-end;font-size:13px;font-size:var(--font-size-default)}.ui__thumbnailDragLayer__numFiles__wrapper{position:relative;top:-10px;right:-10px;padding:4px;padding:var(--padding-tiny);border-radius:8px;border-radius:var(--border-radius-large);background-color:#abb0c4;background-color:var(--color-blue-gray-3);min-width:20px;display:flex;justify-content:center;align-items:center}.ui__thumbnailDragLayer__wrapper{position:relative}.ui__thumbnailSkeleton{padding:16px;padding:var(--padding);position:relative;outline:none;width:240px;height:240px;transition:background-color .1s;display:flex;flex-direction:column}.ui__thumbnailSkeleton:hover{background-color:#ddd;background-color:var(--color-gray-4)}.ui__thumbnailSkeleton__image{display:flex;justify-content:center;align-items:center;flex-direction:column;height:0;flex:1 1 auto}.ui__thumbnailSkeleton__image .ui__thumbnailSkeleton__image__skeleton{border:1px solid #dfe2ed;border:1px solid var(--color-blue-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__thumbnailSkeleton__label{margin-top:16px;margin-top:var(--padding);height:28px}.ui__toast{display:grid;display:flex;background-color:#fff;background-color:var(--color-gray-1);border-radius:4px;border-radius:var(--border-radius);overflow:hidden;box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23);box-shadow:var(--box-shadow-3);padding-right:2px}@media (max-width:767px){.ui__toast{width:100%}}@media (min-width:768px){.ui__toast{max-width:500px}}.ui__toast--message-info .ui__toast__border,.ui__toast--message-loading .ui__toast__border{background-color:#2980b9;background-color:var(--color-message-info)}.ui__toast--message-info .ui__toast__icon,.ui__toast--message-loading .ui__toast__icon{fill:#2980b9;fill:var(--color-message-info)}.ui__toast--message-warning .ui__toast__border{background-color:#e67e22;background-color:var(--color-message-warning)}.ui__toast--message-warning .ui__toast__icon{fill:#e67e22;fill:var(--color-message-warning)}.ui__toast--message-error .ui__toast__border{background-color:#e74c3c;background-color:var(--color-message-error)}.ui__toast--message-error .ui__toast__icon{fill:#e74c3c;fill:var(--color-message-error)}.ui__toast--message-success .ui__toast__border{background-color:#27ae60;background-color:var(--color-message-success)}.ui__toast--message-success .ui__toast__icon{fill:#27ae60;fill:var(--color-message-success)}.ui__toast__border{width:4px;flex-shrink:0}.ui__toast__icon,.ui__toast__spinner{margin:0 12px;margin:0 var(--padding-medium);display:flex;justify-content:center;align-items:center;flex-shrink:0}.ui__toast__spinner{height:100%}.ui__toast__spinner>*{height:20px;width:20px}.ui__toast__copy{padding:8px 16px 8px 0;padding:var(--padding-small) var(--padding) var(--padding-small) 0;display:flex;flex-direction:column;justify-content:center;flex:1 1 auto}.ui__toast__copy__heading{flex-shrink:0;color:#232229;color:var(--color-font-primary);font-weight:700;font-weight:var(--font-weight-bold);padding:2px 0}.ui__toast__copy__body{flex-shrink:0;color:#5b5c68;color:var(--color-font-secondary);padding:2px 0}.ui__toast__action{display:flex;justify-content:flex-end;align-items:center;margin-left:4px;margin-left:var(--padding-tiny);flex-grow:0}.ui__toast__button{width:auto;min-width:auto;padding:0 4px;padding:0 var(--padding-tiny)}.ui__toastProvider__toast--position-bottom,.ui__toastProvider__toast--position-bottom-left,.ui__toastProvider__toast--position-bottom-right{position:absolute;bottom:0;left:0;right:0;transform:translateY(100%)}.ui__toastProvider{opacity:1;transition:opacity .25s;position:relative}.ui__toastProvider--closing{opacity:0}.ui__toastProvider__toast{display:flex;padding:16px;padding:var(--padding);pointer-events:none!important;-webkit-animation:slide .25s forwards;animation:slide .25s forwards}.ui__toastProvider__toast>*{pointer-events:all}.ui__toastProvider__toast--position-top-left{transform:translateY(-100%);justify-content:flex-start}.ui__toastProvider__toast--position-top{transform:translateY(-100%);justify-content:center}.ui__toastProvider__toast--position-top-right{transform:translateY(-100%);justify-content:flex-end}.ui__toastProvider__toast--position-bottom-left{justify-content:flex-start}.ui__toastProvider__toast--position-bottom{justify-content:center}.ui__toastProvider__toast--position-bottom-right{justify-content:flex-end}.ui__toolButton__action:active:not(.ui__toolButton--disabled),.ui__toolButton__action:focus.ui__toolButton--tabbing:not(.ui__toolButton--disabled),.ui__toolButton__action:hover:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:active:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:focus.ui__toolButton--tabbing:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:hover:not(.ui__toolButton--disabled){background-color:hsla(0,0%,68.6%,.3)}.ui__toolButton{display:inline-flex;flex-direction:column}.ui__toolButton--expanded.ui__toolButton--right{flex-direction:row}.ui__toolButton--expanded.ui__toolButton--bottom{flex-direction:column}.ui__toolButton__action.ui__toolButton--expanded.ui__toolButton--right{border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius)}.ui__toolButton__action.ui__toolButton--expanded.ui__toolButton--bottom{border-radius:4px 4px 0 0;border-radius:var(--border-radius) var(--border-radius) 0 0}.ui__toolButton__action__internals{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ui__toolButton__expand.ui__button{padding:0;display:flex;justify-content:center;align-items:center;min-height:0}.ui__toolButton__expand.ui__button.ui__toolButton--right{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}.ui__toolButton__expand.ui__button.ui__toolButton--bottom{border-radius:0 0 4px 4px;border-radius:0 0 var(--border-radius) var(--border-radius)}:host{--color-theme-primary:#00a5e4;--color-theme-secondary:#242933;--color-font-primary:#232229;--color-font-secondary:#5b5c68;--color-gray-1:#fff;--color-gray-2:#f4f4f4;--color-gray-3:#e7ebee;--color-gray-4:#ddd;--color-gray-5:#cfd4da;--color-blue-gray-1:#dfe2ed;--color-blue-gray-2:#c3c6d4;--color-blue-gray-3:#abb0c4;--color-blue-gray-4:#8b92ab;--color-blue-gray-5:#6077bf;--color-blue-gray-6:#415797;--color-contrast-1:#fafafa;--color-contrast-2:#f0f0f0;--color-message-info:#2980b9;--color-message-success:#27ae60;--color-message-warning:#e67e22;--color-message-error:#e74c3c;--color-message-info-focus-shadow:rgba(41,128,185,0.4);--color-message-success-focus-shadow:rgba(39,174,96,0.4);--color-message-warning-focus-shadow:rgba(230,126,34,0.4);--color-message-error-focus-shadow:rgba(231,76,60,0.4);--color-background-canvas:#eee;--color-focus-shadow:rgba(20,110,170,0.4);--color-overlay-canvas:rgba(0,0,0,0.4);--font-size-tiny:9px;--font-size-small:11px;--font-size-default:13px;--font-size-medium:16px;--font-size-large:18px;--font-size-huge:24px;--font-weight-normal:400;--font-weight-bold:700;--padding-tiny:4px;--padding-small:8px;--padding-medium:12px;--padding:16px;--padding-large:24px;--padding-huge:32px;--border-radius-small:2px;--border-radius:4px;--border-radius-large:8px;--box-shadow-1:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--box-shadow-2:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--box-shadow-3:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23);--z-index-local:0;--z-index-raised:100;--z-index-dragging:200;--z-index-overlay:300;--font-family:Lato,Tahoma,sans-serif;--focus-transition:box-shadow 0.1s cubic-bezier(0.4,1,0.75,0.9)}:host,:root,html[data-theme=dark]{--color-font-primary:var(--text-color);--color-gray-1:var(--component-background);--color-blue-gray-3:var(--border);--color-blue-gray-5:var(--primary-button)}\", \"\"]);\n\n// exports\n","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}","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import React, { useState, useEffect } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport core from 'core';\nimport classNames from 'classnames';\n\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ActionButton from 'components/ActionButton';\nimport { zoomTo, zoomIn, zoomOut } from 'helpers/zoom';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport zoomFactors from 'constants/zoomFactors';\nimport DataElements from 'constants/dataElement';\n\nimport './ToggleZoomOverlay.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst ToggleZoomOverlay = ({ documentViewerKey = undefined }) => {\n  const [t] = useTranslation();\n\n  const elementName = documentViewerKey ? `zoomOverlay${documentViewerKey}` : DataElements.ZOOM_OVERLAY;\n  const buttonName = documentViewerKey ? `zoomOverlayButton${documentViewerKey}` : DataElements.ZOOM_OVERLAY_BUTTON;\n\n  const isMobile = isMobileSize();\n\n  const [isActive, isMultiViewerMode] = useSelector(\n    (state) => [selectors.isElementOpen(state, elementName), selectors.isMultiViewerMode(state)],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [value, setValue] = useState('100');\n\n  useEffect(() => {\n    const onDocumentLoaded = () => setValue(Math.ceil(core.getZoom(documentViewerKey) * 100).toString());\n    const onZoomUpdated = () => setValue(Math.ceil(core.getZoom(documentViewerKey) * 100).toString());\n    const onDocumentUnloaded = () => setValue('100');\n\n    core.addEventListener('documentLoaded', onDocumentLoaded, undefined, documentViewerKey);\n    core.addEventListener('zoomUpdated', onZoomUpdated, undefined, documentViewerKey);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded, undefined, documentViewerKey);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded, documentViewerKey);\n      core.removeEventListener('zoomUpdated', onZoomUpdated, documentViewerKey);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded, documentViewerKey);\n    };\n  }, []);\n\n  const onKeyPress = (e) => {\n    if (e.nativeEvent.key === 'Enter' || e.nativeEvent.keyCode === 13) {\n      const zoom = Math.ceil(core.getZoom(documentViewerKey) * 100).toString();\n      if (e.target.value === zoom) {\n        return;\n      }\n      if (e.target.value === '') {\n        setValue(zoom);\n      } else {\n        let zoomValue = e.target.value / 100;\n        zoomValue = Math.max(zoomValue, zoomFactors.getMinZoomLevel());\n        zoomValue = Math.min(zoomValue, zoomFactors.getMaxZoomLevel());\n        zoomTo(zoomValue, isMultiViewerMode, documentViewerKey);\n      }\n    }\n  };\n\n  const onChange = (e) => {\n    const re = /^(\\d){0,4}$/;\n    if (re.test(e.target.value) || e.target.value === '') {\n      setValue(e.target.value);\n    }\n  };\n\n  const onBlur = (e) => {\n    window.getSelection().removeAllRanges(); // this is to prevent the selection of the text in the zoom input after blurring\n    const zoom = Math.ceil(core.getZoom(documentViewerKey) * 100).toString();\n    if (e.target.value === zoom) {\n      return;\n    }\n    if (e.target.value === '' || isNaN(Number(e.target.value))) {\n      setValue(zoom);\n    } else {\n      setValue(Number(e.target.value).toString());\n      zoomTo(e.target.value / 100, documentViewerKey);\n    }\n  };\n\n  const inputWidth = value ? (value.length + 1) * 8 : 0;\n\n  return (\n    <div className=\"zoom-overlay\">\n      {!isMobile && (\n        <div className=\"ToggleZoomOverlay\">\n          <div\n            className={classNames({\n              OverlayContainer: true,\n              active: isActive,\n            })}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter') {\n                dispatch(actions.toggleElement(DataElements.ZOOM_OVERLAY));\n              }\n            }}\n            tabIndex={0}\n          >\n            <div className=\"OverlayText\" onClick={() => dispatch(actions.toggleElement(elementName))}>\n              <input\n                type=\"text\"\n                className=\"textarea\"\n                value={value}\n                onChange={onChange}\n                onKeyPress={onKeyPress}\n                onBlur={onBlur}\n                tabIndex={-1}\n                style={{ width: inputWidth }}\n                aria-label={t('action.zoomSet')}\n              />\n              <span>%</span>\n            </div>\n            <ToggleElementButton\n              className=\"OverlayButton\"\n              img={`icon-chevron-${isActive ? 'up' : 'down'}`}\n              element={elementName}\n              dataElement={buttonName}\n              ariaLabel={t('action.zoomControls')}\n              tabIndex={-1}\n            />\n          </div>\n        </div>\n      )}\n      <ActionButton\n        img=\"icon-header-zoom-out-line\"\n        onClick={() => zoomOut(isMultiViewerMode, documentViewerKey)}\n        title=\"action.zoomOut\"\n        dataElement=\"zoomOutButton\"\n      />\n      <span className=\"visually-hidden\">\n        <p aria-live=\"assertive\" role=\"status\">{t('action.zoomChanged')} {value}%</p>\n      </span>\n      <ActionButton\n        img=\"icon-header-zoom-in-line\"\n        onClick={() => zoomIn(isMultiViewerMode, documentViewerKey)}\n        title=\"action.zoomIn\"\n        dataElement=\"zoomInButton\"\n      />\n    </div>\n  );\n};\n\nexport default ToggleZoomOverlay;\n","import ToggleZoomOverlay from './ToggleZoomOverlay';\n\nexport default ToggleZoomOverlay;\n","import React from 'react';\nimport Icon from 'components/Icon';\nimport ToolButton from 'components/ToolButton';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './ToolButton.scss';\n\nconst PresetButton = ({\n  toolName,\n  isToolStyleOpen,\n}) => {\n  const [\n    isActive,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state) === toolName,\n    ],\n  );\n\n  const dispatch = useDispatch();\n  const getStylingDropdownButton = () => {\n    return (\n      <div\n        className=\"tool-button-arrow-container\"\n      >\n        {isActive &&\n          <div\n            className=\"tool-button-arrow-inner-container\"\n            onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n          >\n            {(isToolStyleOpen ?\n              <Icon className=\"tool-button-arrow-up\" glyph=\"icon-chevron-up\" /> :\n              <Icon className=\"tool-button-arrow-down\" glyph=\"icon-chevron-down\" />)}\n          </div>}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className={classNames({\n        'tool-button-container': true,\n      })}\n    >\n      <ToolButton\n        toolName={toolName}\n      />\n      {getStylingDropdownButton()}\n    </div>\n  );\n};\n\nexport default PresetButton;\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 = null;\n  var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n  if (isTouchEvent && passiveEventSupport) {\n    handlerOptions = {\n      passive: !instance.props.preventDefault\n    };\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};","import React from 'react';\nimport classNames from 'classnames';\n\nimport './SignatureRowContent.scss';\n\nconst SignatureRowContent = ({ onClick, imgSrc, isActive, altText }) => {\n  return (\n    <button\n      className={classNames({\n        'signature-row-content': true,\n        'interactable': onClick,\n        'active': isActive,\n      })}\n      onClick={onClick}\n    >\n      <img alt={altText} src={imgSrc} />\n    </button>\n  );\n};\n\nexport default SignatureRowContent;","import React from 'react';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Icon from 'components/Icon';\nimport SignatureModes from 'constants/signatureModes';\n\nimport './SignatureStylePopup.scss';\n\nconst SignatureAddBtn = ({ t, disabled }) => {\n  const dispatch = useDispatch();\n\n  const openSignatureModal = () => {\n    if (!disabled) {\n      dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      dispatch(actions.openElement('signatureModal'));\n      dispatch(actions.closeElement('toolStylePopup'));\n    }\n  };\n\n  const isInitialsModeEnabled = useSelector((state) => selectors.getIsInitialsModeEnabled(state));\n  const buttonText = isInitialsModeEnabled ? t('option.signatureOverlay.addSignatureOrInitials') : t('option.signatureOverlay.addSignature');\n\n  return (\n    <button\n      className={classNames(\n        'signature-row-content add-btn',\n        { disabled },\n      )}\n      onClick={openSignatureModal}\n    >\n      <Icon className=\"signature-button-icon\" glyph={disabled ? 'icon-signature-plus-disabled' : 'icon-signature-plus-sign'} />\n      <div className=\"btn-text\" title={buttonText}>{buttonText}</div>\n    </button>\n  );\n};\n\nexport default withTranslation()(SignatureAddBtn);","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport Icon from 'components/Icon';\nimport SignatureRowContent from './SignatureRowContent';\nimport SignatureAddBtn from './SignatureAddBtn';\nimport core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport DataElements from 'constants/dataElement';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport SignatureModes from 'constants/signatureModes';\n\nimport './SignatureStylePopup.scss';\n\nconst SavedSignatures = (props) => {\n  const {\n    savedSignatures,\n    onSetHandler,\n    deleteHandler,\n    activeToolName,\n    currentlySelectedIndex,\n    isDeleteDisabled,\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      {\n        savedSignatures\n          // Need to keep the index information from the original signature list\n          .map((signature, index) => [signature, index])\n          .map(([{ imgSrc }, savedSignatureIndex]) => <div\n            key={savedSignatureIndex}\n            className=\"signature-row\"\n          >\n            <SignatureRowContent\n              onClick={() => onSetHandler(savedSignatureIndex)}\n              imgSrc={imgSrc}\n              isActive={currentlySelectedIndex === savedSignatureIndex && activeToolName === 'AnnotationCreateSignature'}\n              altText={`${t('option.toolsOverlay.signatureAltText')} ${savedSignatureIndex + 1}`}\n            />\n            {!isDeleteDisabled && (\n              <button\n                className=\"icon-button\"\n                data-element=\"defaultSignatureDeleteButton\"\n                onClick={() => deleteHandler(savedSignatureIndex)}\n              >\n                <Icon glyph=\"icon-delete-line\" />\n              </button>\n            )}\n          </div>\n          )\n      }\n    </>\n  );\n};\n\nconst SignatureStylePopup = (props) => {\n  const { t } = props;\n  const [\n    activeToolName,\n    savedSignatures,\n    displayedSignatures,\n    selectedDisplayedSignatureIndex,\n    maxSignaturesCount,\n    displayedSignaturesFilterFunction,\n    isSignatureDeleteButtonDisabled,\n    savedInitials,\n    selectedDisplayedInitialsIndex,\n    signatureMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.getSavedSignatures(state),\n      selectors.getDisplayedSignatures(state),\n      selectors.getSelectedDisplayedSignatureIndex(state),\n      selectors.getMaxSignaturesCount(state),\n      selectors.getDisplayedSignaturesFilterFunction(state),\n      selectors.isElementDisabled(state, 'defaultSignatureDeleteButton'),\n      selectors.getSavedInitials(state),\n      selectors.getSelectedDisplayedInitialsIndex(state),\n      selectors.getSignatureMode(state),\n    ]\n  );\n\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  const dispatch = useDispatch();\n\n  const setSignature = async (index) => {\n    dispatch(actions.setSelectedDisplayedSignatureIndex(index));\n    const { annotation } = displayedSignatures[index];\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool.setSignature(annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool.addSignature();\n      } else {\n        await signatureTool.showPreview();\n        dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      }\n    }\n  };\n\n  const setInitials = async (index) => {\n    dispatch(actions.setSelectedDisplayedInitialsIndex(index));\n    const { annotation } = savedInitials[index];\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool.setInitials(annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool.addInitials();\n        // Default mode is fullSignature. If we dont reset it here there can be a bug where\n        // we preview the initials, but apply the full signature\n        dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      } else {\n        await signatureTool.showInitialsPreview();\n        dispatch(actions.setSignatureMode(SignatureModes.INITIALS));\n      }\n    }\n  };\n\n  const deleteSignatureAndInitials = async (index) => {\n    const isFullSignature = signatureMode === SignatureModes.FULL_SIGNATURE;\n    signatureToolArray[0].deleteSavedInitials(index);\n    signatureToolArray[0].deleteSavedSignature(index);\n    const isDeletingSelectedSignature = selectedDisplayedSignatureIndex === index;\n    const isDeletingSelectedInitials = selectedDisplayedInitialsIndex === index;\n    if (isDeletingSelectedSignature || isDeletingSelectedInitials) {\n      dispatch(actions[isDeletingSelectedSignature ? 'setSelectedDisplayedSignatureIndex' : 'setSelectedDisplayedInitialsIndex'](0));\n      for (const signatureTool of signatureToolArray) {\n        signatureTool.hidePreview();\n      }\n      core.setToolMode(defaultTool);\n      const isDeletingLast = (isFullSignature ? displayedSignatures : savedInitials).length === 1;\n      if (isDeletingLast) {\n        dispatch(actions.closeElements(['toolStylePopup']));\n      }\n    } else if (index < (isFullSignature ? selectedDisplayedSignatureIndex : selectedDisplayedInitialsIndex)) {\n      dispatch(actions.setSelectedDisplayedSignatureIndex(selectedDisplayedSignatureIndex - 1));\n    }\n  };\n\n  const signaturesToDisplay = savedSignatures.filter((signature, index) => displayedSignaturesFilterFunction(signature, index));\n\n  return (\n    <div\n      className=\"signature-style-popup\"\n    >\n      <Tabs id=\"savedSignatures\">\n        <DataElementWrapper\n          dataElement=\"savedSignatureAndInitialsTabs\"\n          className=\"tab-list\">\n          <Tab dataElement={DataElements.SAVED_SIGNATURES_PANEL_BUTTON}>\n            <button className=\"tab-options-button\">\n              {t('option.type.signature')}\n            </button>\n          </Tab>\n          <Tab dataElement={DataElements.SAVED_INTIALS_PANEL_BUTTON}>\n            <button className=\"tab-options-button\">\n              {t('option.type.initials')}\n            </button>\n          </Tab>\n        </DataElementWrapper>\n\n        <TabPanel dataElement={DataElements.SAVED_FULL_SIGNATURES_PANEL}>\n          <SavedSignatures\n            savedSignatures={signaturesToDisplay}\n            onSetHandler={(index) => setSignature(index)}\n            deleteHandler={(index) => deleteSignatureAndInitials(index)}\n            currentlySelectedIndex={selectedDisplayedSignatureIndex}\n            isDeleteDisabled={isSignatureDeleteButtonDisabled}\n            activeToolName={activeToolName} />\n        </TabPanel>\n        <TabPanel dataElement={DataElements.SAVED_INITIALS_PANEL}>\n          <SavedSignatures\n            savedSignatures={savedInitials}\n            onSetHandler={(index) => setInitials(index)}\n            deleteHandler={(index) => deleteSignatureAndInitials(index)}\n            currentlySelectedIndex={selectedDisplayedInitialsIndex}\n            isDeleteDisabled={isSignatureDeleteButtonDisabled}\n            activeToolName={activeToolName} />\n        </TabPanel>\n      </Tabs>\n      <SignatureAddBtn\n        disabled={savedSignatures.length >= maxSignaturesCount || savedInitials.length > maxSignaturesCount}\n      />\n    </div>\n  );\n};\n\nexport default withTranslation()(SignatureStylePopup);\n","import SignatureStylePopup from './SignatureStylePopup';\n\nexport default SignatureStylePopup;","/* eslint-disable */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { Tabs, Tab, TabPanel, TabHeader } from 'components/Tabs';\nimport Icon from 'components/Icon';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport { Swipeable } from 'react-swipeable';\n\nimport './RubberStampOverlay.scss';\nimport DataElements from 'constants/dataElement';\n\nconst TOOL_NAME = 'AnnotationCreateRubberStamp';\n\nconst propTypes = {\n  standardStamps: PropTypes.array.isRequired,\n  customStamps: PropTypes.array.isRequired,\n  setSelectedStampIndex: PropTypes.func.isRequired,\n};\n\nclass RubberStampOverlay extends React.Component {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    isMobile: PropTypes.bool,\n    isActive: PropTypes.bool,\n    t: PropTypes.func.isRequired,\n    i18n: PropTypes.any,\n    openElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    this.stampToolArray = core.getToolsFromAllDocumentViewers(TOOL_NAME);\n  }\n\n  async setRubberStamp(annotation, index) {\n    core.setToolMode(TOOL_NAME);\n    this.props.closeElement('toolStylePopup');\n    for (let tool of this.stampToolArray) {\n      const text = this.props.t(`rubberStamp.${annotation['Icon']}`);\n      await tool.setRubberStamp(annotation, text);\n      tool.showPreview();\n      this.props.setSelectedStampIndex(index);\n    }\n  }\n\n  openCustomSampModal = () => {\n    const { openElement } = this.props;\n    openElement('customStampModal');\n  };\n\n  deleteCustomStamp = index => {\n    for (let tool of this.stampToolArray) {\n      const stamps = tool.getCustomStamps();\n      tool.deleteCustomStamps([stamps[index]]);\n    }\n  };\n\n  render() {\n    const { isMobile, standardStamps, customStamps } = this.props;\n\n    const rubberStamps = standardStamps.map(({ imgSrc, annotation }, index) => (\n      <button\n        key={index}\n        className=\"rubber-stamp\"\n        aria-label={`${this.props.t('annotation.stamp')} ${index + 1}`}\n        onClick={() => this.setRubberStamp(annotation, index)}\n      >\n        <img src={imgSrc} alt=\"\" />\n      </button>\n    ));\n\n    const customImgs = customStamps.map(({ imgSrc, annotation }, index) => (\n      <div key={index} className=\"stamp-row\">\n        <button\n          className=\"stamp-row-content custom-stamp\"\n          aria-label={`${this.props.t('annotation.rubberStamp')} ${index + 1}`}\n          onClick={() => this.setRubberStamp(annotation, standardStamps.length + index)}\n        >\n          <img src={imgSrc} alt=\"\" />\n        </button>\n        <DataElementWrapper\n          dataElement={DataElements.DELETE_CUSTOM_STAMP_BUTTON}\n          className=\"icon\"\n          onClick={() => this.deleteCustomStamp(index)}>\n          <Icon glyph=\"icon-delete-line\" />\n        </DataElementWrapper>\n      </div>\n    ));\n\n    return (\n      <div className=\"rubber-stamp-overlay\" data-element=\"rubberStampOverlay\">\n        <Tabs id=\"rubberStampTab\">\n          <TabHeader dataElement={DataElements.RUBBER_STAMP_TAB_HEADER}>\n            <div className=\"header tab-header\">\n              <div className=\"tab-list\">\n                <Tab dataElement={DataElements.STANDARD_STAMPS_PANEL_BUTTON}>\n                  <button className=\"tab-options-button\" title={this.props.t('tool.Standard')}>\n                    {this.props.t('tool.Standard')}\n                  </button>\n                </Tab>\n                <div className=\"tab-options-divider\" />\n                <Tab dataElement={DataElements.CUSTOM_STAMPS_PANEL_BUTTON}>\n                  <button className=\"tab-options-button\" title={this.props.t('tool.Custom')}>\n                    {this.props.t('tool.Custom')}\n                  </button>\n                </Tab>\n              </div>\n            </div>\n          </TabHeader>\n          <TabPanel dataElement={DataElements.STANDARD_STAMPS_PANEL}>\n            {/* Using Swipeable to stop the bubbling of swiping events when scrolling\n             * Don't know a better way of doing this\n             */}\n            <Swipeable\n              className=\"standard-stamp-panel\"\n              onSwiped={({ event }) => {\n                event.stopPropagation();\n              }}\n            >\n              {rubberStamps}\n            </Swipeable>\n          </TabPanel>\n          <TabPanel dataElement={DataElements.CUSTOM_STAMPS_PANEL}>\n            <div className=\"custom-stamp-panel\">{customImgs}</div>\n            <DataElementWrapper\n              dataElement={DataElements.CREATE_CUSTOM_STAMP_BUTTON}\n              className={classNames({\n                'stamp-row-content': true,\n                'add-btn': true,\n              })}\n              onClick={this.openCustomSampModal}\n            >\n              {this.props.t(`component.createStampButton`)}\n            </DataElementWrapper>\n          </TabPanel>\n        </Tabs>\n      </div>\n    );\n  }\n}\n\nRubberStampOverlay.propTypes = propTypes;\n\nconst mapStateToProps = state => ({\n  activeToolName: selectors.getActiveToolName(state),\n  isActive: selectors.getActiveToolName(state) === TOOL_NAME,\n  dataElement: selectors.getToolButtonObjects(state)[TOOL_NAME].dataElement,\n  standardStamps: selectors.getStandardStamps(state),\n  customStamps: selectors.getCustomStamps(state),\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  setSelectedStampIndex: actions.setSelectedStampIndex,\n  setStandardStamps: actions.setStandardStamps,\n  setCustomStamps: actions.setCustomStamps,\n};\n\nconst ConnectedRubberStampOverlay = connect(mapStateToProps, mapDispatchToProps)(withTranslation()(RubberStampOverlay));\n\nexport default props => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedRubberStampOverlay {...props} isMobile={isMobile} />;\n};\n","import RubberStampOverlay from './RubberStampOverlay';\n\nexport default RubberStampOverlay;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport onClickOutside from 'react-onclickoutside';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport StylePopup from 'components/StylePopup';\nimport SignatureStylePopup from 'components/SignatureStylePopup';\nimport setToolStyles from 'helpers/setToolStyles';\nimport { getOpenedWarningModal, getOpenedColorPicker, getAllOpenedModals } from 'helpers/getElements';\nimport getTextDecoration from 'helpers/getTextDecoration';\nimport { mapToolNameToKey, getDataWithKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isDesktopSize, isMobileSize, isTabletSize } from 'helpers/getDeviceSize';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport RubberStampStylePopup from 'components/RubberStampOverlay';\n\nimport './ToolStylePopup.scss';\nimport getToolStyles from 'helpers/getToolStyles';\nimport DataElements from 'constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\n\nclass ToolStylePopup extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    activeToolStyle: PropTypes.object,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object.isRequired,\n    colorMapKey: PropTypes.string,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool\n  };\n\n  constructor(props) {\n    super(props);\n    this.popup = React.createRef();\n    this.state = {\n      left: 0,\n      top: 0,\n    };\n  }\n\n  handleClickOutside = (e) => {\n    // can have multiple toolsOverlays because of mobile mode\n    const toolsOverlays = Array.from(getRootNode().querySelectorAll(\n      '[data-element=\"toolsOverlay\"]',\n    ));\n    const pageNavOverlays = Array.from(getRootNode().querySelectorAll(\n      '[data-element=\"pageNavOverlay\"]',\n    ));\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    const openedModal = Array.from(getAllOpenedModals());\n\n    const target = e.composedPath()[0];\n\n    const clickedOnToolsOverlay = toolsOverlays.some((toolsOverlay) => {\n      return toolsOverlay?.contains(target);\n    });\n    const clickedOnPageNavOverlay = pageNavOverlays.some((pageNavOverlay) => {\n      return pageNavOverlay?.contains(target);\n    });\n    const clickedOnCreateStampModal = openedModal.some((pageModal) => {\n      return pageModal.classList.contains('CustomStampModal');\n    });\n\n    if (!clickedOnToolsOverlay && !clickedOnPageNavOverlay && !clickedOnCreateStampModal && !warningModal && !colorPicker) {\n      this.props.closeElement('toolStylePopup');\n    }\n  };\n\n  componentDidUpdate(prevProps) {\n    if (!prevProps.isOpen && this.props.isOpen && !this.props.isDisabled) {\n      this.props.closeElements([\n        DataElements.VIEW_CONTROLS_OVERLAY,\n        DataElements.MENU_OVERLAY,\n        DataElements.SIGNATURE_OVERLAY,\n        DataElements.ZOOM_OVERLAY,\n        DataElements.REDACTION_OVERLAY,\n      ]);\n    }\n  }\n\n  handleStyleChange = (property, value) => {\n    const { activeToolName } = this.props;\n    const tool = core.getTool(activeToolName);\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n    setToolStyles(activeToolName, property, value, true);\n  };\n\n  handleRichTextStyleChange = (property, value) => {\n    const { activeToolName, activeToolStyle } = this.props;\n    const tool = core.getTool(activeToolName);\n    const activeToolRichTextStyle = activeToolStyle['RichTextStyle'][0];\n\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n\n    if (property === 'underline' || property === 'line-through') {\n      value = getTextDecoration({ [property]: value }, activeToolRichTextStyle);\n      property = 'text-decoration';\n    }\n\n    const richTextStyle = {\n      0: {\n        ...activeToolRichTextStyle,\n        [property]: value,\n      }\n    };\n\n    setToolStyles(activeToolName, 'RichTextStyle', richTextStyle);\n  }\n\n  handleLineStyleChange = (section, value) => {\n    const { activeToolName } = this.props;\n    if (section === 'start') {\n      setToolStyles(activeToolName, 'StartLineStyle', value);\n    } else if (section === 'end') {\n      setToolStyles(activeToolName, 'EndLineStyle', value);\n    } else if (section === 'middle') {\n      setToolStyles(activeToolName, 'StrokeStyle', value);\n    }\n  };\n\n  render() {\n    const { activeToolGroup, isDisabled, activeToolName, activeToolStyle } = this.props;\n    const isFreeText = activeToolName.includes('FreeText') || activeToolName.includes('Callout');\n    let properties = {};\n    const colorMapKey = mapToolNameToKey(activeToolName);\n    const isRedaction = activeToolName.includes('AnnotationCreateRedaction');\n    const isRectangle = activeToolName.includes('AnnotationCreateRectangle');\n    const showLineStyleOptions = getDataWithKey(colorMapKey).hasLineEndings;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    if (showLineStyleOptions) {\n      const toolStyles = getToolStyles(activeToolName);\n      properties = {\n        StartLineStyle: toolStyles.StartLineStyle,\n        EndLineStyle: toolStyles.EndLineStyle,\n        StrokeStyle: toolStyles.StrokeStyle,\n      };\n    }\n\n    if (isFreeText) {\n      properties = {\n        Font: activeToolStyle.Font,\n        FontSize: activeToolStyle.FontSize,\n        TextAlign: activeToolStyle.TextAlign,\n        TextVerticalAlign: activeToolStyle.TextVerticalAlign,\n        bold: activeToolStyle['RichTextStyle'][0]['font-weight'] === 'bold',\n        italic: activeToolStyle['RichTextStyle'][0]['font-style'] === 'italic',\n        underline: activeToolStyle['RichTextStyle'][0]['text-decoration']?.includes('underline') || activeToolStyle['text-decoration']?.includes('word'),\n        strikeout: activeToolStyle['RichTextStyle'][0]['text-decoration']?.includes('line-through'),\n      };\n    }\n\n    if (isRedaction) {\n      properties = {\n        OverlayText: activeToolStyle['OverlayText'],\n        Font: activeToolStyle['Font'],\n        FontSize: activeToolStyle['FontSize'],\n        TextAlign: activeToolStyle['TextAlign']\n      };\n    }\n\n    if (isRectangle) {\n      properties = {\n        StrokeStyle: activeToolStyle['StrokeStyle'],\n      };\n    }\n    const isEllipseMeasurementTool = activeToolName.includes('AnnotationCreateEllipseMeasurement');\n\n    let Component = (\n      <StylePopup\n        key={activeToolName}\n        toolName={activeToolName}\n        colorMapKey={colorMapKey}\n        style={activeToolStyle}\n        isFreeText={isFreeText}\n        hideSnapModeCheckbox={isEllipseMeasurementTool || !core.isFullPDFEnabled()}\n        onPropertyChange={this.handleStyleChange}\n        onStyleChange={this.handleStyleChange}\n        onSliderChange={this.handleStyleChange}\n        onRichTextStyleChange={this.handleRichTextStyleChange}\n        onLineStyleChange={this.handleLineStyleChange}\n        properties={properties}\n        isRedaction={isRedaction}\n        showLineStyleOptions={showLineStyleOptions}\n      />\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider />\n          <SignatureStylePopup />\n        </React.Fragment>\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider />\n          <RubberStampStylePopup />\n        </React.Fragment>\n      );\n    }\n\n    return (\n      <div\n        className={classNames({\n          ToolStylePopup: true,\n        })}\n        data-element=\"toolStylePopup\"\n        ref={this.popup}\n      >\n        {/* {isMobile && <div className=\"swipe-indicator\" />} */}\n        {Component}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => {\n  const activeToolName = selectors.getActiveToolName(state);\n  const toolButtonDataElement = selectors.getToolButtonDataElement(state, activeToolName);\n\n  return {\n    activeToolName,\n    activeToolGroup: selectors.getActiveToolGroup(state),\n    toolButtonDataElement,\n    activeToolStyle: selectors.getActiveToolStyles(state),\n    isDisabled: selectors.isElementDisabled(state, 'toolStylePopup'),\n    isOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n    toolButtonObjects: selectors.getToolButtonObjects(state),\n    isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n  };\n};\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  closeElements: actions.closeElements,\n};\n\nconst ConnectedToolStylePopup = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(onClickOutside(ToolStylePopup));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTablet = isTabletSize();\n\n  const isDesktop = isDesktopSize();\n\n  return (\n    <ConnectedToolStylePopup {...props} isMobile={isMobile} isTablet={isTablet} isDesktop={isDesktop} />\n  );\n};\n\nexport default connectedComponent;\n","import isUndefined from 'lodash/isUndefined';\n\nexport default (style, richTextStyle) => {\n  let newTextDecoration = '';\n\n  const currentTextDecoration = richTextStyle['text-decoration'];\n\n  const addUnderLine = style['underline'];\n  const removeUnderLine = currentTextDecoration !== 'none' && (!isUndefined(style['underline']) && !style['underline']);\n\n  const addLineThrough = style['line-through'];\n  const removeLineThrough = currentTextDecoration !== 'none' && (!isUndefined(style['line-through']) && !style['line-through']);\n\n  if (addUnderLine) {\n    const hasUnderLine = currentTextDecoration?.indexOf('underline') > -1;\n    newTextDecoration = hasUnderLine ? currentTextDecoration : `${currentTextDecoration || ''} underline`.trim();\n  } else if (removeUnderLine) {\n    newTextDecoration = currentTextDecoration.replace(/underline|word/g, '').trim();\n  }\n\n  if (addLineThrough) {\n    const hasLineThrough = currentTextDecoration?.indexOf('line-through') > -1;\n    newTextDecoration = hasLineThrough ? currentTextDecoration : `${currentTextDecoration || ''} line-through`.trim();\n  } else if (removeLineThrough) {\n    newTextDecoration = currentTextDecoration.replace(/line-through/g, '').trim();\n  }\n\n  return newTextDecoration;\n};","import ToolStylePopup from './ToolStylePopup';\n\nexport default ToolStylePopup;","import ToolsDropdown from './ToolsDropdown';\n\nexport default ToolsDropdown;\n","import React from 'react';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\n\nimport './ToolsDropdown.scss';\n\n\nconst ToolsDropdown = ({ isActive, isDisabled, onClick, style }) => {\n  return (\n    <button\n      className={classNames({\n        'tools-dropdown-container': true,\n        active: isActive,\n        disabled: isDisabled,\n      })}\n      data-element=\"styling-button\"\n      onClick={onClick}\n      style={style}\n    >\n      {isActive ?\n        <Icon className=\"tools-arrow-up\" glyph=\"icon-chevron-up\" /> :\n        <Icon className=\"tools-arrow-down\" glyph=\"icon-chevron-down\" />}\n    </button>\n  );\n};\n\nexport default ToolsDropdown;","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport SignatureAddBtn from 'components/SignatureStylePopup/SignatureAddBtn';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport SignatureModes from 'constants/signatureModes';\nimport { useTranslation } from 'react-i18next';\n\nimport './SelectedSignatureRow.scss';\n\nconst SelectedSignatureRow = () => {\n  const [\n    activeToolName,\n    isToolStyleOpen,\n    displayedSignature,\n    displayedSignatures,\n    savedInitials,\n    displayedInitial,\n    signatureMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.isElementOpen(state, 'toolStylePopup'),\n      selectors.getSelectedDisplayedSignature(state),\n      selectors.getDisplayedSignatures(state),\n      selectors.getSavedInitials(state),\n      selectors.getDisplayedInitial(state),\n      selectors.getSignatureMode(state),\n    ],\n  );\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const onDropDownClick = () => {\n    if (displayedSignatures.length > 0 || savedInitials.length > 0) {\n      dispatch(actions.toggleElement('toolStylePopup'));\n    }\n  };\n\n  const setSignature = async () => {\n    const isFullSignature = signatureMode === SignatureModes.FULL_SIGNATURE;\n    const { annotation } = isFullSignature ? displayedSignature : displayedInitial;\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool[isFullSignature ? 'setSignature' : 'setInitials'](annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool[isFullSignature ? 'addSignature' : 'addInitials']();\n      } else {\n        await signatureTool[isFullSignature ? 'showPreview' : 'showInitialsPreview']();\n      }\n    }\n  };\n\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  const selectedSignature = signatureMode === SignatureModes.INITIALS ? displayedInitial : displayedSignature;\n  return (\n    <div\n      className=\"selected-signature-row\"\n    >\n      {selectedSignature ?\n        <SignatureRowContent\n          imgSrc={selectedSignature.imgSrc}\n          onClick={setSignature}\n          isActive={activeToolName === 'AnnotationCreateSignature'}\n          altText={t('option.toolsOverlay.currentSignature')}\n        /> :\n        <SignatureAddBtn/>}\n      <ToolsDropdown\n        onClick={onDropDownClick}\n        isActive={isToolStyleOpen}\n        isDisabled={displayedSignatures.length === 0 && savedInitials.length === 0}\n      />\n    </div>\n  );\n};\n\nexport default SelectedSignatureRow;\n","import React, { useEffect, useRef, useState, useReducer } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\n\nimport './SelectedRubberStamp.scss';\n\n\nconst usePrevious = (value) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\n\nconst SelectedRubberStamp = () => {\n  const dispatch = useDispatch();\n  const [t, i18n] = useTranslation();\n  const prevLanguage = usePrevious(i18n.language);\n  const [isOpen, setIsOpen] = useState(false);\n  // https://legacy.reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate\n  const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n  const [\n    activeToolName,\n    selectedStamp,\n    activeToolGroup,\n  ] = useSelector((state) => [\n    selectors.getActiveToolName(state),\n    selectors.getSelectedStamp(state),\n    selectors.getActiveToolGroup(state),\n  ]);\n\n  useEffect(() => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n    // eslint-disable-next-line\n  }, []);\n\n  useEffect(() => {\n    const isLanguageChanged = prevLanguage !== i18n.language;\n    if (isLanguageChanged) {\n      dispatch(actions.setStandardStamps(t));\n      dispatch(actions.setCustomStamps(t));\n    }\n  });\n\n  const rubberStampToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateRubberStamp');\n  const onStampsModified = () => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n  };\n\n  useEffect(() => {\n    rubberStampToolArray[0].addEventListener('stampsUpdated', onStampsModified);\n    rubberStampToolArray[0].addEventListener('customStampsDeleted', onStampsModified);\n    return () => {\n      rubberStampToolArray[0].removeEventListener('stampsUpdated', onStampsModified);\n      rubberStampToolArray[0].removeEventListener('customStampsDeleted', onStampsModified);\n    };\n  }, []);\n\n  const [isToolStyleOpen] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'toolStylePopup'),\n    ],\n  );\n\n  useEffect(() => {\n    if (!isOpen && activeToolGroup === 'rubberStampTools' && selectedStamp && i18n.language) {\n      setIsOpen(true);\n      core.setToolMode('AnnotationCreateRubberStamp');\n    } else if (isOpen && activeToolGroup !== 'rubberStampTools') {\n      setIsOpen(false);\n    }\n  });\n\n  return (\n    <div\n      className=\"selected-rubber-stamp-container\"\n    >\n      <div\n        className=\"selected-rubber-stamp\"\n      >\n        {selectedStamp &&\n          <SignatureRowContent\n            imgSrc={selectedStamp.imgSrc}\n            onClick={async () => {\n              core.setToolMode('AnnotationCreateRubberStamp');\n              const text = t(`rubberStamp.${selectedStamp.annotation['Icon']}`);\n              for (const rubberStampTool of rubberStampToolArray) {\n                await rubberStampTool.setRubberStamp(selectedStamp.annotation, text);\n                rubberStampTool.showPreview();\n              }\n              forceUpdate();\n            }}\n            isActive={activeToolName === 'AnnotationCreateRubberStamp' && !rubberStampToolArray[0].isEmptyStamp()}\n            altText={t('option.toolsOverlay.currentStamp')}\n          />\n        }\n      </div>\n      <ToolsDropdown\n        onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n        isActive={isToolStyleOpen}\n      />\n    </div>\n  );\n};\n\nexport default SelectedRubberStamp;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport core from 'core';\n\nimport './SelectedStamp.scss';\n\nconst SelectedStamp = ({ tReady, toolName }) => {\n  const [t] = useTranslation();\n  useEffect(() => {\n    const selectedStampArray = core.getToolsFromAllDocumentViewers(toolName);\n    core.setToolMode(toolName);\n    selectedStampArray.forEach((selectedStamp) => selectedStamp.showPreview());\n  }, [toolName]);\n\n  return (\n    <div\n      className=\"stamp-overlay\"\n    >\n      <div className=\"no-presets\">\n        {tReady ? t('message.toolsOverlayNoPresets') : ''}\n      </div>\n    </div>\n  );\n};\n\nexport default SelectedStamp;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport PresetButton from 'components/ToolButton/PresetButton';\nimport ToolStylePopup from 'components/ToolStylePopup';\nimport SelectedSignatureRow from 'components/SignatureStylePopup/SelectedSignatureRow';\nimport SelectedRubberStamp from 'components/RubberStampOverlay/SelectedRubberStamp';\nimport SelectedStamp from 'components/SelectedStamp/SelectedStamp';\nimport Icon from 'components/Icon';\nimport { withTranslation } from 'react-i18next';\n\nimport defaultTool from 'constants/defaultTool';\nimport DataElements from 'constants/dataElement';\nimport core from 'core';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport actions from 'actions';\nimport { isDesktopSize, isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\nimport classNames from 'classnames';\n\nimport './ToolsOverlay.scss';\n\nclass ToolsOverlay extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object,\n    activeHeaderItems: PropTypes.arrayOf(PropTypes.object),\n    activeToolGroup: PropTypes.string,\n    closeElements: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    showPresets: PropTypes.bool,\n  };\n\n  constructor() {\n    super();\n    this.overlay = React.createRef();\n    this.state = {\n      left: 0,\n      right: 'auto',\n      top: 'auto',\n      isStylingOpen: false,\n      siblingWidth: 0,\n    };\n  }\n\n  componentDidMount() {\n    window.addEventListener('resize', this.handleWindowResize);\n\n    // this component can be opened before mounting to the DOM if users call the setToolMode API\n    // in this case we need to set its position immediately after it's mounted\n    // otherwise its left is 0 instead of left-aligned with the tool group button\n    if (this.props.isOpen) {\n      this.setOverlayPosition();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const clickedOnAnotherToolGroupButton =\n      prevProps.activeToolGroup !== this.props.activeToolGroup;\n\n    if (!prevProps.isOpen && this.props.isOpen) {\n      this.props.closeElements([\n        DataElements.VIEW_CONTROLS_OVERLAY,\n        DataElements.MENU_OVERLAY,\n        DataElements.TOOL_STYLE_POPUP,\n        DataElements.SIGNATURE_OVERLAY,\n        DataElements.ZOOM_OVERLAY,\n        DataElements.REDACTION_OVERLAY,\n      ]);\n      this.setOverlayPosition();\n    }\n\n    if (clickedOnAnotherToolGroupButton) {\n      this.setOverlayPosition();\n    }\n\n    if (this.props.activeToolGroup === '') {\n      this.props.closeElements(['toolStylePopup']);\n    }\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleWindowResize);\n  }\n\n  handleWindowResize = () => {\n    this.setOverlayPosition();\n    this.forceUpdate();\n  };\n\n  setOverlayPosition = () => {\n    const { activeToolGroup, activeHeaderItems } = this.props;\n    const element = activeHeaderItems.find(\n      (item) => item.toolGroup === activeToolGroup,\n    );\n\n    if (element) {\n      this.setState(\n        getOverlayPositionBasedOn(element.dataElement, this.overlay),\n      );\n    }\n  };\n\n  handleCloseClick = () => {\n    const { closeElements } = this.props;\n    closeElements([DataElements.TOOLS_OVERLAY]);\n  };\n\n  render() {\n    const {\n      t,\n      tReady,\n      isDisabled,\n      isOpen,\n      toolNames,\n      activeToolGroup,\n      isToolStyleOpen,\n      isMobile,\n      isInDesktopOnlyMode,\n      showPresets,\n    } = this.props;\n\n    const isSmallComponent = window.isApryseWebViewerWebComponent ? isMobileSize() : isMobile;\n\n    const isVisible = (isOpen || true) && !isDisabled;\n    if (!isVisible) {\n      return null;\n    }\n\n    const toolsWithNoStylingPresets = [\n      'stampTools',\n      'cropTools',\n      'fileAttachmentTools',\n      'radioButtonFieldTools',\n      'checkBoxFieldTools',\n      'contentEditTools',\n      'addParagraphTools',\n      'calibrationTools',\n      'addImageContentTools'\n    ];\n    const noPresets = !activeToolGroup || toolsWithNoStylingPresets.includes(activeToolGroup);\n    let Component = (\n      <div\n        className=\"tool-buttons-container\"\n      >\n        {toolNames.map((toolName, i) => (\n          <PresetButton\n            key={`${toolName}-${i}`}\n            toolName={toolName}\n            isToolStyleOpen={isToolStyleOpen}\n          />\n        ))}\n      </div>\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <SelectedSignatureRow/>\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <SelectedRubberStamp />\n      );\n    } else if (activeToolGroup === 'model3DTools') {\n      Component = (\n        <div className=\"model-3D-btn add-btn\" onClick={() => this.props.openElement('Model3DModal')}>\n          {t('Model3D.add3D')}\n        </div>\n      );\n    } else if (noPresets || !showPresets) {\n      Component = (\n        <div className=\"no-presets\">\n          {tReady ? t('message.toolsOverlayNoPresets') : ''}\n        </div>\n      );\n    } else if (['crossStampTools', 'checkStampTools', 'dotStampTools'].includes(activeToolGroup)) {\n      Component = (\n        <SelectedStamp tReady={tReady} toolName={toolNames[0]}/>\n      );\n    }\n\n    if (noPresets && (isSmallComponent && !isInDesktopOnlyMode)) {\n      return null;\n    }\n\n    return (\n      <Swipeable\n        onSwipedUp={() => this.props.closeElements(['toolStylePopup'])}\n        onSwipedDown={() => this.props.closeElements(['toolStylePopup'])}\n        preventDefaultTouchmoveEvent\n        className={classNames({\n          ToolsOverlayContainer: true\n        })}\n      >\n        <div\n          className={classNames({\n            Overlay: true,\n            ToolsOverlay: true,\n            open: isOpen,\n            shadow: isToolStyleOpen || (isMobile && !isInDesktopOnlyMode)\n          })}\n          ref={this.overlay}\n          data-element={DataElements.TOOLS_OVERLAY}\n        >\n          <div\n            className={classNames({\n              'tools-container': true,\n              'is-styling-open': isToolStyleOpen\n            })}\n          >\n            {Component}\n            {(isSmallComponent && !isInDesktopOnlyMode) &&\n              <button\n                className=\"close-icon-container\"\n                onClick={() => {\n                  this.props.closeElements([DataElements.TOOLS_OVERLAY]);\n                  core.setToolMode(defaultTool);\n                  this.props.setActiveToolGroup('');\n                }}\n              >\n                <Icon\n                  glyph=\"ic_close_black_24px\"\n                  className=\"close-icon\"\n                />\n              </button>}\n          </div>\n          {isToolStyleOpen &&\n            <ToolStylePopup />}\n        </div>\n      </Swipeable>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  isDisabled: selectors.isElementDisabled(state, DataElements.TOOLS_OVERLAY),\n  isOpen: selectors.isElementOpen(state, DataElements.TOOLS_OVERLAY),\n  isToolStyleOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n  toolNames: selectors.getActiveToolNamesForActiveToolGroup(state),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  activeToolGroup: selectors.getActiveToolGroup(state),\n  activeToolName: selectors.getActiveToolName(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  showPresets: selectors.shouldShowPresets(state),\n});\n\nconst mapDispatchToProps = {\n  toggleElement: actions.toggleElement,\n  openElement: actions.openElement,\n  closeElements: actions.closeElements,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolsOverlay = connect(mapStateToProps, mapDispatchToProps)(withTranslation()(ToolsOverlay));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  const isDesktop = isDesktopSize();\n\n  return (\n    <ConnectedToolsOverlay {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} isDesktop={isDesktop} />\n  );\n};\n\nexport default connectedComponent;\n","import ToolsOverlay from './ToolsOverlay';\n\nexport default ToolsOverlay;","export const DISABLED_TOOL_GROUPS = ['toolbarGroup-Edit', 'toolbarGroup-Forms', 'toolbarGroup-EditText'];\nexport const DISABLED_TOOLS_KEYWORDS = ['Content', 'AddParagraphTool', 'FormField', 'Crop'];\n\nexport const SYNC_MODES = {\n  'SYNC': 'SYNC',\n  'SKIP_UNMATCHED': 'SKIP_UNMATCHED',\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport classNames from 'classnames';\nimport Dropdown from 'components/Dropdown';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport core from 'core';\nimport Measure from 'react-measure';\nimport { DISABLED_TOOL_GROUPS } from 'constants/multiViewerContants';\nimport DataElements from 'constants/dataElement';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\n\nimport './Ribbons.scss';\n\nconst FileName = () => {\n  const [isEditing, setIsEditing] = useState(false);\n  const [extension, setExtension] = useState('');\n  const [fileNameWithoutExtension, setFileNameWithoutExtension] = useState('');\n\n  const onClicked = () => {\n    const name = core.getDocument()?.getFilename();\n    const nameArray = name?.split('.');\n    const extension = `.${nameArray[nameArray.length - 1]}`;\n    setFileNameWithoutExtension(name.slice(0, -extension.length) || name);\n    setExtension(extension);\n    setIsEditing(true);\n  };\n\n  const finishEditing = () => {\n    if (fileNameWithoutExtension) {\n      core.getDocument()?.setFilename(`${fileNameWithoutExtension}${extension}`);\n    }\n    setIsEditing(false);\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      finishEditing();\n    }\n    if (e.key === 'Escape') {\n      setIsEditing(false);\n    }\n  };\n\n  return (\n    <DataElementWrapper dataElement={DataElements.OFFICE_EDITOR_FILE_NAME}>\n      {isEditing ? (\n        <input\n          value={fileNameWithoutExtension}\n          onChange={(e) => setFileNameWithoutExtension(e.target.value)}\n          onBlur={finishEditing}\n          onKeyDown={handleKeyDown}\n          autoFocus\n        />\n      ) : (\n        <div className=\"editable-file-name\" onClick={onClicked}>{core.getDocument()?.getFilename()}</div>\n      )}\n    </DataElementWrapper>\n  );\n};\n\nconst Ribbons = () => {\n  const [\n    toolbarGroups,\n    currentToolbarGroup,\n    isMultiViewerMode,\n    customHeadersAdditionalProperties,\n  ] = useSelector((state) => [\n    selectors.getEnabledToolbarGroups(state),\n    selectors.getCurrentToolbarGroup(state),\n    selectors.isMultiViewerMode(state),\n    selectors.getCustomHeadersAdditionalProperties(state),\n  ]);\n  const { t, ready: tReady } = useTranslation();\n  const [ribbonsWidth, setRibbonsWidth] = useState(0);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [hasEnoughCenteredSpace, setHasEnoughCenteredSpace] = useState(false);\n  const ribbonsRef = useRef();\n  const containerRef = useRef();\n  const dispatch = useDispatch();\n\n  const setToolbarGroup = useCallback((group, pickTool) => {\n    dispatch(actions.setToolbarGroup(group, pickTool));\n  }, [dispatch]);\n\n  // don't pick tool for the edit group because the first button in the group is the form editing button,\n  // which is an action button that does not have an active background\n  const shouldPickTool = (toolbarGroup) => toolbarGroup !== 'toolbarGroup-Edit' && toolbarGroup !== 'toolbarGroup-EditText';\n\n  const toggleFormFieldCreationMode = (toolGroup) => {\n    const formFieldCreationManager = core.getFormFieldCreationManager();\n    if (toolGroup === 'toolbarGroup-Forms') {\n      if (!formFieldCreationManager.isInFormFieldCreationMode()) {\n        formFieldCreationManager.startFormFieldCreationMode();\n      }\n    } else if (formFieldCreationManager.isInFormFieldCreationMode()) {\n      formFieldCreationManager.endFormFieldCreationMode();\n    }\n  };\n\n  const toggleContentEditMode = (toolGroup) => {\n    const contentEditManager = core.getContentEditManager();\n    if (toolGroup === 'toolbarGroup-EditText') {\n      if (!contentEditManager.isInContentEditMode()) {\n        contentEditManager.startContentEditMode();\n      }\n    } else if (contentEditManager.isInContentEditMode()) {\n      contentEditManager.endContentEditMode();\n    }\n  };\n\n  useEffect(() => {\n    // When we initialize the Viewer we don't want to start off in the Forms tab as\n    // this may confuse users, since in Forms creation mode regular annotations are hidden.\n    // If for some reason we are in this mode on init, we default to switching to the Annotate tab\n\n    // We also don't want to start off in Edit Text mode since users could\n    // accidentially change something in their document irreversibly and may be confused by\n    // the appearance of the content edit warning without changing anything\n    if (currentToolbarGroup === 'toolbarGroup-Forms' || currentToolbarGroup === 'toolbarGroup-EditText') {\n      setToolbarGroup('toolbarGroup-Annotate', shouldPickTool('toolbarGroup-Annotate'));\n    }\n  }, []);\n\n  useEffect(() => {\n    if (ribbonsRef?.current && containerRef?.current) {\n      const ribbonsWidth = ribbonsRef.current.getBoundingClientRect().width + 4;\n      const containerWidth = containerRef.current.getBoundingClientRect().width;\n\n      const spaceLeftOfContainer = window.innerWidth / 2 - containerRef.current.getBoundingClientRect().left;\n      const spaceForLeftHalfOfRibbons = ribbonsWidth / 2;\n      // If there is enough space for the Ribbon to fit in half the screen, move it to the center\n      // otherwise keep it next to the buttons on the left\n      const spaceForRibbons = Math.max(spaceLeftOfContainer, spaceForLeftHalfOfRibbons);\n\n      ribbonsRef.current.style.left = `${spaceForRibbons}px`;\n\n      if (ribbonsWidth < containerWidth) {\n        setHasEnoughCenteredSpace(true);\n      } else {\n        setHasEnoughCenteredSpace(false);\n      }\n    }\n  }, [ribbonsWidth, containerWidth, ribbonsRef, containerRef]);\n\n  if (toolbarGroups.length === 0 || !tReady) {\n    return null;\n  }\n\n  const getToolbarTranslationString = (toolbarGroup) => {\n    const customHeaderProperties = customHeadersAdditionalProperties[toolbarGroup];\n    if (customHeaderProperties && customHeaderProperties.name) {\n      return customHeaderProperties.name;\n    }\n    return `option.toolbarGroup.${toolbarGroup}`;\n  };\n\n  const filteredToolBarGroup = isMultiViewerMode ?\n    toolbarGroups.filter((group) => !DISABLED_TOOL_GROUPS.includes(group)) : toolbarGroups;\n\n  if (isOfficeEditorMode()) {\n    return <FileName />;\n  }\n\n  return (\n    <Measure\n      bounds\n      innerRef={containerRef}\n      onResize={({ bounds }) => {\n        setContainerWidth(bounds.width);\n      }}\n    >\n      {({ measureRef }) => (\n        <DataElementWrapper\n          dataElement=\"ribbons\"\n          className={classNames('ribbons-container centered-on-empty-space')}\n          ref={measureRef}\n        >\n          <Measure\n            bounds\n            innerRef={ribbonsRef}\n            onResize={({ bounds }) => {\n              setRibbonsWidth(bounds.width);\n            }}\n          >\n            {({ measureRef }) => (\n              <div\n                ref={measureRef}\n                className={classNames({\n                  'ribbons': true,\n                  'is-hidden': !hasEnoughCenteredSpace,\n                })}\n              >\n                {filteredToolBarGroup.map((toolbarGroup) => (\n                  <button\n                    key={toolbarGroup}\n                    data-element={`${toolbarGroup}`}\n                    className={classNames({\n                      'ribbon-group': true,\n                      'active': toolbarGroup === currentToolbarGroup,\n                    })}\n                    onClick={() => {\n                      toggleFormFieldCreationMode(toolbarGroup);\n                      toggleContentEditMode(toolbarGroup);\n                      setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n                    }}\n                  >\n                    {t(getToolbarTranslationString(toolbarGroup))}\n                  </button>\n                ))\n                }\n              </div>\n            )}\n          </Measure>\n          <div\n            className={classNames({\n              'ribbons': true,\n              'is-hidden': hasEnoughCenteredSpace,\n            })}\n          >\n            <Dropdown\n              dataElement=\"ribbonsDropdown\"\n              items={filteredToolBarGroup}\n              getTranslationLabel={getToolbarTranslationString}\n              currentSelectionKey={currentToolbarGroup}\n              onClickItem={(toolbarGroup) => {\n                toggleFormFieldCreationMode(toolbarGroup);\n                toggleContentEditMode(toolbarGroup);\n                setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n              }}\n            />\n          </div>\n        </DataElementWrapper>\n      )}\n    </Measure>\n  );\n};\n\nexport default Ribbons;\n","import Ribbons from './Ribbons';\n\nexport default Ribbons;","import ApplyFormFieldButton from './ApplyFormFieldButton';\n\nexport default ApplyFormFieldButton;","import React, { useCallback } from 'react';\nimport Button from 'components/Button';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport './ApplyFormFieldButton.scss';\n\nconst ApplyFormFieldButton = () => {\n  const dispatch = useDispatch();\n  const formFieldCreationManager = core.getFormFieldCreationManager();\n\n  const applyFormFields = useCallback(() => {\n    formFieldCreationManager.endFormFieldCreationMode();\n    dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n  }, [formFieldCreationManager, dispatch]);\n\n  return (\n    <Button\n      dataElement=\"applyFormFieldButton\"\n      label=\"formField.apply\"\n      className=\"apply-form-field-button\"\n      onClick={applyFormFields}\n    />\n  );\n};\n\nexport default ApplyFormFieldButton;","import core from 'core';\n\nexport const undoButton = {\n  type: 'actionButton',\n  style: { 'marginLeft': '0px' },\n  dataElement: 'undoButton',\n  title: 'action.undo',\n  img: 'icon-operation-undo',\n  onClick: (activeDocumentViewerKey) => {\n    core.undo(activeDocumentViewerKey);\n  },\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: true,\n  isNotClickableSelector: (state) => !state.viewer.canUndo[state.viewer.activeDocumentViewerKey]\n};\n\nexport const redoButton = {\n  type: 'actionButton',\n  dataElement: 'redoButton',\n  title: 'action.redo',\n  img: 'icon-operation-redo',\n  onClick: (activeDocumentViewerKey) => {\n    core.redo(activeDocumentViewerKey);\n  },\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: true,\n  isNotClickableSelector: (state) => !state.viewer.canRedo[state.viewer.activeDocumentViewerKey]\n};\n","// web fonts from https://www.pdftron.com/webfonts/v2/fonts.json\n// that support bold, italic, and bold-italic\n// and can be used in content editing\nexport default [\n  'Arimo',\n  'Caladea',\n  'Carlito',\n  'Cousine',\n  'Liberation Serif',\n  'Open Sans',\n  'Roboto',\n  'Roboto Mono',\n  'Tinos',\n];\n","import localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\n// return true if user already seen the warning model and agree to hide it\nfunction isContentEditWarningHidden() {\n  const instanceId = getInstanceID();\n  if (localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem(`${instanceId}-hideContentEditWarning`)) {\n    return JSON.parse(window.localStorage.getItem(`${instanceId}-hideContentEditWarning`));\n  }\n  return false;\n}\n\nexport default isContentEditWarningHidden;","// default annotations that have inline comment enabled on select\nexport default [\n  window.Core.Annotations.TextUnderlineAnnotation,\n  window.Core.Annotations.TextHighlightAnnotation,\n  window.Core.Annotations.FreeTextAnnotation,\n  window.Core.Annotations.CaretAnnotation,\n  window.Core.Annotations.StickyAnnotation,\n  window.Core.Annotations.TextSquigglyAnnotation,\n  window.Core.Annotations.TextStrikeoutAnnotation,\n];","import React from 'react';\nimport actions from 'actions';\nimport core from 'core';\nimport ToggleZoomOverlay from 'components/ToggleZoomOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport Ribbons from 'components/Ribbons';\nimport ApplyFormFieldButton from 'components/ApplyFormFieldButton';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\nimport { defaultZoomList } from 'constants/zoomFactors';\nimport { copyMapWithDataProperties } from 'constants/map';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\nimport getHashParameters from 'helpers/getHashParameters';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\nimport defaultFonts from 'constants/defaultFonts';\nimport webFonts from 'constants/webFonts';\nimport isContentEditWarningHidden from 'helpers/isContentEditWarningHidden';\nimport presetCropDimensions from 'constants/presetCropDimensions';\nimport presetNewPageDimensions from 'constants/presetNewPageDimensions';\nimport defaultDateTimeFormats from 'constants/defaultDateTimeFormats';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport { getMeasurementScalePreset, initialScale } from 'constants/measurementScale';\nimport { availableFontFaces, cssFontValues } from 'constants/officeEditorFonts';\nimport SignatureModes from 'constants/signatureModes';\nimport { ShortcutKeys } from 'helpers/hotkeysManager';\nimport defaultToolsWithInlineComment from 'src/constants/defaultToolsWithInlineCommentOnAnnotationSelected';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nconst { ToolNames } = window.Core.Tools;\nconst instanceId = getInstanceID();\n\nexport default {\n  viewer: {\n    initalsOffset: 0,\n    isInitialsModeEnabled: false,\n    isMultiViewerMode: false,\n    isMultiViewerReady: false,\n    multiViewerSyncScrollMode: SYNC_MODES.SKIP_UNMATCHED,\n    syncViewer: null,\n    isCompareStarted: false,\n    isComparisonOverlayEnabled: true,\n    activeDocumentViewerKey: 1,\n    zoomLevels: {\n      1: 1,\n      2: 1,\n    },\n    canUndo: {\n      1: false,\n      2: false,\n    },\n    canRedo: {\n      1: false,\n      2: false,\n    },\n    TabManager: null,\n    tabs: [],\n    activeTab: 0,\n    isMultiTab: false,\n    thumbnailSelectingPages: false,\n    isInDesktopOnlyMode: false,\n    toolbarGroup: DataElements.ANNOTATE_TOOLBAR_GROUP,\n    activeTheme: 'light',\n    currentLanguage: 'en',\n    disabledElements: {\n      [DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON]: { disabled: true, priority: 2 },\n      [DataElements.SAVED_SIGNATURES_TAB]: { disabled: true, priorty: 2 },\n      [DataElements.CALIBRATION_POPUP_BUTTON]: { disabled: true, priorty: 2 },\n      [DataElements.LEGACY_RICH_TEXT_POPUP]: { disabled: true, priority: 2 },\n      [DataElements.LOGO_BAR]: { disabled: true, priority: 2 },\n    },\n    selectedScale: initialScale,\n    isAddingNewScale: false,\n    calibrationInfo: {\n      isCalibration: false,\n      tempScale: '',\n      previousToolName: '',\n      isFractionalUnit: false,\n      defaultUnit: '',\n    },\n    deleteScale: '',\n    openElements: {\n      header: true,\n      toolsHeader: true,\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: true,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: true,\n      [DataElements.FORM_FIELD_INDICATOR_CONTAINER]: true,\n      [DataElements.CUSTOM_MODAL]: true,\n    },\n    hiddenElements: {},\n    panelWidths: {\n      leftPanel: 264,\n      searchPanel: 293,\n      notesPanel: 293,\n      redactionPanel: 330,\n      textEditingPanel: 330,\n      wv3dPropertiesPanel: 307,\n      comparePanel: 330,\n      watermarkPanel: 330,\n    },\n    documentContainerWidth: null,\n    documentContainerHeight: null,\n    lastPickedToolForGroup: {},\n    lastPickedToolGroup: {},\n    highContrastMode: getHashParameters('highContrastMode', false),\n    notesInLeftPanel: getHashParameters('notesInLeftPanel', false),\n    autoFocusNoteOnAnnotationSelection: getHashParameters('autoFocusNoteOnAnnotationSelection', true),\n    fadePageNavigationComponent: true,\n    pageDeletionConfirmationModalEnabled: true,\n    outlineControlVisibility: false,\n    autoExpandOutlines: getHashParameters('autoExpandOutlines', false),\n    isAnnotationNumberingEnabled: getHashParameters('enableAnnotationNumbering', false),\n    bookmarkIconShortcutVisibility: false,\n    hideContentEditWarning: isContentEditWarningHidden(),\n    currentContentBeingEdited: null,\n    pageManipulationOverlayAlternativePosition: null,\n    pageManipulationOverlayOpenByRightClick: true,\n    headers: {\n      default: [\n        {\n          type: 'toggleElementButton',\n          dataElement: DataElements.MENU_OVERLAY_BUTTON,\n          element: DataElements.MENU_OVERLAY,\n          img: 'ic-hamburger-menu',\n          title: 'component.menuOverlay',\n        },\n        {\n          type: 'divider',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-sidebar-line',\n          element: 'leftPanel',\n          dataElement: 'leftPanelButton',\n          title: 'component.leftPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-page-manipulation-line',\n          element: DataElements.VIEW_CONTROLS_OVERLAY,\n          dataElement: DataElements.VIEW_CONTROLS_OVERLAY_BUTTON,\n          title: 'component.viewControlsOverlay',\n        },\n        {\n          type: 'divider',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'customElement',\n          render: () => <ToggleZoomOverlay />,\n          dataElement: DataElements.ZOOM_OVERLAY_BUTTON,\n          element: DataElements.ZOOM_OVERLAY,\n          hiddenOnMobileDevice: true,\n        },\n        { type: 'divider', hidden: ['small-mobile', 'mobile', 'tablet'] },\n        { type: 'toolButton', toolName: 'Pan' },\n        // For mobile\n        { type: 'toolButton', toolName: 'TextSelect' },\n        { type: 'toolButton', toolName: 'AnnotationEdit', hidden: ['small-mobile', 'mobile'] },\n        {\n          type: 'customElement',\n          render: () => <Ribbons />,\n          className: 'custom-ribbons-container',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n          element: 'notesPanel',\n          onClick: (dispatch) => {\n            // Trigger with a delay so we ensure the panel is open before we compute correct coordinates of annotation\n            setTimeout(() => dispatch(actions.toggleElement('annotationNoteConnectorLine')), 400);\n          },\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'actionButton',\n          dataElement: 'moreButton',\n          title: 'action.more',\n          img: 'icon-tools-more',\n          onClick: (dispatch) => {\n            dispatch(actions.setActiveHeaderGroup('small-mobile-more-buttons'));\n            core.setToolMode(defaultTool);\n          },\n          hidden: ['mobile', 'tablet', 'desktop'],\n        },\n      ],\n      'small-mobile-more-buttons': [\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          element: 'notesPanel',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n        },\n        { type: 'spacer' },\n        {\n          type: 'actionButton',\n          dataElement: 'defaultHeaderButton',\n          titile: 'action.close',\n          img: 'ic_close_black_24px',\n          onClick: (dispatch) => {\n            dispatch(actions.setActiveHeaderGroup('default'));\n            core.setToolMode(defaultTool);\n          },\n        },\n      ],\n      [DataElements.VIEW_TOOLBAR_GROUP]: [],\n      [DataElements.ANNOTATE_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'underlineTools',\n          dataElement: 'underlineToolGroupButton',\n          title: 'annotation.underline',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'highlightTools',\n          dataElement: 'highlightToolGroupButton',\n          title: 'annotation.highlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stickyTools',\n          dataElement: 'stickyToolGroupButton',\n          title: 'annotation.stickyNote',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'squigglyTools',\n          dataElement: 'squigglyToolGroupButton',\n          title: 'annotation.squiggly',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'strikeoutTools',\n          dataElement: 'strikeoutToolGroupButton',\n          title: 'annotation.strikeout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'markInsertTextTools',\n          dataElement: 'markInsertTextGroupButton',\n          title: 'annotation.markInsertText',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'markReplaceTextTools',\n          dataElement: 'markReplaceTextGroupButton',\n          title: 'annotation.markReplaceText',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          ...undoButton,\n          hideOnClick: true,\n        },\n        {\n          ...redoButton,\n          hideOnClick: true,\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.SHAPES_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'lineTools',\n          dataElement: 'lineToolGroupButton',\n          title: 'annotation.line',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polyLineTools',\n          dataElement: 'polyLineToolGroupButton',\n          title: 'annotation.polyline',\n        },\n\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arrowTools',\n          dataElement: 'arrowToolGroupButton',\n          title: 'annotation.arrow',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arcTools',\n          dataElement: 'arcToolGroupButton',\n          title: 'annotation.arc',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseTools',\n          dataElement: 'ellipseToolGroupButton',\n          title: 'annotation.ellipse',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polygonTools',\n          dataElement: 'polygonToolGroupButton',\n          title: 'annotation.polygon',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudTools',\n          dataElement: 'polygonCloudToolGroupButton',\n          title: 'annotation.polygonCloud',\n        },\n\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.REDACT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'redactionTools',\n          dataElement: 'redactionToolGroupButton',\n          title: 'annotation.redact',\n        },\n        {\n          type: 'actionButton',\n          toolGroup: 'pageRedactionTools',\n          dataElement: 'pageRedactionToolGroupButton',\n          title: 'action.redactPages',\n          showColor: 'never',\n          img: 'icon-tool-page-redact',\n          onClick: (dispatch) => dispatch(actions.openElement(DataElements.PAGE_REDACT_MODAL)),\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-redact-panel',\n          element: DataElements.REDACTION_PANEL,\n          dataElement: DataElements.REDACTION_PANEL_TOGGLE,\n          title: 'component.redactionPanel',\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.INSERT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stampTools',\n          img: 'icon-tool-image-line',\n          dataElement: 'stampToolGroupButton',\n          title: 'annotation.image',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'fileAttachmentTools',\n          img: 'ic_fileattachment_24px',\n          dataElement: 'fileAttachmentToolGroupButton',\n          title: 'annotation.fileattachment',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'calloutTools',\n          dataElement: 'calloutToolGroupButton',\n          title: 'annotation.callout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'model3DTools',\n          img: 'icon-tool-model3d',\n          dataElement: 'threeDToolGroupButton',\n          title: 'annotation.3D',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'changeViewTools',\n          dataElement: 'changeViewToolGroupButton',\n          title: 'annotation.changeView',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.MEASURE_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        // @todo: add \"measurement\" to data-element names in 9.0. Note: do not rename arcMeasurementTools to arcTools as it is being used elsewhere.\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'distanceTools',\n          dataElement: 'distanceToolGroupButton',\n          title: 'annotation.distanceMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arcMeasurementTools',\n          dataElement: 'arcMeasurementToolGroupButton',\n          title: 'annotation.arcMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'perimeterTools',\n          dataElement: 'perimeterToolGroupButton',\n          title: 'annotation.perimeterMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'areaTools',\n          dataElement: 'areaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.ellipseMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleAreaTools',\n          dataElement: 'rectangleAreaToolGroupButton',\n          title: 'annotation.rectangularAreaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudyRectangleAreaTools',\n          dataElement: 'cloudyRectangleAreaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'countTools',\n          dataElement: 'countToolGroupButton',\n          title: 'annotation.countMeasurement',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.EDIT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cropTools',\n          dataElement: 'cropToolGroupButton',\n          title: 'annotation.crop',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'snippingTools',\n          dataElement: 'snippingToolGroupButton',\n          title: 'annotation.snipping',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'contentEditTools',\n          dataElement: 'contentEditButton',\n          title: 'action.edit',\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-watermark-panel',\n          element: DataElements.WATERMARK_PANEL,\n          dataElement: DataElements.WATERMARK_PANEL_TOGGLE,\n          title: 'component.watermarkPanel',\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n      [DataElements.EDIT_TEXT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'addParagraphTools',\n          dataElement: 'addParagraphToolGroupButton',\n          title: 'action.addParagraph',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'addImageContentTools',\n          dataElement: 'addImageContentToolGroupButton',\n          title: 'annotation.newImage',\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n      [DataElements.FILL_AND_SIGN_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'crossStampTools',\n          img: 'icon-tool-cross-stamp',\n          dataElement: 'crossStampToolButton',\n          title: 'annotation.formFillCross',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkStampTools',\n          img: 'icon-tool-check-stamp',\n          dataElement: 'checkStampToolButton',\n          title: 'annotation.formFillCheckmark',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dotStampTools',\n          img: 'icon-tool-dot-stamp',\n          dataElement: 'dotStampToolButton',\n          title: 'annotation.formFillDot',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dateFreeTextTools',\n          dataElement: 'dateFreeTextToolButton',\n          title: 'annotation.dateFreeText',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.FORMS_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'sigFieldTools',\n          dataElement: 'signatureFieldToolGroupButton',\n          title: 'annotation.signatureFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'formFieldTools',\n          dataElement: 'textFieldToolGroupButton',\n          title: 'annotation.textField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkBoxFieldTools',\n          dataElement: 'checkBoxFieldToolGroupButton',\n          title: 'annotation.checkBoxFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'radioButtonFieldTools',\n          dataElement: 'radioButtonFieldToolGroupButton',\n          title: 'annotation.radioButtonFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'listBoxFieldTools',\n          dataElement: 'listBoxFieldToolGroupButton',\n          title: 'annotation.listBoxFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'comboBoxFieldTools',\n          dataElement: 'comboBoxFieldToolGroupButton',\n          title: 'annotation.comboBoxFormField',\n          showColor: 'always',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'customElement',\n          dataElement: 'applyFormFieldsButton',\n          render: () => <ApplyFormFieldButton />,\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n    },\n    customHeadersAdditionalProperties: {},\n    enableRightClickAnnotationPopup: false,\n    annotationPopup: [\n      { dataElement: 'viewFileButton' },\n      { dataElement: 'annotationCommentButton' },\n      { dataElement: 'annotationStyleEditButton' },\n      { dataElement: 'annotationDateEditButton' },\n      { dataElement: 'annotationRedactButton' },\n      { dataElement: 'annotationCropButton' },\n      { dataElement: 'annotationContentEditButton' },\n      { dataElement: 'annotationClearSignatureButton' },\n      { dataElement: 'annotationGroupButton' },\n      { dataElement: 'annotationUngroupButton' },\n      { dataElement: 'formFieldEditButton' },\n      { dataElement: DataElements.CALIBRATION_POPUP_BUTTON },\n      { dataElement: 'linkButton' },\n      { dataElement: 'fileAttachmentDownload' },\n      { dataElement: 'annotationDeleteButton' },\n      { dataElement: 'shortCutKeysFor3D' },\n      { dataElement: 'playSoundButton' },\n    ],\n    textPopup: [\n      { dataElement: 'copyTextButton' },\n      { dataElement: 'textHighlightToolButton' },\n      { dataElement: 'textUnderlineToolButton' },\n      { dataElement: 'textSquigglyToolButton' },\n      { dataElement: 'textStrikeoutToolButton' },\n      { dataElement: 'textRedactToolButton' },\n      { dataElement: 'linkButton' },\n    ],\n    contextMenuPopup: [\n      { dataElement: 'panToolButton' },\n      { dataElement: 'stickyToolButton' },\n      { dataElement: 'highlightToolButton' },\n      { dataElement: 'freeHandToolButton' },\n      { dataElement: 'freeHandHighlightToolButton' },\n      { dataElement: 'freeTextToolButton' },\n      { dataElement: 'markInsertTextToolButton' },\n      { dataElement: 'markReplaceTextToolButton' },\n    ],\n    menuOverlay: [\n      { dataElement: 'newDocumentButton' },\n      { dataElement: 'filePickerButton' },\n      { dataElement: 'fullscreenButton' },\n      { dataElement: 'downloadButton' },\n      { dataElement: 'saveAsButton' },\n      { dataElement: 'printButton' },\n      { dataElement: 'themeChangeButton' },\n      { dataElement: 'languageButton' },\n    ],\n    pageManipulationOverlay: [\n      { dataElement: 'pageAdditionalControls' },\n      { type: 'divider' },\n      { dataElement: 'pageRotationControls' },\n      { type: 'divider' },\n      { dataElement: 'pageManipulationControls' },\n    ],\n    multiPageManipulationControls: [\n      { dataElement: 'leftPanelPageTabsRotate' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsOperations' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMore' },\n    ],\n    multiPageManipulationControlsLarge: [\n      { dataElement: 'leftPanelPageTabsRotate' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsOperations' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMove' },\n    ],\n    multiPageManipulationControlsSmall: [\n      { dataElement: 'leftPanelPageTabsRotateSmall' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMoreSmall' },\n    ],\n    thumbnailControlMenu: [{ dataElement: 'thumbRotateClockwise' }, { dataElement: 'thumbDelete' }],\n    toolButtonObjects: {\n      AnnotationCreateCountMeasurement: {\n        dataElement: 'countMeasurementToolButton',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement2: {\n        dataElement: 'countMeasurementToolButton2',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement3: {\n        dataElement: 'countMeasurementToolButton3',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement4: {\n        dataElement: 'countMeasurementToolButton4',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement: {\n        dataElement: 'distanceMeasurementToolButton',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement2: {\n        dataElement: 'distanceMeasurementToolButton2',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement3: {\n        dataElement: 'distanceMeasurementToolButton3',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement4: {\n        dataElement: 'distanceMeasurementToolButton4',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement: {\n        dataElement: 'perimeterMeasurementToolButton',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement2: {\n        dataElement: 'perimeterMeasurementToolButton2',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement3: {\n        dataElement: 'perimeterMeasurementToolButton3',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement4: {\n        dataElement: 'perimeterMeasurementToolButton4',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement: {\n        dataElement: 'arcMeasurementToolButton',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement2: {\n        dataElement: 'arcMeasurementToolButton2',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement3: {\n        dataElement: 'arcMeasurementToolButton3',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement4: {\n        dataElement: 'arcMeasurementToolButton4',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement: {\n        dataElement: 'areaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement2: {\n        dataElement: 'areaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement3: {\n        dataElement: 'areaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement4: {\n        dataElement: 'areaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement: {\n        dataElement: 'ellipseMeasurementToolButton',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement2: {\n        dataElement: 'ellipseMeasurementToolButton2',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement3: {\n        dataElement: 'ellipseMeasurementToolButton3',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement4: {\n        dataElement: 'ellipseMeasurementToolButton4',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement: {\n        dataElement: 'rectangularAreaMeasurementToolButton',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement2: {\n        dataElement: 'rectangularAreaMeasurementToolButton2',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement3: {\n        dataElement: 'rectangularAreaMeasurementToolButton3',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement4: {\n        dataElement: 'rectangularAreaMeasurementToolButton4',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement2: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement3: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement4: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand: {\n        dataElement: 'freeHandToolButton',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand2: {\n        dataElement: 'freeHandToolButton2',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand3: {\n        dataElement: 'freeHandToolButton3',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand4: {\n        dataElement: 'freeHandToolButton4',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight: {\n        dataElement: 'freeHandHighlightToolButton',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight2: {\n        dataElement: 'freeHandHighlightToolButton2',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight3: {\n        dataElement: 'freeHandHighlightToolButton3',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight4: {\n        dataElement: 'freeHandHighlightToolButton4',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight: {\n        dataElement: 'highlightToolButton',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight2: {\n        dataElement: 'highlightToolButton2',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight3: {\n        dataElement: 'highlightToolButton3',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight4: {\n        dataElement: 'highlightToolButton4',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline: {\n        dataElement: 'underlineToolButton',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline2: {\n        dataElement: 'underlineToolButton2',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline3: {\n        dataElement: 'underlineToolButton3',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline4: {\n        dataElement: 'underlineToolButton4',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly: {\n        dataElement: 'squigglyToolButton',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly2: {\n        dataElement: 'squigglyToolButton2',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly3: {\n        dataElement: 'squigglyToolButton3',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly4: {\n        dataElement: 'squigglyToolButton4',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout: {\n        dataElement: 'strikeoutToolButton',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout2: {\n        dataElement: 'strikeoutToolButton2',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout3: {\n        dataElement: 'strikeoutToolButton3',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout4: {\n        dataElement: 'strikeoutToolButton4',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText: {\n        dataElement: 'freeTextToolButton',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText2: {\n        dataElement: 'freeTextToolButton2',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText3: {\n        dataElement: 'freeTextToolButton3',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText4: {\n        dataElement: 'freeTextToolButton4',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText: {\n        dataElement: 'dateFreeTextToolButton',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText2: {\n        dataElement: 'dateFreeTextToolButton2',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText3: {\n        dataElement: 'dateFreeTextToolButton3',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText4: {\n        dataElement: 'dateFreeTextToolButton4',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText: {\n        dataElement: 'markInsertTextToolButton',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText2: {\n        dataElement: 'markInsertTextToolButton2',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText3: {\n        dataElement: 'markInsertTextToolButton3',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText4: {\n        dataElement: 'markInsertTextToolButton4',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText: {\n        dataElement: 'markReplaceToolButton',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText2: {\n        dataElement: 'markReplaceToolButton2',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText3: {\n        dataElement: 'markReplaceToolButton3',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText4: {\n        dataElement: 'markReplaceToolButton4',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout: {\n        dataElement: 'calloutToolButton',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout2: {\n        dataElement: 'calloutToolButton2',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout3: {\n        dataElement: 'calloutToolButton3',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout4: {\n        dataElement: 'calloutToolButton4',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky: {\n        dataElement: 'stickyToolButton',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky2: {\n        dataElement: 'stickyToolButton2',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky3: {\n        dataElement: 'stickyToolButton3',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky4: {\n        dataElement: 'stickyToolButton4',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle: {\n        dataElement: 'rectangleToolButton',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle2: {\n        dataElement: 'rectangleToolButton2',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle3: {\n        dataElement: 'rectangleToolButton3',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle4: {\n        dataElement: 'rectangleToolButton4',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse: {\n        dataElement: 'ellipseToolButton',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse2: {\n        dataElement: 'ellipseToolButton2',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse3: {\n        dataElement: 'ellipseToolButton3',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse4: {\n        dataElement: 'ellipseToolButton4',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc: {\n        dataElement: 'arcToolButton',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc2: {\n        dataElement: 'arcToolButton2',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc3: {\n        dataElement: 'arcToolButton3',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc4: {\n        dataElement: 'arcToolButton4',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine: {\n        dataElement: 'lineToolButton',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine2: {\n        dataElement: 'lineToolButton2',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine3: {\n        dataElement: 'lineToolButton3',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine4: {\n        dataElement: 'lineToolButton4',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline: {\n        dataElement: 'polylineToolButton',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline2: {\n        dataElement: 'polylineToolButton2',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline3: {\n        dataElement: 'polylineToolButton3',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline4: {\n        dataElement: 'polylineToolButton4',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon: {\n        dataElement: 'polygonToolButton',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon2: {\n        dataElement: 'polygonToolButton2',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon3: {\n        dataElement: 'polygonToolButton3',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon4: {\n        dataElement: 'polygonToolButton4',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud: {\n        dataElement: 'cloudToolButton',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud2: {\n        dataElement: 'cloudToolButton2',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud3: {\n        dataElement: 'cloudToolButton4',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud4: {\n        dataElement: 'cloudToolButton5',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      [ToolNames.CALIBRATION_MEASUREMENT]: {\n        dataElement: 'calibrationToolButton',\n        title: 'annotation.calibration',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'calibrationTools',\n        showColor: 'never',\n      },\n      AnnotationCreateArrow: {\n        dataElement: 'arrowToolButton',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow2: {\n        dataElement: 'arrowToolButton2',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow3: {\n        dataElement: 'arrowToolButton3',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow4: {\n        dataElement: 'arrowToolButton4',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSignature: {\n        dataElement: 'signatureToolButton',\n        title: 'annotation.signature',\n        img: 'icon-tool-signature',\n        group: 'signatureTools',\n        showColor: 'never',\n      },\n      AnnotationCreateFileAttachment: {\n        dataElement: 'fileAttachmentToolButton',\n        title: 'annotation.fileattachment',\n        img: 'ic_fileattachment_24px',\n        group: 'fileAttachmentTools',\n        showColor: 'never',\n      },\n      AnnotationCreateThreeD: {\n        dataElement: 'threeDToolGroupButton',\n        title: 'annotation.3D',\n        img: 'icon-tool-model3d',\n        group: 'model3DTools',\n        showColor: 'never',\n      },\n      AnnotationCreateStamp: {\n        dataElement: 'stampToolButton',\n        title: 'annotation.stamp',\n        img: 'icon-tool-image-line',\n        group: 'stampTools',\n        showColor: 'active',\n      },\n      AnnotationCreateRubberStamp: {\n        dataElement: 'rubberStampToolButton',\n        title: 'annotation.rubberStamp',\n        img: 'icon-tool-stamp-line',\n        group: 'rubberStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CROSS]: {\n        dataElement: 'crossStampToolButton',\n        title: 'annotation.formFillCross',\n        img: 'icon-tool-cross-stamp',\n        group: 'crossStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CHECKMARK]: {\n        dataElement: 'checkStampToolButton',\n        title: 'annotation.formFillCheckmark',\n        img: 'icon-tool-check-stamp',\n        group: 'checkStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_DOT]: {\n        dataElement: 'dotStampToolButton',\n        title: 'annotation.formFillDot',\n        img: 'icon-tool-dot-stamp',\n        group: 'dotStampTools',\n        showColor: 'active',\n      },\n      CropPage: {\n        dataElement: 'cropToolButton',\n        title: 'annotation.crop',\n        img: 'ic_crop_black_24px',\n        showColor: 'never',\n        group: 'cropTools',\n      },\n      SnippingTool: {\n        dataElement: 'snippingToolButton',\n        title: 'annotation.snipping',\n        img: 'ic_snipping_black_24px',\n        showColor: 'never',\n        group: 'snippingTools',\n      },\n      ContentEditTool: {\n        dataElement: 'contentEditToolButton',\n        title: 'action.edit',\n        img: 'ic_edit_page_24px',\n        showColor: 'never',\n        group: 'contentEditTools',\n      },\n      AddParagraphTool: {\n        dataElement: 'addParagraphToolButton',\n        title: 'action.addParagraph',\n        img: 'ic-paragraph',\n        showColor: 'never',\n        group: 'addParagraphTools',\n      },\n      [ToolNames.ADD_IMAGE_CONTENT]: {\n        dataElement: 'addImageContentToolButton',\n        title: 'annotation.newImage',\n        img: 'icon-tool-image-line',\n        showColor: 'never',\n        group: 'addImageContentTools',\n      },\n      AnnotationCreateRedaction: {\n        dataElement: 'redactionButton',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction2: {\n        dataElement: 'redactionButton2',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction3: {\n        dataElement: 'redactionButton3',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction4: {\n        dataElement: 'redactionButton4',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      Pan: { dataElement: 'panToolButton', title: 'tool.pan', img: 'icon-header-pan', showColor: 'never' },\n      AnnotationEdit: {\n        dataElement: 'selectToolButton',\n        title: 'tool.select',\n        img: 'multi select',\n        showColor: 'never',\n      },\n      TextSelect: { dataElement: 'textSelectButton', img: 'icon-header-select-line', showColor: 'never' },\n      MarqueeZoomTool: { dataElement: 'marqueeToolButton', showColor: 'never' },\n      AnnotationEraserTool: {\n        dataElement: 'eraserToolButton',\n        title: 'annotation.eraser',\n        img: 'icon-operation-eraser',\n        showColor: 'never',\n      },\n      TextFormFieldCreateTool: {\n        dataElement: 'textFieldToolButton',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool2: {\n        dataElement: 'textFieldToolButton2',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool3: {\n        dataElement: 'textFieldToolButton3',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool4: {\n        dataElement: 'textFieldToolButton4',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool: {\n        dataElement: 'signatureFieldToolButton',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool2: {\n        dataElement: 'signatureFieldToolButton2',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool3: {\n        dataElement: 'signatureFieldToolButton3',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool4: {\n        dataElement: 'signatureFieldToolButton4',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      CheckBoxFormFieldCreateTool: {\n        dataElement: 'checkBoxFieldCreateToolButton',\n        title: 'annotation.checkBoxFormField',\n        img: 'icon-form-field-checkbox',\n        group: 'checkBoxFieldTools',\n        showColor: 'never',\n      },\n      RadioButtonFormFieldCreateTool: {\n        dataElement: 'radioButtonFieldCreateToolButton',\n        title: 'annotation.radioButtonFormField',\n        img: 'icon-form-field-radiobutton',\n        group: 'radioButtonFieldTools',\n        showColor: 'never',\n      },\n      ListBoxFormFieldCreateTool: {\n        dataElement: 'listBoxFieldCreateToolButton',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool2: {\n        dataElement: 'listBoxFieldCreateToolButton2',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool3: {\n        dataElement: 'listBoxFieldCreateToolButton3',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool4: {\n        dataElement: 'listBoxFieldCreateToolButton4',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool: {\n        dataElement: 'comboBoxFieldCreateToolButton',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool2: {\n        dataElement: 'comboBoxFieldCreateToolButton2',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool3: {\n        dataElement: 'comboBoxFieldCreateToolButton3',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool4: {\n        dataElement: 'comboBoxFieldCreateToolButton4',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool: {\n        dataElement: 'changeViewCreateToolButton',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool2: {\n        dataElement: 'changeViewCreateToolButton2',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool3: {\n        dataElement: 'changeViewCreateToolButton3',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool4: {\n        dataElement: 'changeViewCreateToolButton4',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      [ToolNames.OUTLINE_DESTINATION]: {\n        group: '',\n      },\n    },\n    tab: {\n      signatureModal: 'inkSignaturePanelButton',\n      pageReplacementModal: 'urlInputPanelButton',\n      linkModal: 'URLPanelButton',\n      rubberStampTab: 'standardStampPanelButton',\n      filterAnnotModal: DataElements.ANNOTATION_USER_FILTER_PANEL_BUTTON,\n      [DataElements.SETTINGS_MODAL]: DataElements.SETTINGS_GENERAL_BUTTON,\n      savedSignatures: DataElements.SAVED_SIGNATURES_PANEL_BUTTON,\n      openFileModal: 'urlInputPanelButton',\n      insertPageModal: 'insertBlankPagePanelButton',\n      [DataElements.CREATE_PORTFOLIO_MODAL]: DataElements.PORTFOLIO_UPLOAD_FILES_TAB\n    },\n    customElementOverrides: {},\n    activeHeaderGroup: 'default',\n    activeToolName: 'AnnotationEdit',\n    activeToolStyles: {},\n    customColors:\n      localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem(`${instanceId}-customColors`)\n        ? JSON.parse(window.localStorage.getItem(`${instanceId}-customColors`))\n        : [],\n    activeLeftPanel: 'thumbnailsPanel',\n    activeToolGroup: '',\n    notePopupId: '',\n    isNoteEditing: false,\n    fitMode: '',\n    rotation: 0,\n    displayMode: 'Single',\n    currentPage: 1,\n    sortStrategy: 'position',\n    isFullScreen: false,\n    isMultipleViewerMerging: false,\n    isThumbnailMerging: true,\n    isThumbnailReordering: true,\n    isThumbnailMultiselect: true,\n    isNotesPanelMultiSelectEnabled: true,\n    isOutlineEditingEnabled: true,\n    enableNotesPanelVirtualizedList: true,\n    notesShowLastUpdatedDate: false,\n    allowPageNavigation: true,\n    enableToolGroupReordering: true,\n    enableNoteSubmissionWithEnter: false,\n    isNotesPanelTextCollapsingEnabled: true,\n    isNotesPanelRepliesCollapsingEnabled: true,\n    isMeasurementAnnotationFilterEnabled: false,\n    isCommentThreadExpansionEnabled: false,\n    enableMouseWheelZoom: true,\n    doesAutoLoad: getHashParameters('auto_load', true),\n    isReadOnly: getHashParameters('readonly', false),\n    customModals: [],\n    customPanels: [],\n    customFlxPanels: [],\n    useEmbeddedPrint: false,\n    pageLabels: [],\n    selectedThumbnailPageIndexes: [],\n    shiftKeyThumbnailPivotIndex: null,\n    noteDateFormat: defaultNoteDateFormat,\n    printedNoteDateFormat: defaultPrintedNoteDateFormat,\n    colorMap: copyMapWithDataProperties('currentStyleTab', 'iconColor'),\n    warning: {},\n    customNoteFilter: null,\n    inlineCommentFilter: (annot) => {\n      const isAnnotationInstanceOf = defaultToolsWithInlineComment.some((annotationInstance) => annot instanceof annotationInstance);\n      return isAnnotationInstanceOf;\n    },\n    zoomList: defaultZoomList,\n    isAccessibleMode: getHashParameters('accessibleMode', false),\n    measurementUnits: {\n      from: ['in', 'mm', 'cm', 'pt'],\n      to: ['in', 'mm', 'cm', 'pt', 'ft', 'ft-in', 'm', 'yd', 'km', 'mi'],\n    },\n    measurementScalePreset: getMeasurementScalePreset(),\n    isMultipleScalesMode: true,\n    maxSignaturesCount: 4,\n    signatureFonts: ['Satisfy', 'Nothing-You-Could-Do', 'La-Belle-Aurore', 'Whisper'],\n    isReplyDisabledFunc: null,\n    userData: [],\n    customMeasurementOverlay: [],\n    noteTransformFunction: null,\n    standardStamps: [],\n    customStamps: [],\n    selectedStampIndex: 0,\n    signatureMode: SignatureModes.FULL_SIGNATURE,\n    savedSignatures: [],\n    savedInitials: [],\n    displayedSignaturesFilterFunction: () => true,\n    selectedDisplayedSignatureIndex: 0,\n    selectedDisplayedInitialsIndex: 0,\n    annotationContentOverlayHandler: null,\n    isSnapModeEnabled: false,\n    isReaderMode: false,\n    unreadAnnotationIdSet: new Set(),\n    watermarkModalOptions: null,\n    fonts: [...defaultFonts, ...webFonts],\n    shouldResetAudioPlaybackPosition: false,\n    activeSoundAnnotation: null,\n    shouldShowApplyCropWarning: true,\n    shouldShowApplySnippingWarning: true,\n    presetCropDimensions,\n    presetNewPageDimensions,\n    dateTimeFormats: defaultDateTimeFormats,\n    thumbnailSelectionMode: 'checkbox',\n    annotationFilters: {\n      includeReplies: true,\n      isDocumentFilterActive: false,\n      authorFilter: [],\n      colorFilter: [],\n      typeFilter: [],\n      statusFilter: [],\n    },\n    zoomStepFactors: [\n      {\n        step: 7.5,\n        startZoom: 0,\n      },\n      {\n        step: 25,\n        startZoom: 80,\n      },\n      {\n        step: 50,\n        startZoom: 150,\n      },\n      {\n        step: 100,\n        startZoom: 250,\n      },\n      {\n        step: 200,\n        startZoom: 400,\n      },\n      {\n        step: 400,\n        startZoom: 800,\n      },\n      {\n        step: 800,\n        startZoom: 3200,\n      },\n      {\n        step: 1600,\n        startZoom: 6400,\n      },\n    ],\n    contentBoxEditor: null,\n    notesPanelCustomHeaderOptions: null,\n    notesPanelCustomEmptyPanel: null,\n    replyAttachmentPreviewEnabled: true,\n    savedSignatureTabEnabled: false,\n    replyAttachmentHandler: null,\n    customSettings: [],\n    modularHeaders: [],\n    activeGroupedItems: [],\n    fixedGroupedItems: [],\n    modularHeadersHeight: {\n      topHeaders: 32,\n      bottomHeaders: 32\n    },\n    modularHeadersWidth: {\n      rightHeader: 0,\n      leftHeader: 0\n    },\n    floatingContainersDimensions: {\n      topFloatingContainerHeight: 0,\n      bottomFloatingContainerHeight: 0,\n    },\n    toolDefaultStyleUpdateFromAnnotationPopupEnabled: true,\n    shortcutKeyMap: { ...ShortcutKeys },\n    flyoutMap: {},\n    flyoutPosition: { x: 0, y: 0 },\n    activeFlyout: null,\n    flyoutToggleElement: null,\n    textSignatureCanvasMultiplier: 1,\n    isShowComparisonButtonEnabled: false,\n    isMultiViewerModeAvailable: false,\n  },\n  search: {\n    value: '',\n    replaceValue: '',\n    nextResult: null,\n    isCaseSensitive: false,\n    isWholeWord: false,\n    isWildcard: false,\n    isRegex: false,\n    isSearchUp: false,\n    isAmbientString: false,\n    clearSearchPanelOnClose: false,\n    results: [],\n    redactionSearchPatterns: {\n      creditCards: {\n        label: 'redactionPanel.search.creditCards',\n        icon: 'redact-icons-credit-card',\n        type: redactionTypeMap['CREDIT_CARD'],\n        regex: /\\b(?:\\d[ -]*?){13,16}\\b/,\n      },\n      phoneNumbers: {\n        label: 'redactionPanel.search.phoneNumbers',\n        icon: 'redact-icons-phone-number',\n        type: redactionTypeMap['PHONE'],\n        regex: /\\d?(\\s?|-?|\\+?|\\.?)((\\(\\d{1,4}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)\\d{3}(-|\\.|\\s)\\d{4,5}/,\n      },\n      emails: {\n        label: 'redactionPanel.search.emails',\n        icon: 'redact-icons-email',\n        type: redactionTypeMap['EMAIL'],\n        regex: /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}\\b/,\n      },\n    },\n  },\n  document: {\n    totalPages: {\n      1: 0,\n      2: 0,\n    },\n    outlines: [],\n    bookmarks: {},\n    portfolio: [],\n    layers: [],\n    printQuality: 1,\n    passwordAttempts: -1,\n    loadingProgress: 0,\n  },\n  user: {\n    name: getHashParameters('user', 'Guest'),\n    isAdmin: getHashParameters('admin', false),\n  },\n  advanced: {\n    customCSS: getHashParameters('css', null),\n    defaultDisabledElements: getHashParameters('disabledElements', ''),\n    fullAPI: getHashParameters('pdfnet', false),\n    preloadWorker: getHashParameters('preloadWorker', false),\n    enableOptimizedWorkers: getHashParameters('enableOptimizedWorkers', true),\n    serverUrl: getHashParameters('server_url', ''),\n    serverUrlHeaders: JSON.parse(getHashParameters('serverUrlHeaders', '{}')),\n    useSharedWorker: getHashParameters('useSharedWorker', false),\n    disableI18n: getHashParameters('disableI18n', false),\n    pdfWorkerTransportPromise: null,\n    officeWorkerTransportPromise: null,\n    disableIndexedDB: getHashParameters('disableIndexedDB', false),\n    disableMultiViewerComparison:\n      getHashParameters('disableMultiViewerComparison', false) || !getHashParameters('pdfnet', false),\n  },\n  featureFlags: {\n    customizableUI: false,\n  },\n  wv3dPropertiesPanel: {\n    modelData: [],\n    schema: {\n      headerName: 'Name',\n      defaultValues: {},\n      groups: {},\n      groupOrder: [],\n      removeEmptyRows: false,\n      removeEmptyGroups: false,\n      createRawValueGroup: true,\n    },\n  },\n  officeEditor: {\n    cursorProperties: {},\n    selectionProperties: {},\n    availableFontFaces,\n    cssFontValues,\n  },\n  digitalSignatureValidation: {\n    validationModalWidgetName: '',\n    verificationResult: {},\n    certificates: [],\n    trustLists: [],\n    isRevocationCheckingEnabled: false,\n    revocationProxyPrefix: null,\n  },\n};\n","// Websafe Fonts that should be available on all devices\nexport default [\n  'Helvetica',\n  'Times New Roman',\n];","export default {\n  'Letter': {\n    'yOffset': 0,\n    'height': 11,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Half letter': {\n    'yOffset': 0,\n    'height': 5.5,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Junior legal': {\n    'yOffset': 0,\n    'height': 5,\n    'xOffset': 0,\n    'width': 8,\n  },\n};\n","export default {\n  'Letter': {\n    'height': 11,\n    'width': 8.5,\n  },\n  'Half letter': {\n    'height': 5.5,\n    'width': 8.5,\n  },\n  'Junior legal': {\n    'height': 5,\n    'width': 8,\n  },\n};","/*\n* Default Date and Time Formats used in the Custom Stamp Modal\n* date and time will be joined with a space in between for the dropdown in the Modal\n* If timeFirst is set to true, the time will be added infront of the date instead of at the end\n*/\nexport default [\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'MMM DD YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n];","export const availableFontFaces = [\n  'Arial',\n  'Arial Black',\n  'Arial Narrow',\n  'Arial Rounded MT Bold',\n  'Baskerville Old Face',\n  'Bookman Old Style',\n  'Bookshelf Symbol 7',\n  'Brush Script MT',\n  'Calibri',\n  'Calibri Light',\n  'Cambria',\n  'Cambria Math',\n  'Century',\n  'Century Schoolbook',\n  'Comic Sans MS',\n  'Consolas',\n  'Cooper Black',\n  'Copperplate Gothic Light',\n  'Courier',\n  'Courier New',\n  'Garamond',\n  'Georgia',\n  'Gill Sans MT',\n  'Gill Sans MT Condensed',\n  'Helvetica',\n  'Lucida Console',\n  'MS Outlook',\n  'Malgun Gothic',\n  'Meiryo',\n  'monospace',\n  'Myriad Pro',\n  'sans-serif',\n  'serif',\n  'SimSun',\n  'Symbol',\n  'Tahoma',\n  'Tahoma Bold',\n  'Times New Roman',\n  'Trebuchet MS',\n  'Verdana',\n];\n\nexport const cssFontValues = {\n  'Arial': {\n    fontFamily: 'Arial, Helvetica, sans-serif',\n  },\n  'Arial Black': {\n    fontFamily: '\"Arial Black\", Gadget, sans-serif',\n  },\n  'Arial Italic': {\n    fontFamily: 'Arial, Helvetica, sans-serif',\n    fontStyle: 'italic',\n  },\n  'Arial Narrow': {\n    fontFamily: '\"Arial Narrow\", sans-serif',\n  },\n  'Arial Rounded MT Bold': {\n    fontFamily: '\"Arial Rounded MT Bold\", sans-serif',\n  },\n  'Baskerville Old Face': {\n    fontFamily: '\"Baskerville Old Face\", \"Book Antiqua\", Palatino, serif',\n  },\n  'Bookman Old Style': {\n    fontFamily: '\"Bookman Old Style\", serif',\n  },\n  'Bookshelf Symbol 7': {\n    fontFamily: '\"Bookshelf Symbol 7\", sans-serif',\n  },\n  'Brush Script MT': {\n    fontFamily: '\"Brush Script MT\", cursive',\n  },\n  'Calibri': {\n    fontFamily: 'Calibri, Candara, Segoe, \"Segoe UI\", Optima, Arial, sans-serif',\n  },\n  'Calibri Light': {\n    fontFamily: 'Calibri, Candara, Segoe, \"Segoe UI\", Optima, Arial, sans-serif',\n  },\n  'Cambria': {\n    fontFamily: 'Cambria, Georgia, serif',\n  },\n  'Cambria Math': {\n    fontFamily: '\"Cambria Math\", serif',\n  },\n  'Century': {\n    fontFamily: 'Century, sans-serif',\n  },\n  'Century Schoolbook': {\n    fontFamily: '\"Century Schoolbook\", serif',\n  },\n  'Comic Sans MS': {\n    fontFamily: '\"Comic Sans MS\", cursive, sans-serif',\n  },\n  'Consolas': {\n    fontFamily: 'Consolas, monaco, monospace',\n  },\n  'Consolas Italic': {\n    fontFamily: 'Consolas, monaco, monospace',\n    fontStyle: 'italic',\n  },\n  'Cooper Black': {\n    fontFamily: '\"Cooper Black\", sans-serif',\n  },\n  'Copperplate Gothic Light': {\n    fontFamily: '\"Copperplate Gothic Light\", sans-serif',\n  },\n  'Courier': {\n    fontFamily: 'Courier, monospace',\n  },\n  'Courier New': {\n    fontFamily: '\"Courier New\", Courier, monospace',\n  },\n  'Garamond': {\n    fontFamily: 'Garamond, serif',\n  },\n  'Georgia': {\n    fontFamily: 'Georgia, serif',\n  },\n  'Gill Sans MT': {\n    fontFamily: '\"Gill Sans MT\", sans-serif',\n  },\n  'Gill Sans MT Condensed': {\n    fontFamily: '\"Gill Sans MT Condensed\", sans-serif',\n  },\n  'Helvetica': {\n    fontFamily: 'Helvetica, Arial, sans-serif',\n  },\n  'Lucida Console': {\n    fontFamily: '\"Lucida Console\", Monaco, monospace',\n  },\n  'MS Outlook': {\n    fontFamily: '\"MS Outlook\", sans-serif',\n  },\n  'Malgun Gothic': {\n    fontFamily: '\"Malgun Gothic\", sans-serif',\n  },\n  'Meiryo': {\n    fontFamily: 'Meiryo, sans-serif',\n  },\n  'monospace': {\n    fontFamily: 'monospace',\n  },\n  'Myriad Pro': {\n    fontFamily: '\"Myriad Pro\", Myriad, sans-serif',\n  },\n  'sans-serif': {\n    fontFamily: 'sans-serif',\n  },\n  'serif': {\n    fontFamily: 'serif',\n  },\n  'Symbol': {\n    fontFamily: 'Symbol, sans-serif',\n  },\n  'SimSun': {\n    fontFamily: '\"SimSun\", sans-serif',\n  },\n  'Tahoma': {\n    fontFamily: 'Tahoma, Geneva, sans-serif',\n  },\n  'Times New Roman': {\n    fontFamily: '\"Times New Roman\", Times, serif',\n  },\n  'Trebuchet MS': {\n    fontFamily: '\"Trebuchet MS\", Helvetica, sans-serif',\n  },\n  'Verdana': {\n    fontFamily: 'Verdana, Geneva, sans-serif',\n  },\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'ENABLE_FEATURE_FLAG':\n      return { ...state, [payload.featureFlag]: true };\n    case 'DISABLE_FEATURE_FLAG':\n      return { ...state, [payload.featureFlag]: false };\n    default:\n      return state;\n  }\n};","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { 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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n  autoMergeLevel1: \n    - merges 1 level of substate\n    - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n  var debug = _ref.debug;\n\n  var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n  if (inboundState && _typeof(inboundState) === 'object') {\n    Object.keys(inboundState).forEach(function (key) {\n      // ignore _persist data\n      if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n      if (originalState[key] !== reducedState[key]) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n        return;\n      } // otherwise hard set the new value\n\n\n      newState[key] = inboundState[key];\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n  return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n  var transforms = config.transforms || [];\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var debug = config.debug;\n  var deserialize;\n\n  if (config.deserialize === false) {\n    deserialize = function deserialize(x) {\n      return x;\n    };\n  } else if (typeof config.deserialize === 'function') {\n    deserialize = config.deserialize;\n  } else {\n    deserialize = defaultDeserialize;\n  }\n\n  return storage.getItem(storageKey).then(function (serialized) {\n    if (!serialized) return undefined;else {\n      try {\n        var state = {};\n        var rawState = deserialize(serialized);\n        Object.keys(rawState).forEach(function (key) {\n          state[key] = transforms.reduceRight(function (subState, transformer) {\n            return transformer.out(subState, key, rawState);\n          }, deserialize(rawState[key]));\n        });\n        return state;\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n        throw err;\n      }\n    }\n  });\n}\n\nfunction defaultDeserialize(serial) {\n  return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n  var storage = config.storage;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n  if (err && process.env.NODE_ENV !== 'production') {\n    console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n  }\n}","function 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n  @TODO add validation / handling for:\n  - persisting a reducer which has nested _persist\n  - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!config) throw new Error('config is required for persistReducer');\n    if (!config.key) throw new Error('key is required in persistor config');\n    if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n  }\n\n  var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n  var debug = config.debug || false;\n  var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n  var getStoredState = config.getStoredState || defaultGetStoredState;\n  var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n  var _persistoid = null;\n  var _purge = false;\n  var _paused = true;\n\n  var conditionalUpdate = function conditionalUpdate(state) {\n    // update the persistoid only if we are rehydrated and not paused\n    state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n    return state;\n  };\n\n  return function (state, action) {\n    var _ref = state || {},\n        _persist = _ref._persist,\n        rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n    var restState = rest;\n\n    if (action.type === PERSIST) {\n      var _sealed = false;\n\n      var _rehydrate = function _rehydrate(payload, err) {\n        // dev warning if we are already sealed\n        if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n        if (!_sealed) {\n          action.rehydrate(config.key, payload, err);\n          _sealed = true;\n        }\n      };\n\n      timeout && setTimeout(function () {\n        !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n      }, timeout); // @NOTE PERSIST resumes if paused.\n\n      _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n      if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n      if (_persist) {\n        // We still need to call the base reducer because there might be nested\n        // uses of persistReducer which need to be aware of the PERSIST action\n        return _objectSpread({}, baseReducer(restState, action), {\n          _persist: _persist\n        });\n      }\n\n      if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n      action.register(config.key);\n      getStoredState(config).then(function (restoredState) {\n        var migrate = config.migrate || function (s, v) {\n          return Promise.resolve(s);\n        };\n\n        migrate(restoredState, version).then(function (migratedState) {\n          _rehydrate(migratedState);\n        }, function (migrateErr) {\n          if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n          _rehydrate(undefined, migrateErr);\n        });\n      }, function (err) {\n        _rehydrate(undefined, err);\n      });\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: {\n          version: version,\n          rehydrated: false\n        }\n      });\n    } else if (action.type === PURGE) {\n      _purge = true;\n      action.result(purgeStoredState(config));\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === FLUSH) {\n      action.result(_persistoid && _persistoid.flush());\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === PAUSE) {\n      _paused = true;\n    } else if (action.type === REHYDRATE) {\n      // noop on restState if purging\n      if (_purge) return _objectSpread({}, restState, {\n        _persist: _objectSpread({}, _persist, {\n          rehydrated: true\n        }) // @NOTE if key does not match, will continue to default else below\n\n      });\n\n      if (action.key === config.key) {\n        var reducedState = baseReducer(restState, action);\n        var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n        var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n        var _newState = _objectSpread({}, reconciledRest, {\n          _persist: _objectSpread({}, _persist, {\n            rehydrated: true\n          })\n        });\n\n        return conditionalUpdate(_newState);\n      }\n    } // if we have not already handled PERSIST, straight passthrough\n\n\n    if (!_persist) return baseReducer(state, action); // run base reducer:\n    // is state modified ? return original : return updated\n\n    var newState = baseReducer(restState, action);\n    if (newState === restState) return state;\n    return conditionalUpdate(_objectSpread({}, newState, {\n      _persist: _persist\n    }));\n  };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n  registry: [],\n  bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case REGISTER:\n      return _objectSpread({}, state, {\n        registry: [].concat(_toConsumableArray(state.registry), [action.key])\n      });\n\n    case REHYDRATE:\n      var firstIndex = state.registry.indexOf(action.key);\n\n      var registry = _toConsumableArray(state.registry);\n\n      registry.splice(firstIndex, 1);\n      return _objectSpread({}, state, {\n        registry: registry,\n        bootstrapped: registry.length === 0\n      });\n\n    default:\n      return state;\n  }\n};\n\nexport default function persistStore(store, options, cb) {\n  // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n  if (process.env.NODE_ENV !== 'production') {\n    var optionsToTest = options || {};\n    var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n    bannedKeys.forEach(function (k) {\n      if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n    });\n  }\n\n  var boostrappedCb = cb || false;\n\n  var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n  var register = function register(key) {\n    _pStore.dispatch({\n      type: REGISTER,\n      key: key\n    });\n  };\n\n  var rehydrate = function rehydrate(key, payload, err) {\n    var rehydrateAction = {\n      type: REHYDRATE,\n      payload: payload,\n      err: err,\n      key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n    };\n    store.dispatch(rehydrateAction);\n\n    _pStore.dispatch(rehydrateAction);\n\n    if (boostrappedCb && persistor.getState().bootstrapped) {\n      boostrappedCb();\n      boostrappedCb = false;\n    }\n  };\n\n  var persistor = _objectSpread({}, _pStore, {\n    purge: function purge() {\n      var results = [];\n      store.dispatch({\n        type: PURGE,\n        result: function result(purgeResult) {\n          results.push(purgeResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    flush: function flush() {\n      var results = [];\n      store.dispatch({\n        type: FLUSH,\n        result: function result(flushResult) {\n          results.push(flushResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    pause: function pause() {\n      store.dispatch({\n        type: PAUSE\n      });\n    },\n    persist: function persist() {\n      store.dispatch({\n        type: PERSIST,\n        register: register,\n        rehydrate: rehydrate\n      });\n    }\n  });\n\n  if (!(options && options.manualPersist)) {\n    persistor.persist();\n  }\n\n  return persistor;\n}","import localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nexport default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_ACTIVE_FLYOUT':\n      return {\n        ...state,\n        activeFlyout: payload.dataElement,\n      };\n    case 'REMOVE_FLYOUT':\n      const flyoutMap = state.flyoutMap;\n      delete flyoutMap[payload.dataElement];\n      return {\n        ...state,\n        flyoutMap,\n      };\n    case 'ADD_FLYOUT':\n    case 'UPDATE_FLYOUT':\n      return {\n        ...state,\n        flyoutMap: {\n          ...state.flyoutMap,\n          [payload.dataElement]: payload.flyout\n        }\n      };\n    case 'SET_FLYOUT_POSITION':\n      return {\n        ...state,\n        flyoutPosition: payload.newPosition,\n      };\n    case 'SET_FLYOUT_TOGGLE_ELEMENT':\n      return {\n        ...state,\n        flyoutToggleElement: payload.toggleElement,\n      };\n    case 'SET_INITIALS_OFFSET':\n      return {\n        ...state,\n        initalsOffset: payload.initalsOffset,\n      };\n    case 'SET_SAVED_SIGNATURES_TAB_ENABLED':\n      return {\n        ...state,\n        savedSignatureTabEnabled: payload.enabled,\n      };\n    case 'SET_SYNC_VIEWERS':\n      return {\n        ...state,\n        syncViewer: payload.syncViewer,\n      };\n    case 'SET_IS_COMPARE_STARTED':\n      return {\n        ...state,\n        isCompareStarted: payload.isCompareStarted,\n      };\n    case 'SET_COMPARE_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          comparePanel: payload.width,\n        }\n      };\n    case 'SET_WATERMARK_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          watermarkPanel: payload.width,\n        }\n      };\n    case 'SET_COMPARISON_OVERLAY_ENABLED':\n      return {\n        ...state,\n        isComparisonOverlayEnabled: payload.isComparisonOverlayEnabled,\n      };\n    case 'SET_ACTIVE_DOCUMENT_VIEWER_KEY':\n      return {\n        ...state,\n        activeDocumentViewerKey: payload.activeDocumentViewerKey,\n      };\n    case 'SET_IS_MULTI_VIEWER_READY':\n      return {\n        ...state,\n        isMultiViewerReady: payload.isMultiViewerReady,\n      };\n    case 'SET_IS_MULTI_VIEWER_MODE':\n      return {\n        ...state,\n        isMultiViewerMode: payload.isMultiViewerMode,\n      };\n    case 'SET_IS_MULTI_VIEWER_MODE_AVAILABLE':\n      return {\n        ...state,\n        isMultiViewerModeAvailable: payload.isMultiViewerModeAvailable,\n      };\n    case 'SET_COMPARE_PAGES_BUTTON_ENABLED':\n      return {\n        ...state,\n        isShowComparisonButtonEnabled: payload.isShowComparisonButtonEnabled,\n      };\n    case 'SHOW_APPLY_CROP_WARNING':\n      return {\n        ...state,\n        shouldShowApplyCropWarning: payload.shouldShowApplyCropWarning,\n      };\n    case 'SHOW_APPLY_SNIPPING_WARNING':\n      return {\n        ...state,\n        shouldShowApplySnippingWarning: payload.shouldShowApplySnippingWarning,\n      };\n    case 'SET_PRESET_CROP_DIMENSIONS':\n      return {\n        ...state,\n        presetCropDimensions: payload.presetCropDimensions,\n      };\n    case 'SET_PRESET_NEW_PAGE_DIMENSIONS':\n      return {\n        ...state,\n        presetNewPageDimensions: payload.presetNewPageDimensions,\n      };\n    case 'SET_DATE_TIME_FORMATS':\n      return {\n        ...state,\n        dateTimeFormats: payload.dateTimeFormats,\n      };\n    case 'SET_THUMBNAIL_SELECTION_MODE':\n      return {\n        ...state,\n        thumbnailSelectionMode: payload.thumbnailSelectionMode,\n      };\n    case 'SET_FONTS':\n      return {\n        ...state,\n        fonts: payload.fonts,\n      };\n    case 'SET_ACTIVE_TAB':\n      return {\n        ...state,\n        activeTab: payload.activeTab,\n      };\n    case 'SET_TABS':\n      return {\n        ...state,\n        tabs: payload.tabs,\n      };\n    case 'SET_IS_MULTI_TAB':\n      return {\n        ...state,\n        isMultiTab: payload.isMultiTab,\n      };\n    case 'SET_TAB_MANAGER':\n      return {\n        ...state,\n        TabManager: payload.TabManager,\n      };\n    case 'SET_THUMBNAIL_PAGE_SELECT':\n      return {\n        ...state,\n        thumbnailSelectingPages: payload.isSelecting,\n      };\n    case 'SET_HIGH_CONTRAST_MODE':\n      return {\n        ...state,\n        highContrastMode: payload.useHighContrastMode,\n      };\n    case 'SET_CAN_UNDO':\n      return {\n        ...state,\n        canUndo: {\n          ...state.canUndo,\n          [payload.documentViewerKey]: payload.canUndo\n        },\n      };\n    case 'SET_CAN_REDO':\n      return {\n        ...state,\n        canRedo: {\n          ...state.canRedo,\n          [payload.documentViewerKey]: payload.canRedo\n        }\n      };\n    case 'SET_LAST_PICKED_TOOL_FOR_GROUP':\n      return {\n        ...state,\n        lastPickedToolForGroup: {\n          ...state.lastPickedToolForGroup,\n          [payload.group]: payload.toolName,\n        },\n      };\n    case 'SET_CURRENT_GROUPED_ITEMS':\n      return {\n        ...state,\n        activeGroupedItems: payload.groupedItems\n      };\n    case 'SET_FIXED_GROUPED_ITEMS':\n      return {\n        ...state,\n        fixedGroupedItems: [...state.fixedGroupedItems, payload.groupedItems]\n      };\n    case 'SET_TOOLBAR_GROUP':\n      return {\n        ...state,\n        toolbarGroup: payload.toolbarGroup,\n      };\n    case 'SET_SELECTED_STAMP_INDEX':\n      return {\n        ...state,\n        selectedStampIndex: payload.index,\n      };\n    case 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX':\n      return {\n        ...state,\n        selectedDisplayedSignatureIndex: payload.index,\n      };\n    case 'SET_SELECTED_DISPLAYED_INITIALS_INDEX':\n      return {\n        ...state,\n        selectedDisplayedInitialsIndex: payload.index,\n      };\n    case 'SET_STANDARD_STAMPS':\n      return {\n        ...state,\n        standardStamps: payload.standardStamps,\n      };\n    case 'SET_CUSTOM_STAMPS':\n      return {\n        ...state,\n        customStamps: payload.customStamps,\n      };\n    case 'SET_SAVED_SIGNATURES':\n      return {\n        ...state,\n        savedSignatures: payload.savedSignatures,\n      };\n    case 'SET_SAVED_INITIALS':\n      return {\n        ...state,\n        savedInitials: payload.savedInitials,\n      };\n    case 'SET_LEFT_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          leftPanel: payload.width,\n        },\n      };\n    case 'SET_SEARCH_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          searchPanel: payload.width,\n        },\n      };\n    case 'SET_NOTES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          notesPanel: payload.width,\n        },\n      };\n    case 'SET_REDACTION_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          redactionPanel: payload.width,\n        },\n      };\n    case 'SET_TEXT_EDITING_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          textEditingPanel: payload.width,\n        },\n      };\n    case 'SET_WV3D_PROPERTIES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          wv3dPropertiesPanel: payload.width,\n        },\n      };\n    case 'SET_SELECTED_SCALE':\n      return {\n        ...state,\n        selectedScale: payload.selectedScale\n      };\n    case 'SET_DOCUMENT_CONTAINER_WIDTH':\n      return {\n        ...state,\n        documentContainerWidth: payload.width,\n      };\n    case 'SET_DOCUMENT_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        documentContainerHeight: payload.height,\n      };\n    case 'SET_ACTIVE_THEME':\n      return {\n        ...state,\n        activeTheme: payload.theme,\n      };\n    case 'DISABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: { disabled: true, priority: payload.priority },\n        },\n      };\n    case 'DISABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach((dataElement) => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = true;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: {\n            disabled: false,\n            priority: payload.priority,\n          },\n        },\n      };\n    case 'ENABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach((dataElement) => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = false;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ALL_ELEMENTS':\n      return {\n        ...state,\n        disabledElements: { ...initialState.disabledElements },\n      };\n    case 'OPEN_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: true },\n      };\n    case 'CLOSE_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: false },\n      };\n    case 'SET_IS_ELEMENT_HIDDEN':\n      return {\n        ...state,\n        hiddenElements: { ...state.hiddenElements, [payload.dataElement]: payload.isHidden }\n      };\n    case 'ENABLE_TOOL_GROUP_REORDERING':\n      return { ...state, enableToolGroupReordering: payload.enableToolGroupReordering };\n    case 'SET_ACTIVE_HEADER_GROUP':\n      return { ...state, activeHeaderGroup: payload.headerGroup };\n    case 'SET_ACTIVE_TOOL_NAME':\n      return { ...state, activeToolName: payload.toolName };\n    case 'SET_ACTIVE_TOOL_STYLES':\n      return { ...state, activeToolStyles: { ...payload.toolStyles } };\n    case 'SET_CUSTOM_COLOR':\n      return { ...state, customColor: payload.customColor };\n    case 'SET_CUSTOM_COLORS':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        const instanceId = getInstanceID();\n        window.localStorage.setItem(`${instanceId}-customColors`, JSON.stringify(payload.customColors));\n      } else {\n        console.error('localStorage is disabled, customColors cannot be restored');\n      }\n      return { ...state, customColors: payload.customColors };\n    case 'SET_ACTIVE_TOOL_NAME_AND_STYLES':\n      return {\n        ...state,\n        activeToolName: payload.toolName,\n        activeToolStyles: payload.toolStyles,\n      };\n    case 'SET_ACTIVE_LEFT_PANEL':\n      return { ...state, activeLeftPanel: payload.dataElement };\n    case 'SET_ACTIVE_TOOL_GROUP':\n      return {\n        ...state,\n        activeToolGroup: payload.toolGroup,\n        lastPickedToolGroup: {\n          ...state.lastPickedToolGroup,\n          [payload.toolbarGroup]: payload.toolGroup,\n        },\n      };\n    case 'SET_OUTLINE_CONTROL_VISIBILITY':\n      return { ...state, outlineControlVisibility: payload.outlineControlVisibility };\n    case 'SET_AUTO_EXPAND_OUTLINES':\n      return { ...state, autoExpandOutlines: payload.autoExpandOutlines };\n    case 'SET_ANNOTATION_NUMBERING':\n      return { ...state, isAnnotationNumberingEnabled: payload.isAnnotationNumberingEnabled };\n    case 'SET_BOOKMARK_ICON_SHORTCUT_VISIBILITY':\n      return { ...state, bookmarkIconShortcutVisibility: payload.bookmarkIconShortcutVisibility };\n    case 'SET_OUTLINE_EDITING':\n      return { ...state, isOutlineEditingEnabled: payload.isOutlineEditingEnabled };\n    case 'SET_NOTE_POPUP_ID':\n      return { ...state, notePopupId: payload.id };\n    case 'SET_NOTE_EDITING':\n      return { ...state, isNoteEditing: payload.isNoteEditing };\n    case 'SET_FIT_MODE':\n      return { ...state, fitMode: payload.fitMode };\n    case 'SET_ZOOM':\n      return {\n        ...state,\n        zoomLevels: {\n          ...state.zoomLevels,\n          [payload.documentViewerKey]: payload.zoom,\n        }\n      };\n    case 'SET_TIMEZONE':\n      return { ...state, timezone: payload.timezone };\n    case 'SET_ROTATION':\n      return { ...state, rotation: payload.rotation };\n    case 'SET_DISPLAY_MODE':\n      return { ...state, displayMode: payload.displayMode };\n    case 'SET_CURRENT_PAGE':\n      return { ...state, currentPage: payload.currentPage };\n    case 'SET_NOTES_PANEL_SORT_STRATEGY':\n      return { ...state, sortStrategy: payload.sortStrategy };\n    case 'SET_NOTE_DATE_FORMAT':\n      return { ...state, noteDateFormat: payload.noteDateFormat };\n    case 'SET_PRINTED_NOTE_DATE_FORMAT':\n      return { ...state, printedNoteDateFormat: payload.noteDateFormat };\n    case 'SET_FULL_SCREEN':\n      return { ...state, isFullScreen: payload.isFullScreen };\n    case 'SET_HEADER_ITEMS':\n      return {\n        ...state,\n        headers: { ...state.headers, [payload.header]: payload.headerItems },\n      };\n    case 'SET_CUSTOM_HEADERS_ADDITIONAL_PROPERTIES':\n      return {\n        ...state,\n        customHeadersAdditionalProperties: { ...state.customHeadersAdditionalProperties, [payload.customHeader]: payload.additionalProperties },\n      };\n    case 'SET_POPUP_ITEMS':\n      return {\n        ...state,\n        [payload.dataElement]: payload.items,\n      };\n    case 'SET_MENUOVERLAY_ITEMS':\n      return {\n        ...state,\n        menuOverlay: payload.items,\n      };\n    case 'REGISTER_TOOL':\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [payload.toolName]: {\n            dataElement: payload.buttonName,\n            title: payload.tooltip,\n            group: payload.buttonGroup,\n            img: payload.buttonImage,\n            showColor: payload.showColor || 'active',\n            showPresets: payload.showPresets ?? true,\n          },\n        },\n      };\n    case 'UNREGISTER_TOOL': {\n      const newToolButtonObjects = { ...state.toolButtonObjects };\n      delete newToolButtonObjects[payload.toolName];\n      return { ...state, toolButtonObjects: newToolButtonObjects };\n    }\n    case 'UPDATE_TOOL': {\n      const { toolName, properties } = payload;\n      const { buttonName, tooltip, buttonGroup, buttonImage } = properties;\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [toolName]: {\n            ...state.toolButtonObjects[toolName],\n            dataElement: buttonName || state.toolButtonObjects[toolName].dataElement,\n            title: tooltip || state.toolButtonObjects[toolName].title,\n            group: buttonGroup !== undefined ? buttonGroup : state.toolButtonObjects[toolName].group,\n            img: buttonImage || state.toolButtonObjects[toolName].img,\n          },\n        },\n      };\n    }\n    case 'SET_THUMBNAIL_MERGING':\n      return { ...state, isThumbnailMerging: payload.useThumbnailMerging };\n    case 'SET_THUMBNAIL_REORDERING':\n      return { ...state, isThumbnailReordering: payload.useThumbnailReordering };\n    case 'SET_THUMBNAIL_MULTISELECT':\n      return { ...state, isThumbnailMultiselect: payload.useThumbnailMultiselect };\n    case 'SET_MULTI_VIEWER_MERGING':\n      return { ...state, isMultipleViewerMerging: payload.isMultipleViewerMerging };\n    case 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST':\n      return { ...state, enableNotesPanelVirtualizedList: payload.enableNotesPanelVirtualizedList };\n    case 'SET_NOTES_SHOW_LAST_UPDATED_DATE':\n      return { ...state, notesShowLastUpdatedDate: payload.notesShowLastUpdatedDate };\n    case 'SET_ALLOW_PAGE_NAVIGATION':\n      return { ...state, allowPageNavigation: payload.allowPageNavigation };\n    case 'SET_READ_ONLY':\n      return { ...state, isReadOnly: payload.isReadOnly };\n    case 'SET_CUSTOM_PANEL':\n      return {\n        ...state,\n        customPanels: [...state.customPanels, payload.newPanel],\n      };\n    case 'ADD_PANEL':\n      return {\n        ...state,\n        customFlxPanels: [...state.customFlxPanels, payload.newPanel],\n      };\n    case 'USE_EMBEDDED_PRINT':\n      return { ...state, useEmbeddedPrint: payload.useEmbeddedPrint };\n    case 'SET_PAGE_LABELS':\n      return { ...state, pageLabels: [...payload.pageLabels] };\n    case 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES':\n      return { ...state, selectedThumbnailPageIndexes: payload.selectedThumbnailPageIndexes };\n    case 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX':\n      return { ...state, shiftKeyThumbnailPivotIndex: payload.shiftKeyThumbnailPivotIndex };\n    case 'SET_ACTIVE_PALETTE': {\n      const { colorMapKey, colorPalette } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: {\n            ...state.colorMap[colorMapKey],\n            currentStyleTab: colorPalette,\n          },\n        },\n      };\n    }\n    case 'SET_REPLY_DISABLED_FUNC': {\n      const { func } = payload;\n      return {\n        ...state,\n        isReplyDisabledFunc: func,\n      };\n    }\n    case 'SET_ICON_COLOR': {\n      const { colorMapKey, color } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: { ...state.colorMap[colorMapKey], iconColor: color },\n        },\n      };\n    }\n    case 'SET_COLOR_MAP':\n      return { ...state, colorMap: payload.colorMap };\n    case 'SET_WARNING_MESSAGE':\n      return { ...state, warning: payload };\n    case 'DISABLE_DELETE_TAB_WARNING':\n      return { ...state, warning: payload };\n    case 'SET_ERROR_MESSAGE':\n      return { ...state, errorMessage: payload.message };\n    case 'SET_CUSTOM_NOTE_FILTER':\n      return { ...state, customNoteFilter: payload.customNoteFilter };\n    case 'SET_INLINE_COMMENT_FILTER':\n      return { ...state, inlineCommentFilter: payload.inlineCommentFilter };\n    case 'SET_ZOOM_LIST':\n      return { ...state, zoomList: payload.zoomList };\n    case 'SET_MEASUREMENT_UNITS': {\n      return { ...state, measurementUnits: payload };\n    }\n    case 'SET_MAX_SIGNATURES_COUNT':\n      return { ...state, maxSignaturesCount: payload.maxSignaturesCount };\n    case 'SET_USER_DATA':\n      return { ...state, userData: payload.userData };\n    case 'SET_CUSTOM_MEASUREMENT_OVERLAY':\n      return { ...state, customMeasurementOverlay: payload.customMeasurementOverlay };\n    case 'SET_SIGNATURE_FONTS':\n      return { ...state, signatureFonts: payload.signatureFonts };\n    case 'SET_SELECTED_TAB':\n      return { ...state, tab: { ...state.tab, [payload.id]: payload.dataElement } };\n    case 'SET_CUSTOM_ELEMENT_OVERRIDES':\n      return {\n        ...state,\n        customElementOverrides: { ...state.customElementOverrides, [payload.dataElement]: payload.overrides },\n      };\n    case 'SET_PAGE_REPLACEMENT_FILE_LIST':\n      return { ...state, pageReplacementFileList: payload.list };\n\n    case 'SET_NOTE_TRANSFORM_FUNCTION':\n      return { ...state, noteTransformFunction: payload.noteTransformFunction };\n    case 'SET_CUSTOM_NOTE_SELECTION_FUNCTION':\n      return { ...state, customNoteFunction: payload.customNoteFunction };\n    case 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER':\n      return { ...state, customApplyRedactionsHandler: payload.customApplyRedactionsHandler };\n    case 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER':\n      return { ...state, annotationContentOverlayHandler: payload.annotationContentOverlayHandler };\n    case 'SET_CUSTOM_MULTI_VIEWER_SYNC_HANDLER':\n      return { ...state, customMultiViewerSyncHandler: payload.customMultiViewerSyncHandler };\n    case 'SET_CUSTOM_MULTI_VIEWER_ACCEPTED_FILE_FORMATS':\n      return { ...state, customMultiViewerAcceptedFileFormats: payload.customMultiViewerAcceptedFileFormats };\n    case 'ADD_CUSTOM_MODAL': {\n      const existingDataElementFiltered = state.customModals.filter(function(modal) {\n        return modal.dataElement !== payload.dataElement;\n      });\n      return {\n        ...state,\n        customModals: [...existingDataElementFiltered, payload],\n      };\n    }\n    case 'ADD_MODULAR_HEADERS':\n      return { ...state, modularHeaders: state.modularHeaders.concat(payload) };\n    case 'SET_MODULAR_HEADERS':\n      return { ...state, modularHeaders: payload };\n    case 'UPDATE_MODULAR_HEADERS': {\n      const { dataElement, property, value } = payload;\n      const updatedModularHeaders = state.modularHeaders.map((header) => {\n        if (header.dataElement === dataElement) {\n          return {\n            ...header,\n            [property]: value,\n          };\n        }\n        return header;\n      });\n      return { ...state, modularHeaders: updatedModularHeaders };\n    }\n    case 'SET_RIGHT_HEADER_WIDTH':\n      return {\n        ...state,\n        modularHeadersWidth: {\n          ...state.modularHeadersWidth,\n          rightHeader: payload,\n        }\n      };\n    case 'SET_LEFT_HEADER_WIDTH':\n      return {\n        ...state,\n        modularHeadersWidth: {\n          ...state.modularHeadersWidth,\n          leftHeader: payload,\n        }\n      };\n    case 'SET_TOP_FLOATING_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        floatingContainersDimensions: {\n          ...state.floatingContainersDimensions,\n          topFloatingContainerHeight: payload,\n        }\n      };\n    case 'SET_BOTTOM_FLOATING_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        floatingContainersDimensions: {\n          ...state.floatingContainersDimensions,\n          bottomFloatingContainerHeight: payload,\n        }\n      };\n    case 'SET_MOUSE_WHEEL_ZOOM':\n      return { ...state, enableMouseWheelZoom: payload.enableMouseWheelZoom };\n    case 'SET_ENABLE_SNAP_MODE':\n      return { ...state, isSnapModeEnabled: payload.enable };\n    case 'SET_READER_MODE':\n      return { ...state, isReaderMode: payload.isReaderMode };\n    case 'SET_SUBMIT_COMMENT_MODE':\n      return {\n        ...state,\n        enableNoteSubmissionWithEnter: payload.enableNoteSubmissionWithEnter,\n      };\n    case 'SET_NOTES_PANEL_TEXT_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelTextCollapsingEnabled: payload.enableNotesPanelTextCollapsing,\n      };\n    case 'SET_NOTES_PANEL_REPLIES_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelRepliesCollapsingEnabled: payload.enableNotesPanelRepliesCollapsing,\n      };\n    case 'SET_COMMENT_THREAD_EXPANSION':\n      return {\n        ...state,\n        isCommentThreadExpansionEnabled: payload.enableCommentThreadExpansion,\n      };\n    case 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION':\n      return { ...state, displayedSignaturesFilterFunction: payload.filterFunction };\n    case 'SET_ANNOTATION_READ_STATE':\n      const { unreadAnnotationIdSet } = state;\n      const { annotationId, isRead } = payload;\n      if (isRead) {\n        unreadAnnotationIdSet.delete(annotationId);\n      } else {\n        unreadAnnotationIdSet.add(annotationId);\n      }\n      return { ...state, unreadAnnotationIdSet: new Set(unreadAnnotationIdSet) };\n    case 'SET_LANGUAGE':\n      return { ...state, currentLanguage: payload.language };\n    case 'SET_FADE_PAGE_NAVIGATION_COMPONENT':\n      return {\n        ...state,\n        fadePageNavigationComponent: payload.fadePageNavigationComponent,\n      };\n    case 'SET_HIDE_CONTENT_EDIT_WARNING':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        const instanceId = getInstanceID();\n        window.localStorage.setItem(`${instanceId}-hideContentEditWarning`, JSON.stringify(payload.hideWarning));\n      } else {\n        console.error('localStorage is disabled, hideContentEditWarning cannot be restored');\n      }\n      return { ...state, hideContentEditWarning: payload.hideWarning };\n    case 'SET_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: payload,\n      };\n    case 'UPDATE_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: {\n          ...state.currentContentBeingEdited,\n          content: payload.content,\n        },\n      };\n    case 'UPDATE_CALIBRATION_INFO':\n      return {\n        ...state,\n        calibrationInfo: {\n          isCalibration: payload.isCalibration,\n          tempScale: payload.tempScale,\n          previousToolName: payload.previousToolName || state.calibrationInfo.previousToolName,\n          isFractionalUnit: payload.isFractionalUnit,\n          defaultUnit: payload.defaultUnit\n        }\n      };\n    case 'SET_IS_ADDING_NEW_SCALE':\n      return {\n        ...state,\n        isAddingNewScale: payload.isAddingNewScale,\n      };\n    case 'UPDATE_DELETE_SCALE':\n      return {\n        ...state,\n        deleteScale: payload.deleteScale,\n      };\n    case 'CLEAR_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: null,\n      };\n    case 'SET_ENABLE_DESKTOP_ONLY_MODE':\n      return {\n        ...state,\n        isInDesktopOnlyMode: payload.enableDesktopOnlyMode,\n      };\n    case 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP':\n      return {\n        ...state,\n        pageDeletionConfirmationModalEnabled: payload.pageDeletionConfirmationModalEnabled,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS':\n      return {\n        ...state,\n        pageManipulationOverlay: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS':\n      return {\n        ...state,\n        multiPageManipulationControls: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_SMALL':\n      return {\n        ...state,\n        multiPageManipulationControlsSmall: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_LARGE':\n      return {\n        ...state,\n        multiPageManipulationControlsLarge: payload.items,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION':\n      return {\n        ...state,\n        pageManipulationOverlayAlternativePosition: payload?.position,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_OPEN_BY_RIGHT_CLICK':\n      return {\n        ...state,\n        pageManipulationOverlayOpenByRightClick: payload,\n      };\n    case 'SET_THUMBNAIL_CONTROL_MENU_ITEMS':\n      return {\n        ...state,\n        thumbnailControlMenu: payload.items,\n      };\n    case 'SET_WATERMARK_MODAL_OPTIONS':\n      return { ...state, watermarkModalOptions: payload.watermarkModalOptions };\n    case 'SET_RESET_AUDIO_PLAYBACK_POSITION':\n      return { ...state, shouldResetAudioPlaybackPosition: payload.shouldResetAudioPlaybackPosition };\n    case 'SET_ACTIVE_SOUND_ANNOTATION':\n      return { ...state, activeSoundAnnotation: payload.activeSoundAnnotation };\n    case 'SET_ANNOTATION_FILTERS':\n      return { ...state, annotationFilters: payload.annotationFilters };\n    case 'SET_ZOOM_STEP_FACTORS':\n      return { ...state, zoomStepFactors: payload.zoomStepFactors };\n    case 'SET_CONTENTBOX_EDITOR':\n      return { ...state, contentBoxEditor: payload.contentBoxEditor };\n    case 'SET_NOTES_PANEL_CUSTOM_HEADER_OPTIONS':\n      return { ...state, notesPanelCustomHeaderOptions: payload.notesPanelCustomHeaderOptions };\n    case 'SET_NOTES_PANEL_CUSTOM_EMPTY_PANEL':\n      return { ...state, notesPanelCustomEmptyPanel: payload.notesPanelCustomEmptyPanel };\n    case 'ADD_MEASUREMENT_SCALE_PRESET': {\n      const updatedState = { ...state };\n      const addIndex = payload.index || updatedState.measurementScalePreset[payload.measurementSystem].length;\n      updatedState.measurementScalePreset[payload.measurementSystem].splice(addIndex, 0, payload.newPreset);\n      return updatedState;\n    }\n    case 'REMOVE_MEASUREMENT_SCALE_PRESET': {\n      const updatedState = { ...state };\n      updatedState.measurementScalePreset[payload.measurementSystem].splice(payload.index, 1);\n      return updatedState;\n    }\n    case 'SET_IS_MULTIPLE_SCALE_MODE':\n      return {\n        ...state,\n        isMultipleScalesMode: payload.isMultipleScalesMode,\n      };\n    case 'SET_NOTES_PANEL_MULTI_SELECT':\n      return {\n        ...state,\n        isNotesPanelMultiSelectEnabled: payload.isNotesPanelMultiSelectEnabled,\n      };\n    case 'SET_SIGNATURE_MODE':\n      return {\n        ...state,\n        signatureMode: payload.signatureMode,\n      };\n    case 'SET_INITIALS_MODE':\n      return {\n        ...state,\n        isInitialsModeEnabled: payload.isEnabled,\n      };\n    case 'SET_REPLY_ATTACHMENT_PREVIEW':\n      return { ...state, replyAttachmentPreviewEnabled: payload.replyAttachmentPreviewEnabled };\n    case 'SET_REPLY_ATTACHMENT_HANDLER':\n      return { ...state, replyAttachmentHandler: payload.replyAttachmentHandler };\n    case 'SET_CUSTOM_SETTINGS':\n      return { ...state, customSettings: payload };\n    case 'SET_ENABLE_RIGHT_CLICK_ANNOTATION_POPUP':\n      return { ...state, enableRightClickAnnotationPopup: payload.isEnabled };\n    case 'SET_TOOL_DEFAULT_STYLE_UPDATE_FROM_ANNOTATION_POPUP_ENABLED':\n      return { ...state, toolDefaultStyleUpdateFromAnnotationPopupEnabled: payload };\n    case 'SET_SHORTCUT_KEY_MAP':\n      return { ...state, shortcutKeyMap: payload };\n    case 'SET_MULTI_VIEWER_SYNC_SCROLLING_MODE':\n      return { ...state, multiViewerSyncScrollMode: payload };\n    case 'SET_TEXT_SIGNATURE_CANVAS_MULTIPLIER':\n      return { ...state, textSignatureCanvasMultiplier: payload.multiplier };\n    case 'SET_ENABLE_MEASUREMENT_ANNOTATIONS_FILTER':\n      return { ...state, isMeasurementAnnotationFilterEnabled: payload.isEnabled };\n    default:\n      return state;\n  }\n};\n","import { combineReducers } from 'redux';\n\nimport initialState from 'src/redux/initialState';\nimport viewerReducer from 'reducers/viewerReducer';\nimport searchReducer from 'reducers/searchReducer';\nimport userReducer from 'reducers/userReducer';\nimport documentReducer from 'reducers/documentReducer';\nimport wv3dPropertiesPanelReducer from 'src/redux/reducers/wv3dPropertiesPanelReducer';\nimport officeEditorReducer from 'src/redux/reducers/officeEditorReducer';\nimport digitalSignatureValidationReducer from 'src/redux/reducers/digitalSignatureValidationReducer';\nimport featureFlagsReducer from './featureFlagsReducer';\nimport { getInstanceID } from 'helpers/getRootNode';\nimport { persistReducer } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\n\nconst instanceId = getInstanceID();\n\nconst viewerPersistConfig = {\n  key: `viewer-${instanceId}`,\n  storage,\n  whitelist: [\n    'toolbarGroup',\n    'lastPickedToolForGroup',\n    'lastPickedToolGroup',\n    'currentLanguage',\n    'activeTheme',\n    'fadePageNavigationComponent',\n    'toolDefaultStyleUpdateFromAnnotationPopupEnabled',\n    'enableNoteSubmissionWithEnter',\n    'isCommentThreadExpansionEnabled',\n    'isNotesPanelRepliesCollapsingEnabled',\n    'isNotesPanelTextCollapsingEnabled',\n    'pageDeletionConfirmationModalEnabled',\n    'thumbnailSelectingPages',\n    'shortcutKeyMap'\n  ]\n};\n\nconst searchPersistConfig = {\n  key: `search-${instanceId}`,\n  storage,\n  whitelist: ['clearSearchPanelOnClose']\n};\n\nexport default combineReducers({\n  viewer: persistReducer(viewerPersistConfig, viewerReducer(initialState.viewer)),\n  search: persistReducer(searchPersistConfig, searchReducer(initialState.search)),\n  user: userReducer(initialState.user),\n  document: documentReducer(initialState.document),\n  // TODO: refactor in another PR to remove state.advanced. It's not necessary to have this because those states never change.\n  advanced: () => initialState.advanced,\n  featureFlags: featureFlagsReducer(initialState.featureFlags),\n  wv3dPropertiesPanel: wv3dPropertiesPanelReducer(initialState.wv3dPropertiesPanel),\n  officeEditor: officeEditorReducer(initialState.officeEditor),\n  digitalSignatureValidation: digitalSignatureValidationReducer(initialState.digitalSignatureValidation),\n});\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SEARCH_TEXT': {\n      const { searchValue, replaceValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex, searchUp, ambientString } = options;\n      return {\n        ...state,\n        value: searchValue,\n        replaceValue: replaceValue,\n        nextResult: null,\n        nextResultIndex: null,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: searchUp || false,\n        isAmbientString: ambientString || false,\n      };\n    }\n    case 'SEARCH_TEXT_FULL': {\n      const { searchValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex } = options;\n      return {\n        ...state,\n        value: searchValue,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: false,\n        isAmbientString: true,\n      };\n    }\n    case 'SET_SEARCH_VALUE': {\n      return {\n        ...state,\n        value: payload.value,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_REPLACE_VALUE': {\n      return {\n        ...state,\n        replaceValue: payload.replaceText,\n      };\n    }\n    case 'SET_NEXT_RESULT': {\n      return {\n        ...state,\n        nextResult: payload.nextResult,\n        nextResultIndex: payload.nextResultIndex,\n      };\n    }\n    case 'ADD_RESULT': {\n      return {\n        ...state,\n        results: [...state.results, payload.result],\n      };\n    }\n    case 'SET_CASE_SENSITIVE': {\n      return {\n        ...state,\n        isCaseSensitive: payload.isCaseSensitive,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_WHOLE_WORD': {\n      return {\n        ...state,\n        isWholeWord: payload.isWholeWord,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_WILD_CARD': {\n      return {\n        ...state,\n        isWildcard: payload.isWildcard,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_SEARCH_ERROR': {\n      return {\n        ...state,\n        errorMessage: payload.errorMessage,\n      };\n    }\n    case 'RESET_SEARCH': {\n      return {\n        ...initialState,\n        value: state.value,\n        isCaseSensitive: state.isCaseSensitive,\n        isWholeWord: state.isWholeWord,\n        isWildcard: state.isWildcard,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_SEARCH_RESULTS': {\n      return {\n        ...state,\n        results: payload,\n      };\n    }\n    case 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE': {\n      return {\n        ...state,\n        clearSearchPanelOnClose: payload,\n      };\n    }\n    case 'SET_PROCESSING_SEARCH_RESULTS': {\n      return {\n        ...state,\n        isProcessingSearchResults: payload.isProcessingSearchResults,\n      };\n    }\n    case 'REPLACE_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern]: {\n            ...state.redactionSearchPatterns[payload.searchPattern],\n            regex: payload.regex,\n          }\n        }\n      };\n    }\n    case 'ADD_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern.type]: payload.searchPattern,\n        }\n      };\n    }\n    case 'REMOVE_REDACTION_SEARCH_PATTERN': {\n      const updatedRedactionSearchPatterns = { ...state.redactionSearchPatterns };\n      delete updatedRedactionSearchPatterns[payload.searchPatternType];\n      return {\n        ...state,\n        redactionSearchPatterns: updatedRedactionSearchPatterns,\n      };\n    }\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_USER_NAME':\n      return { ...state, name: payload.userName };\n    case 'SET_ADMIN_USER':\n      return { ...state, isAdmin: payload.isAdminUser };\n    default:\n      return state;\n  }\n};","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_DOCUMENT_FILE':\n      return { ...state, file: payload.documentFile, path: payload.documentFile.name, pdfDoc: null };\n    case 'SET_PAGE_NUMBER':\n      return { ...state, pageNumber: payload.documentPageNumber };\n    case 'SET_TOTAL_PAGES':\n      return {\n        ...state,\n        totalPages: {\n          ...state.totalPages,\n          [payload.documentViewerKey]: payload.totalPages,\n        }\n      };\n    case 'SET_OUTLINES':\n      return { ...state, outlines: payload.outlines };\n    case 'SET_BOOKMARKS':\n    {\n      return { ...state, bookmarks: payload.bookmarks };\n    }\n    case 'ADD_BOOKMARK':\n    case 'EDIT_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      newBookmarks[payload.pageIndex] = payload.text;\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'REMOVE_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      delete newBookmarks[payload.pageIndex];\n\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'SET_PORTFOLIO':\n      return { ...state, portfolio: payload.portfolio };\n    case 'SET_LAYERS':\n      return { ...state, layers: payload.layers };\n    case 'SET_PASSWORD_ATTEMPTS':\n      return { ...state, passwordAttempts: payload.attempt };\n    case 'SET_PRINT_QUALITY':\n      return { ...state, printQuality: payload.quality };\n    case 'SET_DEFAULT_PRINT_OPTIONS':\n      return { ...state, defaultPrintOptions: payload.options };\n    case 'SET_LOADING_PROGRESS':\n      return { ...state, loadingProgress: payload.progress };\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA': {\n      const { modelData } = payload;\n\n      return {\n        ...state,\n        modelData,\n      };\n    }\n\n    case 'SET_WV3D_PROPERTIES_PANEL_SCHEMA': {\n      const { schema } = payload;\n\n      return {\n        ...state,\n        schema,\n      };\n    }\n\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_OFFICE_EDITOR_CURSOR_PROPERTIES': {\n      const { cursorProperties } = payload;\n\n      return {\n        ...state,\n        cursorProperties,\n      };\n    }\n    case 'SET_OFFICE_EDITOR_SELECTION_PROPERTIES': {\n      const { selectionProperties } = payload;\n      return {\n        ...state,\n        selectionProperties,\n      };\n    }\n    case 'ADD_OFFICE_EDITOR_AVAILABLE_FONT_FACE': {\n      const { fontFace } = payload;\n      const fontFaces = state.availableFontFaces.slice();\n      fontFaces.push(fontFace);\n      return {\n        ...state,\n        availableFontFaces: fontFaces.sort(),\n      };\n    }\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_VALIDATION_MODAL_WIDGET_NAME':\n      return {\n        ...state,\n        validationModalWidgetName: payload.validationModalWidgetName,\n      };\n    case 'SET_VERIFICATION_RESULT':\n      return { ...state, verificationResult: payload.result };\n    case 'ADD_TRUSTED_CERTIFICATES':\n      /**\n       * To mimic the behavior of the Core implementation, where certificates\n       * can only be added but not removed, only allow this action to append\n       * to the existing array\n       */\n      return {\n        ...state,\n        certificates: [...state.certificates, ...payload.certificates],\n      };\n    case 'ADD_TRUST_LIST':\n      /**\n       * The Core implementation only allows a single Trust List to be passed\n       * as a parameter, but in order to allow flexibility of future potential\n       * requirements where a developer may want to add multiple Trust Lists,\n       * we are storing an Array of Trust Lists\n       */\n      return {\n        ...state,\n        trustLists: [...state.trustLists, payload.trustList],\n      };\n    case 'SET_IS_REVOCATION_CHECKING_ENABLED':\n      return {\n        ...state,\n        isRevocationCheckingEnabled: payload.isRevocationCheckingEnabled,\n      };\n    case 'SET_REVOCATION_PROXY_PREFIX':\n      return {\n        ...state,\n        revocationProxyPrefix: payload.revocationProxyPrefix,\n      };\n    default:\n      return state;\n  }\n};\n","function _typeof(obj) { 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 _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 _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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 _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 React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(PersistGate, _PureComponent);\n\n  function PersistGate() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, PersistGate);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      bootstrapped: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n      var persistor = _this.props.persistor;\n\n      var _persistor$getState = persistor.getState(),\n          bootstrapped = _persistor$getState.bootstrapped;\n\n      if (bootstrapped) {\n        if (_this.props.onBeforeLift) {\n          Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n            return _this.setState({\n              bootstrapped: true\n            });\n          });\n        } else {\n          _this.setState({\n            bootstrapped: true\n          });\n        }\n\n        _this._unsubscribe && _this._unsubscribe();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(PersistGate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n      this.handlePersistorState();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this._unsubscribe && this._unsubscribe();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n      }\n\n      if (typeof this.props.children === 'function') {\n        return this.props.children(this.state.bootstrapped);\n      }\n\n      return this.state.bootstrapped ? this.props.children : this.props.loading;\n    }\n  }]);\n\n  return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n  children: null,\n  loading: null\n});","import './LogoBar.scss';\nimport React from 'react';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport { useSelector } from 'react-redux';\nimport packageConfig from '../../../package.json';\nimport Button from '../Button';\nimport { isMobileSize } from 'src/helpers/getDeviceSize';\n\nconst LogoBar = () => {\n  const [\n    isDisabled,\n  ] = useSelector((state) => [\n    selectors.isElementDisabled(state, DataElements.LOGO_BAR),\n  ]);\n\n  const logoText = isMobileSize() ? 'Apryse' : 'Powered by Apryse';\n  const versionText = isMobileSize() ? packageConfig.version : `Version ${packageConfig.version}`;\n  const apryseURL = 'https://apryse.com/products/webviewer';\n  const apryseRedirect = () => {\n    window.top.location.href = apryseURL;\n  };\n\n  return isDisabled ? null : (\n    <div className=\"LogoBar\" data-element={DataElements.LOGO_BAR}>\n      <div className=\"logo-container\">\n        <Button\n          className=\"logo-button\"\n          img=\"apryse-logo\"\n          dataElement=\"apryseLogoButton\"\n          label={logoText}\n          onClick={apryseRedirect}\n        />\n      </div>\n      <div className=\"version-container\">\n        <a href={apryseURL} target=\"_top\" className=\"version\">{versionText}</a>\n      </div>\n    </div>\n  );\n};\n\nexport default LogoBar;\n","import LogoBar from './LogoBar';\n\nexport default LogoBar;\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './Accessibility.scss';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport getRootNode from 'helpers/getRootNode';\n\nfunction Accessibility() {\n  const dispatch = useDispatch();\n  const [isVisible, setIsVisible] = useState(false);\n\n  const isAccessibleMode = useSelector(selectors.isAccessibleMode);\n\n  const isNotesPanelOpen = useSelector((state) => selectors.isElementOpen(state, 'notesPanel'));\n  const isNotesPanelDisabled = useSelector((state) => selectors.isElementDisabled(state, 'notesPanel'));\n\n  const isSearchPanelOpen = useSelector((state) => selectors.isElementOpen(state, 'searchPanel'));\n  const isSearchPanelDisabled = useSelector((state) => selectors.isElementDisabled(state, 'searchPanel'));\n\n  const onFocus = () => setIsVisible(true);\n  const onBlur = () => setIsVisible(false);\n\n  const onSkipToDocument = () => {\n    getRootNode().querySelector('#pageText1').focus();\n  };\n\n  const onSkipToSearch = () => {\n    if (isSearchPanelOpen) {\n      const searchEl = getRootNode().querySelector('#SearchPanel__input');\n      searchEl && searchEl.focus();\n    } else {\n      dispatch(actions.openElement('searchPanel'));\n    }\n  };\n\n  const onSkipToNotes = () => {\n    if (isNotesPanelOpen) {\n      const noteEl = getRootNode().querySelector('#NotesPanel__input');\n      noteEl && noteEl.focus();\n    } else {\n      dispatch(actions.openElement('notesPanel'));\n    }\n  };\n\n  if (!isAccessibleMode) {\n    return null;\n  }\n\n  const a11yClass = classNames('Accessibility', isVisible ? 'visible' : 'hidden');\n\n  return (\n    <div className={a11yClass} data-element=\"accessibility\" onFocus={onFocus} onBlur={onBlur}>\n      <div>Skip to: </div>\n\n      <button onClick={onSkipToDocument}>Document</button>\n      {isSearchPanelDisabled ? null : <button onClick={onSkipToSearch}>Search</button>}\n      {isNotesPanelDisabled ? null : <button onClick={onSkipToNotes}>Notes</button>}\n    </div>\n  );\n}\n\nexport default Accessibility;\n","import Accessibility from './Accessibility';\n\nexport default Accessibility;","import React, { useRef, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport Measure from 'react-measure';\nimport { useTranslation } from 'react-i18next';\n\nconst ScrollGroup = ({ children }) => {\n  const [t] = useTranslation();\n  const scrollRef = useRef();\n  const [isScrolledToEnd, setIsScrolledToEnd] = useState(false);\n  const [isScrolledToStart, setIsScrolledToStart] = useState(false);\n\n  const checkScrollPosition = () => {\n    if (scrollRef.current) {\n      const {\n        scrollWidth,\n        scrollLeft,\n        offsetWidth,\n      } = scrollRef.current;\n\n      if (scrollLeft >= (scrollWidth - offsetWidth)) {\n        setIsScrolledToEnd(true);\n      } else {\n        setIsScrolledToEnd(false);\n      }\n\n      if (scrollLeft === 0) {\n        setIsScrolledToStart(true);\n      } else {\n        setIsScrolledToStart(false);\n      }\n    }\n  };\n\n  useEffect(() => {\n    checkScrollPosition();\n  });\n\n  return (\n    <Measure\n      onResize={() => {\n        checkScrollPosition();\n      }}\n    >\n      {({ measureRef }) => (\n        <div\n          ref={measureRef}\n          className=\"tool-group-buttons-container\"\n        >\n          {!isScrolledToStart &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'left',\n              )}\n            >\n              <div\n                className={classNames(\n                  'scroll-edge',\n                  'left',\n                )}\n              />\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft -= 54 * 2;\n                }}\n                aria-label={t('action.prev')}\n              >\n                <Icon glyph=\"icon-chevron-left\" />\n              </button>\n            </div>}\n          {!isScrolledToEnd &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'right',\n              )}\n            >\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft += 54 * 2;\n                }}\n                aria-label={t('action.next')}\n              >\n                <Icon glyph=\"icon-chevron-right\" />\n              </button>\n            </div>}\n          <div\n            className=\"tool-group-buttons-scroll\"\n            ref={scrollRef}\n            onScroll={checkScrollPosition}\n          >\n            {\n              children\n            }\n          </div>\n        </div>\n      )}\n    </Measure>\n  );\n};\n\nexport default ScrollGroup;\n","import React from 'react';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ScrollGroup from './ScrollGroup';\n\nconst ToolGroupButtonsScroll = ({ toolGroupButtonsItems }) => {\n  return <ScrollGroup>\n    {\n      toolGroupButtonsItems.map((toolBtn, i) => {\n        const { type, dataElement, hidden } = toolBtn;\n        const mediaQueryClassName = hidden ? hidden.map((screen) => `hide-in-${screen}`).join(' ') : '';\n        const innerKey = `${type}-${dataElement || i}`;\n\n        return (\n          <React.Fragment key={innerKey}>\n            {\n              <ToolGroupButton key={innerKey} mediaQueryClassName={mediaQueryClassName} {...toolBtn} />\n            }\n          </React.Fragment>\n        );\n      })}\n  </ScrollGroup>;\n};\n\nexport default ToolGroupButtonsScroll;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolButton from 'components/ToolButton';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ActionButton from 'components/ActionButton';\nimport StatefulButton from 'components/StatefulButton';\nimport CustomElement from 'components/CustomElement';\nimport ToolGroupButtonsScroll from './ToolGroupButtonsScroll';\nimport ScrollGroup from './ScrollGroup';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { isMobileDeviceFunc } from 'helpers/device';\n\nimport './HeaderItems.scss';\n\nclass HeaderItems extends React.PureComponent {\n  static propTypes = {\n    isToolGroupReorderingEnabled: PropTypes.bool.isRequired,\n    items: PropTypes.arrayOf(PropTypes.object).isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n  };\n\n  render() {\n    const { items, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n    let handledToolGroupButtons = false;\n\n    const headers = items.map((item, i) => {\n      const { type, dataElement, hidden, hiddenOnMobileDevice } = item;\n      let mediaQueryClassName = hidden\n        ? hidden\n          .map((screen) => {\n            let result = '';\n            if (isInDesktopOnlyMode) {\n              // if in desktop only mode and if it should hide in desktop\n              // append style to always make it hidden\n              if (screen === 'desktop') {\n                result = `always-hide hide-in-${screen}`;\n              }\n            } else {\n              result = `hide-in-${screen}`;\n            }\n            return result;\n          })\n          .join(' ')\n        : '';\n      if (hiddenOnMobileDevice && isMobileDeviceFunc()) {\n        mediaQueryClassName += ' hide-in-mobile hide-in-small-mobile';\n      }\n      const key = `${type}-${dataElement || i}`;\n\n      switch (type) {\n        case 'toolButton':\n          return <ToolButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'scrollGroup':\n          return (\n            <ScrollGroup key={key}>\n              <HeaderItems\n                items={item.children}\n                isToolGroupReorderingEnabled={isToolGroupReorderingEnabled}\n                isInDesktopOnlyMode={isInDesktopOnlyMode}\n              />\n            </ScrollGroup>\n          );\n        case 'toolGroupButton':\n          if (!isToolGroupReorderingEnabled) {\n            return <ToolGroupButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n          }\n          if (!handledToolGroupButtons) {\n            handledToolGroupButtons = true;\n            const toolGroupButtonsItems = items.filter(({ type }) => type === 'toolGroupButton');\n            return <ToolGroupButtonsScroll key={key} toolGroupButtonsItems={toolGroupButtonsItems} />;\n          }\n          return null;\n        case 'toggleElementButton':\n          return <ToggleElementButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'actionButton':\n          return <ActionButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'statefulButton':\n          return <StatefulButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'customElement':\n          return <CustomElement key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'spacer':\n        case 'divider':\n          return <div key={key} className={`${type} ${mediaQueryClassName}`}></div>;\n        default:\n          console.warn(`${type} is not a valid header item type.`);\n          return null;\n      }\n    });\n\n    return <div className=\"HeaderItems\">{headers}</div>;\n  }\n}\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <HeaderItems {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import HeaderItems from './HeaderItems';\n\nexport default HeaderItems;","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport './Tab.scss';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  isToLeftOfActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragLeave, onDragStart, onDragOver, isActive, closeTab, id, isToLeftOfActive }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split('.')[0] : tab.options.filename;\n\n  useEffect(() => {\n    if (tab && tab.disabled !== disabled) {\n      setDisabled(tab.disabled);\n    }\n  }, [tab]);\n\n  return (\n    <div className={'draggable-tab'}\n      onDragOver={onDragOver} onDragStart={onDragStart} onDragLeave={onDragLeave} draggable id={id}\n    >\n      <div className={classNames({ Tab: true, active: isActive })} onClick={setActive}>\n        <div className={classNames({ 'file-text': true, disabled })} >\n          <p>{name}</p>\n        </div>\n        <div className={'close-button-wrapper'}>\n          <Button\n            img=\"icon-close\"\n            title=\"action.close\"\n            onClick={closeTab}\n          />\n          {!isActive && !isToLeftOfActive && <div className=\"divider\"/>}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import React from 'react';\nimport './HoverTab.scss';\nimport Icon from 'components/Icon';\n\nconst HoverTab = ({ onDragOver, onDragLeave }) => {\n  return (\n    <div className=\"HoverTab\" onDragOver={onDragOver} onDragLeave={onDragLeave}>\n      <Icon glyph=\"icon-download\" />\n    </div>\n  );\n};\n\nexport default HoverTab;","import React, { useEffect, useState } from 'react';\nimport './CollapsedTab.scss';\nimport Button from 'components/Button';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragStart, closeTab, id }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split('.')[0] : tab.options.filename;\n  const [isHovering, setIsHovering] = useState(false);\n\n  useEffect(() => {\n    setDisabled(tab?.disabled);\n  }, [tab]);\n\n  return (\n    <div className={'draggable-collapsed-tab'}\n      onDragStart={onDragStart}\n      draggable\n      id={id}\n      onMouseEnter={() => setIsHovering(true)}\n      onMouseLeave={() => setIsHovering(false)}>\n      <div className={'CollapsedTab'}>\n        <div className={classNames({ 'file-text': true, disabled })} onClick={setActive}>\n          <p>{name}</p>\n        </div>\n        <Button\n          img=\"icon-close\"\n          title=\"action.close\"\n          onClick={closeTab}\n          className={classNames({ 'hidden-button': !isHovering })}\n        />\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n  const { innerWidth: width, innerHeight: height } = window;\n  return {\n    width,\n    height\n  };\n}\n\nexport default function useWindowDimensions() {\n  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowDimensions(getWindowDimensions());\n    }\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return windowDimensions;\n}\n","import React, { useEffect, useRef, useState, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport './TabsHeader.scss';\nimport Tab from 'components/TabsHeader/Tab/Tab';\nimport Button from 'components/Button';\nimport HoverTab from 'components/TabsHeader/HoverTab/HoverTab';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\nimport CollapsedTab from 'components/TabsHeader/CollapsedTab/CollapsedTab';\nimport classNames from 'classnames';\nimport useWindowDimensions from 'helpers/useWindowsDimensions';\nimport getRootNode from 'helpers/getRootNode';\n\n\nconst TabsHeader = () => {\n  const dispatch = useDispatch();\n  const [isDragging, setDragging] = useState(false);\n  const [dragIndex, setDragIndex] = useState();\n  const [dropTarget, setDropTarget] = useState();\n  const [hovering, setHovering] = useState();\n  const hoveredTab = useRef();\n  const [isMultiTab, tabManager, currTabs, activeTab, isEmptyPageOpen] = useSelector((state) => [\n    selectors.getIsMultiTab(state),\n    selectors.getTabManager(state),\n    selectors.getTabs(state),\n    selectors.getActiveTab(state),\n    selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0\n  ]);\n  const { width } = useWindowDimensions();\n\n  useEffect(() => {\n    const div = document.createElement('div');\n    div.id = '0';\n    ReactDOM.render(<HoverTab onDragOver={onDragOverHoverTab} onDragLeave={onDragLeave} />, div);\n    hoveredTab.current = div;\n  }, []);\n\n  const breakpoint = Math.floor((width - 80) / 180); // Browser width minus a space for the add button, divided by max-width of tab\n  const activeIndex = currTabs?.findIndex((t) => t.id === activeTab);\n\n  useEffect(() => {\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n  }, [breakpoint, activeIndex, tabManager]);\n\n  const onDragStart = (e, index) => {\n    if (isDragging) {\n      return;\n    }\n    setDragging(true);\n    setDragIndex(index);\n    setDropTarget(index);\n    e.dataTransfer.setData('text', '');\n    e.dataTransfer.dropEffect = 'move';\n    e.dataTransfer.effectAllowed = 'move';\n  };\n\n  const onDragOver = (e, index, id) => {\n    e.preventDefault();\n    e.stopPropagation();\n    const element = getRootNode().querySelector(`#tab-${id}`);\n    const centerX = element.offsetLeft + element.offsetWidth / 2;\n    const moveLeft = centerX >= e.pageX;\n    if (index === dragIndex ||\n      (index + 1 === dragIndex && !moveLeft) ||\n      (index - 1 === dragIndex && moveLeft)) {\n      return; // End because moving to same spot\n    }\n    hoveredTab.current.id = id;\n    if (moveLeft && index > dragIndex && index !== 0) {\n      setDropTarget(index - 1);\n    } else if (!moveLeft && index < dragIndex && index !== currTabs.length - 1) {\n      setDropTarget(index + 1);\n    } else {\n      setDropTarget(index);\n    }\n    moveLeft ? element.prepend(hoveredTab.current) : element.append(hoveredTab.current);\n    setHovering(true);\n  };\n\n  const onDragOverHoverTab = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!hovering) {\n      setHovering(true);\n    }\n  };\n\n  const onDragLeave = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!getRootNode().getElementsByClassName('TabsHeader')[0]?.contains(e.target)) {\n      hoveredTab.current.remove();\n    }\n    setHovering(false);\n  };\n\n  const onDrop = () => {\n    setHovering(false);\n    if (!isDragging || dragIndex === dropTarget) {\n      return;\n    }\n    tabManager.moveTab(dragIndex, dropTarget);\n    hoveredTab.current.remove();\n  };\n\n  const onDragEnd = () => {\n    hoveredTab.current.remove();\n    setDragging(false);\n    setDragIndex(null);\n  };\n\n  const [tabs, additionalTabs] = useMemo(() => {\n    if (!isMultiTab) {\n      return [null, null];\n    }\n    const activeIndex = currTabs?.findIndex((t) => t.id === activeTab);\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n    const renderedTabs = currTabs.map((tab, index) => {\n      if (index < breakpoint) {\n        return <Tab\n          onDragStart={(e) => onDragStart(e, index)}\n          onDragOver={(e) => onDragOver(e, index, tab.id)}\n          onDragLeave={onDragLeave}\n          setActive={() => setActiveTab(tab.id)}\n          key={tab.id}\n          id={`tab-${tab.id}`}\n          isActive={tab.id === activeTab}\n          closeTab={(e) => {\n            e.stopPropagation();\n            deleteTab(tab.id);\n          }}\n          tab={tab}\n          isToLeftOfActive={index === activeIndex - 1}\n        />;\n      }\n      return <CollapsedTab\n        onDragStart={(e) => onDragStart(e, index)}\n        tab={tab}\n        key={tab.id}\n        id={`tab-${tab.id}`}\n        closeTab={() => deleteTab(tab.id)}\n        setActive={() => setActiveTab(tab.id)}\n      />;\n    });\n    return [renderedTabs?.slice(0, breakpoint), renderedTabs?.slice(breakpoint, renderedTabs.length)];\n  }, [tabManager, currTabs, breakpoint, setActiveTab, deleteTab, onDragEnd, onDragStart, onDragOver, onDragLeave]);\n\n  async function setActiveTab(id) {\n    const tabIndex = currTabs.findIndex((t) => t.id === id);\n    if (tabIndex >= breakpoint) {\n      tabManager.moveTab(tabIndex, breakpoint - 1);\n    }\n    activeTab !== id && await tabManager.setActiveTab(id, true);\n  }\n\n  function deleteTab(id) {\n    tabManager.deleteTab(id, dispatch);\n  }\n\n  const openFile = () => dispatch(actions.openElement('OpenFileModal'));\n\n  if (!isMultiTab) {\n    return null;\n  }\n  return (\n    <div className=\"TabsHeader\" onDrop={onDrop} onDragEnd={onDragEnd}>\n      {tabs}\n      <div className={classNames({\n        'add-button': true,\n        'add-button-with-label': isEmptyPageOpen\n      })}>\n        {additionalTabs?.length > 0 && <div\n          className={'dropdown-menu tab-dropdown-button'}\n          onClick={() => dispatch(actions.toggleElement('tabMenu'))}\n          data-element=\"tabTrigger\"\n        >\n          {additionalTabs.length}\n        </div>}\n        <Button\n          title=\"action.openFile\"\n          img=\"icon-menu-add\"\n          onClick={openFile}\n          label={isEmptyPageOpen ? 'action.openFile' : ''}\n        />\n        {additionalTabs?.length > 0 && <FlyoutMenu\n          menu=\"tabMenu\"\n          trigger=\"tabTrigger\"\n          onClose={undefined}\n        >\n          {additionalTabs}\n        </FlyoutMenu>}\n      </div>\n    </div>\n  );\n};\n\nexport default TabsHeader;\n","import TabsHeader from './TabsHeader';\n\nexport default TabsHeader;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport HeaderItems from 'components/HeaderItems';\nimport TabsHeader from 'components/TabsHeader';\n\nimport selectors from 'selectors';\nimport classNames from 'classnames';\n\nimport './Header.scss';\n\nclass Header extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isToolsHeaderOpen: PropTypes.bool,\n    isMultiTab: PropTypes.bool,\n    currentToolbarGroup: PropTypes.string,\n  }\n\n  render() {\n    const { isDisabled, activeHeaderItems, isOpen, isToolsHeaderOpen, currentToolbarGroup, isMultiTab, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n\n    if (isDisabled || !isOpen) {\n      return null;\n    }\n\n    return (\n      <React.Fragment>\n        <TabsHeader />\n        <div\n          className={classNames({\n            Header: true,\n            MainHeader: true,\n          })}\n          data-element=\"header\"\n        >\n          <HeaderItems items={activeHeaderItems} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n          {(!isToolsHeaderOpen || currentToolbarGroup === 'toolbarGroup-View') && !isMultiTab\n          && <div className=\"view-header-border\" />}\n        </div>\n      </React.Fragment>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  isMultiTab: selectors.getIsMultiTab(state),\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isToolsHeaderOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  isDisabled: selectors.isElementDisabled(state, 'header'),\n  isOpen: selectors.isElementOpen(state, 'header'),\n  activeHeaderItems: selectors.getActiveHeaderItems(state),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n});\n\nexport default connect(mapStateToProps)(Header);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport HeaderItems from 'components/HeaderItems';\nimport { isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\n\nimport selectors from 'selectors';\n\nimport './Header.scss';\n\nclass ToolsHeader extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isHeaderDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool\n  }\n\n  render() {\n    const { isDisabled, isHeaderDisabled, activeHeaderItems, isOpen, currentToolbarGroup, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n    const isVisible = !(isDisabled || isHeaderDisabled) && isOpen && currentToolbarGroup !== 'toolbarGroup-View';\n\n    return (\n      <div\n        className={classNames({\n          'HeaderToolsContainer': true,\n          'closed': !isVisible,\n        })}\n        data-element=\"toolsHeader\"\n      >\n        <div\n          className=\"MainHeader Tools\"\n        >\n          <HeaderItems items={activeHeaderItems} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n        </div>\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isDisabled: selectors.isElementDisabled(state, 'toolsHeader'),\n  isHeaderDisabled: selectors.isElementDisabled(state, 'header'),\n  isOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  isToolsOverlayOpen: selectors.isElementOpen(state, 'toolsOverlay'),\n  isToolsOverlayDisabled: selectors.isElementDisabled(state, 'toolsOverlay'),\n  isSignatureOverlayOpen: selectors.isElementOpen(state, 'signatureOverlay'),\n  isSignatureOverlayDisabled: selectors.isElementDisabled(state, 'signatureOverlay'),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n});\n\nconst mapDispatchToProps = {\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolsHeader = connect(mapStateToProps, mapDispatchToProps)(ToolsHeader);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  return (\n    <ConnectedToolsHeader {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} />\n  );\n};\n\nexport default connectedComponent;\n","import React from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport Header from './Header';\nimport ToolsHeader from './ToolsHeader';\n\nfunction HeaderContainer() {\n  const [\n    featureFlags,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n    ], shallowEqual);\n  const { customizableUI } = featureFlags;\n\n  if (!customizableUI) {\n    return (\n      <>\n        <Header />\n        <ToolsHeader />\n      </>\n    );\n  }\n\n  return null;\n}\n\nexport default HeaderContainer;","import Header from './HeaderContainer';\n\nexport default Header;","import { isIEEdge, isIE11 } from 'helpers/device';\n\n// When a panel opens/closes, we want to shift the container accordingly\n// The normal way to do this is through css\n// For example, when left panel opens, we add 'left-panel' to the className, make the container width become calc(100%-#{$left-panel-width})\n// and use css transition to achieve a smooth panel opening animation\n// However, IE11 and Edge haven't supported using transition and calc(...) together,\n// So we have to calculate the width manually.\nexport const updateContainerWidth = (prevProps, props, container) => {\n  const { leftPanelWidth = 300 } = props;\n  const rightPanelWidth = 300;\n\n  const leftPanelClosed = prevProps.isLeftPanelOpen && !props.isLeftPanelOpen;\n  if (leftPanelClosed) {\n    expandContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = '0px';\n  }\n\n  const rightPanelClosed = prevProps.isRightPanelOpen && !props.isRightPanelOpen;\n  if (rightPanelClosed) {\n    expandContainerWidthBy(rightPanelWidth, container);\n  }\n\n  const leftPanelOpened = !prevProps.isLeftPanelOpen && props.isLeftPanelOpen;\n  if (leftPanelOpened) {\n    shrinkContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const leftPanelResized = props.isLeftPanelOpen && prevProps.leftPanelWidth !== props.leftPanelWidth;\n  if (leftPanelResized) {\n    container.style.width = `${window.innerWidth - leftPanelWidth}px`;\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const rightPanelOpened = !prevProps.isRightPanelOpen && props.isRightPanelOpen;\n  if (rightPanelOpened) {\n    shrinkContainerWidthBy(rightPanelWidth, container);\n  }\n};\n\nconst getWidthAfterTransition = (container) => {\n  const oldTransition = container.style.transition;\n  container.style.transition = 'none';\n  const containerWidth = parseInt(window.getComputedStyle(container).width, 10);\n  container.style.transition = oldTransition;\n\n  return containerWidth;\n};\n\nconst expandContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth + panelWidth}px`;\n  }\n\n  if (isIE11) {\n    // need to add 'scrollBarWidth' or it breaks after \"npm run build\", this isn't needed for npm run start\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth + panelWidth + scrollBarWidth}px`;\n  }\n};\n\nconst shrinkContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth - panelWidth}px`;\n  }\n\n  if (isIE11) {\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth - panelWidth + scrollBarWidth}px`;\n  }\n};\n\nexport const getClassNameInIE = ({ isHeaderOpen, isSearchOverlayOpen }) => [\n  'DocumentContainer',\n  isHeaderOpen ? '' : 'no-header',\n  isSearchOverlayOpen ? 'search-overlay' : '',\n].join(' ').trim();\n\nexport const handleWindowResize = ({ isLeftPanelOpen, isRightPanelOpen, leftPanelWidth = 300 }, container) => {\n  const rightPanelWidth = 300;\n  let width = window.innerWidth;\n\n  if (isLeftPanelOpen) {\n    width -= leftPanelWidth;\n  }\n\n  if (isRightPanelOpen) {\n    width -= rightPanelWidth;\n  }\n\n  container.style.width = `${width}px`;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport core from 'core';\nimport classNames from 'classnames';\nimport selectors from 'selectors';\nimport { isIOS } from 'helpers/device';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nimport './PageNavOverlay.scss';\n\nclass PageNavOverlay extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelDisabled: PropTypes.bool,\n    isLeftPanelOpen: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    pageLabels: PropTypes.array.isRequired,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired,\n    isLogoBarEnabled: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n    this.textInput = React.createRef();\n    this.state = {\n      input: this.props.pageLabels?.[this.props.currentPage - 1] ?? '',\n      isCustomPageLabels: false,\n      isFocused: false,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.pageLabels !== this.props.pageLabels) {\n      const isCustomPageLabels = this.props.pageLabels.some((label, index) => label !== `${index + 1}`);\n      this.setState({ isCustomPageLabels });\n    }\n\n    if (prevProps.currentPage !== this.props.currentPage || prevProps.pageLabels !== this.props.pageLabels) {\n      this.setState({\n        input: this.props.pageLabels[this.props.currentPage - 1],\n      });\n    }\n  }\n\n  onClick = () => {\n    if (isIOS) {\n      setTimeout(() => {\n        this.textInput.current.setSelectionRange(0, 9999);\n      }, 0);\n    } else {\n      this.textInput.current.select();\n    }\n  };\n\n  onChange = (e) => {\n    if (!this.props.pageLabels?.some((p) => p.startsWith(e.target.value))) {\n      return;\n    }\n\n    this.setState({ input: e.target.value });\n  };\n\n  onSubmit = (e) => {\n    e.preventDefault();\n\n    const { input } = this.state;\n    const isValidInput = input === '' || this.props.pageLabels.includes(input);\n\n    if (isValidInput) {\n      const pageToGo = this.props.pageLabels.indexOf(input) + 1;\n      core.setCurrentPage(pageToGo);\n    } else {\n      this.textInput.current.blur();\n    }\n  };\n\n  onBlur = () => {\n    const { currentPage, pageLabels } = this.props;\n\n    this.setState({ input: pageLabels[currentPage - 1], isFocused: false });\n  };\n\n  onFocus = () => {\n    this.setState({ isFocused: true });\n  };\n\n  goToPrevPage = () => {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getCurrentPage() - 1 > 0) {\n      documentViewer.setCurrentPage(Math.max(documentViewer.getCurrentPage() - 1, 1));\n    }\n  };\n\n  goToNextPage = () => {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getCurrentPage() + 1 <= documentViewer.getPageCount()) {\n      documentViewer.setCurrentPage(Math.min(documentViewer.getCurrentPage() + 1, documentViewer.getPageCount()));\n    }\n  };\n\n  render() {\n    const {\n      currentPage,\n      totalPages,\n      allowPageNavigation,\n      isMobile,\n      t,\n      dataElement,\n      enableFadePageNavigation,\n    } = this.props;\n\n    const documentViewer = core.getDocumentViewer();\n    const inputWidth = this.state.input ? this.state.input.length * (isMobile ? 10 : 8) : 0;\n    const isFirstPage = documentViewer.getCurrentPage() === 1;\n    const isLastPage = documentViewer.getCurrentPage() === documentViewer.getPageCount();\n\n    return (\n      <DataElementWrapper\n        className={classNames({\n          Overlay: true,\n          PageNavOverlay: true,\n          FadeOut: enableFadePageNavigation && !this.props.showNavOverlay && !this.state.isFocused,\n          'logo-bar-enabled': this.props.isLogoBarEnabled,\n        })}\n        dataElement={dataElement || 'pageNavOverlay'}\n        onMouseEnter={this.props.onMouseEnter}\n        onMouseLeave={this.props.onMouseLeave}\n      >\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-left\"\n          title={isFirstPage ? null : t('action.pagePrev')} // Don't show tooltip on a disabled button\n          ariaLabel={t('action.pagePrev')}\n          onClick={this.goToPrevPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isFirstPage}\n        />\n        <div className=\"formContainer\" onClick={this.onClick}>\n          <form onSubmit={this.onSubmit} onBlur={this.onBlur} onFocus={this.onFocus}>\n            <input\n              ref={this.textInput}\n              type=\"text\"\n              value={this.state.input}\n              onChange={this.onChange}\n              tabIndex={-1}\n              disabled={!allowPageNavigation}\n              style={{ width: inputWidth }}\n              aria-label={t('action.pageSet')}\n            />\n            {!isOfficeEditorMode() && (\n              this.state.isCustomPageLabels\n                ? ` (${currentPage}/${totalPages})`\n                : ` / ${totalPages}`\n            )}\n          </form>\n        </div>\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-right\"\n          title={isLastPage ? null : t('action.pageNext')}\n          ariaLabel={t('action.pageNext')}\n          onClick={this.goToNextPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isLastPage}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  currentPage: selectors.getCurrentPage(state),\n  totalPages: selectors.getTotalPages(state),\n  pageLabels: selectors.getPageLabels(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state),\n});\n\nconst ConnectedPageNavOverlay = connect(mapStateToProps)(withTranslation()(PageNavOverlay));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedPageNavOverlay {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import PageNavOverlay from './PageNavOverlay';\n\nexport default PageNavOverlay;\n","export default (arg) => {\n  let zoomLevel;\n\n  if (typeof arg === 'string') {\n    zoomLevel = Number.parseFloat(arg) / 100;\n\n    const endsWithPercentage = arg.indexOf('%') === arg.length - 1;\n    if (endsWithPercentage) {\n      console.warn(`Zoom level in string format will be treated as percentage, ${arg} will be converted to ${zoomLevel}`);\n    }\n  } else if (typeof arg === 'number') {\n    zoomLevel = arg;\n  }\n\n  return zoomLevel;\n};","import actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from './getActualZoomLevel';\n\nexport default (dispatch) => (zoomLevel) => {\n  const maxZoom = getActualZoomLevel(zoomLevel);\n  if (maxZoom) {\n    const minZoom = zoomFactors.getMinZoomLevel();\n    const zoomList = defaultZoomList.filter((zoom) => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMaxZoomLevel(maxZoom);\n    dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMaxZoomLevel(maxZoom);\n  } else {\n    console.warn('Type of the argument for setMaxZoomLevel must be either string or number');\n  }\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport StylePopup from 'components/StylePopup';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport Draggable from 'react-draggable';\nimport { getReaderModePopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport { getOpenedWarningModal, getOpenedColorPicker } from 'helpers/getElements';\n\nimport './ReaderModeStylePopup.scss';\n\nconst ReaderModeStylePopup = (props) => {\n  const [position, setPosition] = useState({});\n  const popupRef = useRef(null);\n\n  useEffect(() => {\n    setPosition(getReaderModePopupPositionBasedOn(props.annotPosition, popupRef, props.viewer));\n  }, []);\n\n  useOnClickOutside(popupRef, () => {\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    if (!warningModal && !colorPicker) {\n      props.onClose();\n    }\n  });\n\n  return (\n    <Draggable cancel=\".Button, .cell, .sliders-container svg, select\">\n      <div\n        className=\"ReaderModeStylePopup\"\n        style={position}\n        ref={popupRef}\n      >\n        <StylePopup\n          {...props}\n          disableSeparator\n        />\n      </div>\n    </Draggable>\n  );\n};\n\nexport default ReaderModeStylePopup;\n","import ReaderModeStylePopup from './ReaderModeStylePopup';\n\nexport default ReaderModeStylePopup;","import React from 'react';\nimport core from 'core';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport zoomFactors from 'constants/zoomFactors';\nimport { connect } from 'react-redux';\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\nimport ReaderModeStylePopup from 'components/ReaderModeStylePopup';\n\nclass ReaderModeViewer extends React.PureComponent {\n  static propTypes = {\n    containerWidth: PropTypes.number.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.viewer = React.createRef();\n    this.originalMaxZoom = zoomFactors.getMaxZoomLevel();\n    this.setAnnotStyleCb = undefined;\n    this.doneSetAnnotColorCb = undefined;\n    this.originalEnableFadePageNavigation = props.enableFadePageNavigation;\n\n    this.state = {\n      colorMapKey: undefined,\n      showStylePopup: false,\n      style: undefined,\n      annotPosition: undefined\n    };\n  }\n\n  componentDidMount() {\n    if (this.props.containerWidth > 0) {\n      this.updateMaxZoom();\n    }\n    this.props.dispatch(actions.disableFadePageNavigationComponent());\n\n    this.renderDocument();\n\n    core.addEventListener('documentLoaded', this.renderDocument);\n    core.addEventListener('pageNumberUpdated', this.goToPage);\n    core.addEventListener('zoomUpdated', this.setZoom);\n    core.addEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.addEventListener('toolModeUpdated', this.setAddAnnotConfig);\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.renderDocument);\n    core.removeEventListener('pageNumberUpdated', this.goToPage);\n    core.removeEventListener('zoomUpdated', this.setZoom);\n    core.removeEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.removeEventListener('toolModeUpdated', this.setAddAnnotConfig);\n\n    this.wvReadingMode?.unmount();\n\n    setMaxZoomLevel(this.props.dispatch)(this.originalMaxZoom);\n    if (this.originalEnableFadePageNavigation) {\n      this.props.dispatch(actions.enableFadePageNavigationComponent());\n    } else {\n      this.props.dispatch(actions.disableFadePageNavigationComponent());\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.containerWidth > 0 && prevProps.containerWidth !== this.props.containerWidth) {\n      this.updateMaxZoom();\n    }\n  }\n\n  render() {\n    return (\n      <>\n        <div\n          className=\"reader-mode-viewer\"\n          ref={this.viewer}\n          style={{ height: '100%', width: '100%' }}\n        >\n        </div>\n        {this.state.showStylePopup && (\n          <ReaderModeStylePopup\n            colorMapKey={this.state.colorMapKey}\n            style={this.state.style}\n            onStyleChange={this.handleColorChange}\n            onSliderChange={this.handleOpacityChange}\n            onClose={this.handleStylePopupClose}\n            annotPosition={this.state.annotPosition}\n            viewer={this.viewer}\n          />\n        )}\n      </>\n    );\n  }\n\n  renderDocument = () => {\n    import('@pdftron/webviewer-reading-mode').then(({ default: WebViewerReadingMode }) => {\n      if (!this.wvReadingMode) {\n        // eslint-disable-next-line no-undef\n        this.wvReadingMode = WebViewerReadingMode.initialize(window.Core.PDFNet);\n      } else {\n        this.wvReadingMode.unmount();\n      }\n\n      this.wvReadingMode.render(\n        core.getDocumentViewer().getDocument().getPDFDoc(),\n        this.viewer.current,\n        {\n          pageNumberUpdateHandler: core.setCurrentPage,\n          pageNum: core.getCurrentPage(),\n          editStyleHandler: this.onEditStyle\n        }\n      );\n      this.setZoom(core.getZoom());\n      this.setAddAnnotConfig();\n    });\n  }\n\n  goToPage = (pageNum) => {\n    this.wvReadingMode?.goToPage(pageNum);\n  }\n\n  setZoom = (zoom) => {\n    if (!this.wvReadingMode) {\n      return;\n    }\n    this.wvReadingMode.setZoom(zoom);\n    const pageWidth = core.getDocumentViewer().getPageWidth(1);\n    const readerModeElement = this.viewer.current.firstChild;\n    if (pageWidth && readerModeElement) {\n      readerModeElement.style.padding = `0 ${(this.props.containerWidth - pageWidth * zoom) / 2}px`;\n    }\n  }\n\n  updateMaxZoom() {\n    // Calling the FitWidth function to get the calculated fit width zoom level for normal page rendering\n    const maxZoomLevel = core.getDocumentViewer().FitMode.FitWidth.call(core.getDocumentViewer());\n    setMaxZoomLevel(this.props.dispatch)(maxZoomLevel);\n    if (maxZoomLevel < core.getZoom()) {\n      core.fitToWidth();\n    }\n    this.setZoom(core.getZoom());\n  }\n\n  getAnnotTypeFromToolMode = (toolMode) => {\n    // eslint-disable-next-line no-undef\n    const annotationTypes = WebViewerReadingMode.AnnotationType;\n    if (toolMode instanceof window.Core.Tools.TextHighlightCreateTool) {\n      return annotationTypes.Highlight;\n    }\n    if (toolMode instanceof window.Core.Tools.TextUnderlineCreateTool) {\n      return annotationTypes.Underline;\n    }\n    if (toolMode instanceof window.Core.Tools.TextStrikeoutCreateTool) {\n      return annotationTypes.Strikeout;\n    }\n    if (toolMode instanceof window.Core.Tools.TextSquigglyCreateTool) {\n      return annotationTypes.Squiggly;\n    }\n    return undefined;\n  }\n\n  setAddAnnotConfig = () => {\n    if (!this.wvReadingMode) {\n      return;\n    }\n    const toolMode = core.getToolMode();\n    const annotType = this.getAnnotTypeFromToolMode(toolMode);\n    if (annotType) {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: annotType,\n        color: toolMode['defaults']['StrokeColor'].toHexString(),\n        opacity: toolMode['defaults']['Opacity']\n      });\n    } else {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: undefined\n      });\n    }\n  }\n\n  onEditStyle = ({ color, opacity, type, position }, setAnnotStyleCb, doneSetAnnotColorCb) => {\n    this.setAnnotStyleCb = setAnnotStyleCb;\n    this.doneSetAnnotColorCb = doneSetAnnotColorCb;\n    this.setState({\n      colorMapKey: this.getColorMapKey(type),\n      style: {\n        StrokeColor: new window.Core.Annotations.Color(color),\n        Opacity: opacity\n      },\n      showStylePopup: true,\n      annotPosition: position\n    });\n  }\n\n  getColorMapKey(annotType) {\n    // eslint-disable-next-line no-undef\n    const annotationTypes = WebViewerReadingMode.AnnotationType;\n    if (annotType === annotationTypes.Highlight) {\n      return 'highlight';\n    }\n    if (annotType === annotationTypes.Underline) {\n      return 'underline';\n    }\n    if (annotType === annotationTypes.Strikeout) {\n      return 'strikeout';\n    }\n    if (annotType === annotationTypes.Squiggly) {\n      return 'squiggly';\n    }\n    return '';\n  }\n\n  handleColorChange = (property, color) => {\n    if (property === 'StrokeColor' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: color.toHexString(),\n        opacity: this.state.style.Opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          StrokeColor: color\n        }\n      });\n    }\n  }\n\n  handleOpacityChange = (property, opacity) => {\n    if (property === 'Opacity' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: this.state.style.StrokeColor.toHexString(),\n        opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          Opacity: opacity\n        }\n      });\n    }\n  }\n\n  handleStylePopupClose = () => {\n    this.setState({\n      showStylePopup: false\n    });\n    this.doneSetAnnotColorCb();\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  containerWidth: selectors.getDocumentContainerWidth(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state)\n});\n\nexport default connect(mapStateToProps)(ReaderModeViewer);\n","import ReaderModeViewer from './ReaderModeViewer';\n\nexport default ReaderModeViewer;\n","import React, { Suspense, useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\n// Map that tracks if the element has been opened before\nconst openedElementsMap = new Map();\n// Elements in this list will stay in the DOM after opened for the first time\n// So the status of these elements will not be discarded when closed\nconst elementsList = [DataElements.SEARCH_PANEL];\nelementsList.forEach((dataElement) => {\n  openedElementsMap.set(dataElement, false);\n});\nconst elementWasOpened = (dataElement) => openedElementsMap.has(dataElement) && openedElementsMap.get(dataElement);\n\nconst LazyLoadWrapper = ({\n  Component,\n  dataElement,\n  onOpenHook = () => {},\n  ...passedInProps\n}) => {\n  const onOpenProps = onOpenHook();\n  const isOpen = useSelector((state) => selectors.isElementOpen(state, dataElement));\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n\n  useEffect(() => {\n    if (isOpen && openedElementsMap.has(dataElement) && !openedElementsMap.get(dataElement)) {\n      openedElementsMap.set(dataElement, true);\n    }\n  }, [isOpen]);\n\n  return (isDisabled || !(isOpen || elementWasOpened(dataElement))) ? null : (\n    <Suspense fallback={<></>}>\n      <Component\n        {...onOpenProps}\n        {...passedInProps}\n      />\n    </Suspense>\n  );\n};\n\nexport default LazyLoadWrapper;\n","import { lazy } from 'react';\n\n// Overlays\nconst ScaleOverlayContainer = lazy(() => import('components/ScaleOverlay/ScaleOverlayContainer'));\nconst MeasurementOverlay = lazy(() => import('components/MeasurementOverlay'));\nconst ViewControlsOverlay = lazy(() => import('components/ViewControlsOverlay'));\nconst MenuOverlay = lazy(() => import('components/MenuOverlay'));\nconst ZoomOverlay = lazy(() => import('components/ZoomOverlay'));\nconst PageManipulationOverlay = lazy(() => import('components/PageManipulationOverlay'));\nconst AnnotationContentOverlay = lazy(() => import('components/AnnotationContentOverlay'));\nconst RotatePopup = lazy(() => import('components/LeftPanelOverlay/RotatePopup'));\nconst ThumbnailMoreOptionsPopup = lazy(() => import('src/components/LeftPanelOverlay/ThumbnailMoreOptionsPopup'));\nconst ThumbnailMoreOptionsPopupSmall = lazy(() => import('src/components/LeftPanelOverlay/ThumbnailMoreOptionsPopupSmall'));\n\n// Popups\nconst AnnotationPopup = lazy(() => import('components/AnnotationPopup'));\nconst FormFieldEditPopup = lazy(() => import('components/FormFieldEditPopup'));\nconst TextPopup = lazy(() => import('components/TextPopup'));\nconst ContextMenuPopup = lazy(() => import('components/ContextMenuPopup'));\nconst RichTextPopup = lazy(() => import('components/RichTextPopup'));\nconst AudioPlaybackPopup = lazy(() => import('components/AudioPlaybackPopup'));\nconst DocumentCropPopup = lazy(() => import('components/DocumentCropPopup'));\nconst InlineCommentingPopup = lazy(() => import('components/InlineCommentingPopup'));\n\n// Modals\nconst ContentEditLinkModal = lazy(() => import('components/ContentEditLinkModal'));\nconst SignatureModal = lazy(() => import('components/SignatureModal'));\nconst ScaleModal = lazy(() => import('components/ScaleModal'));\nconst PrintModal = lazy(() => import('components/PrintModal'));\nconst ErrorModal = lazy(() => import('components/ErrorModal'));\nconst PasswordModal = lazy(() => import('components/PasswordModal'));\nconst CreateStampModal = lazy(() => import('components/CreateStampModal'));\nconst PageReplacementModal = lazy(() => import('components/PageReplacementModal'));\nconst LinkModal = lazy(() => import('components/LinkModal'));\nconst FilterAnnotModal = lazy(() => import('components/FilterAnnotModal'));\nconst PageRedactionModal = lazy(() => import('components/PageRedactionModal'));\nconst CalibrationModal = lazy(() => import('components/CalibrationModal'));\nconst SettingsModal = lazy(() => import('components/SettingsModal'));\nconst SaveModal = lazy(() => import('components/SaveModal'));\nconst InsertPageModal = lazy(() => import('components/InsertPageModal'));\nconst LoadingModal = lazy(() => import('components/LoadingModal'));\nconst ProgressModal = lazy(() => import('components/ProgressModal'));\nconst WarningModal = lazy(() => import('components/WarningModal'));\nconst Model3DModal = lazy(() => import('components/Model3DModal'));\nconst ColorPickerModal = lazy(() => import('components/ColorPickerModal'));\nconst OpenFileModal = lazy(() => import('components/OpenFileModal'));\nconst SignatureValidationModal = lazy(() => import('components/SignatureValidationModal'));\nconst CustomModal = lazy(() => import('components/CustomModal'));\nconst CreatePortfolioModal = lazy(() => import('components/CreatePortfolioModal'));\n\n// Panels\nconst NotesPanel = lazy(() => import('components/NotesPanel'));\nconst SearchPanel = lazy(() => import('components/SearchPanel'));\n\nconst OfficeEditorToolsHeader = lazy(() => import('components/Header/OfficeEditorToolsHeader'));\n\nconst LazyLoadComponents = {\n  AnnotationPopup,\n  FormFieldEditPopup,\n  TextPopup,\n  ContextMenuPopup,\n  InlineCommentingPopup,\n  RichTextPopup,\n  AudioPlaybackPopup,\n  DocumentCropPopup,\n  MeasurementOverlay,\n  ScaleOverlayContainer,\n  ViewControlsOverlay,\n  MenuOverlay,\n  ZoomOverlay,\n  PageManipulationOverlay,\n  AnnotationContentOverlay,\n  RotatePopup,\n  ThumbnailMoreOptionsPopup,\n  ThumbnailMoreOptionsPopupSmall,\n  ContentEditLinkModal,\n  SignatureModal,\n  ScaleModal,\n  PrintModal,\n  ErrorModal,\n  PasswordModal,\n  CreateStampModal,\n  PageReplacementModal,\n  LinkModal,\n  FilterAnnotModal,\n  PageRedactionModal,\n  CalibrationModal,\n  SettingsModal,\n  SaveModal,\n  InsertPageModal,\n  LoadingModal,\n  ProgressModal,\n  WarningModal,\n  Model3DModal,\n  ColorPickerModal,\n  OpenFileModal,\n  SignatureValidationModal,\n  CustomModal,\n  NotesPanel,\n  SearchPanel,\n  OfficeEditorToolsHeader,\n  CreatePortfolioModal\n};\n\nexport default LazyLoadComponents;\n","import LazyLoadWrapper from './LazyLoadWrapper';\n\nexport { default as LazyLoadComponents } from './LazyLoadComponents';\n\nexport default LazyLoadWrapper;\n","import { useEffect, useState } from 'react';\nimport throttle from 'lodash/throttle';\nimport { mapAnnotationToKey, annotationMapKeys } from 'constants/map';\nimport selectors from 'selectors';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport { isMeasurementTool } from 'helpers/getMeasurementTools';\nimport core from 'core';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\n\nconst { ToolNames } = window.Core.Tools;\n\nconst isMeasurementExcludeCalibration = (measurement) => !!isMeasurementTool(measurement) &&\n  ![measurement.name, measurement.ToolName].includes(ToolNames.CALIBRATION_MEASUREMENT);\n\nexport default function useOnMeasurementToolOrAnnotationSelected() {\n  const dispatch = useDispatch();\n\n  const [activeToolName] = useSelector((state) => [selectors.getActiveToolName(state)], shallowEqual);\n  const [annotations, setAnnotations] = useState([]);\n  const [selectedTool, setSelectedTool] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annots, action) => {\n      const selectedAnnotations = core.getSelectedAnnotations();\n      const measuredAnnotations = selectedAnnotations.filter(isMeasurementExcludeCalibration);\n      if (measuredAnnotations.length && action === 'selected') {\n        setAnnotations(measuredAnnotations);\n      } else if (action === 'deselected') {\n        setAnnotations([]);\n      }\n    };\n\n    const onScaleUpdated = (tool) => {\n      if (tool?.name === selectedTool?.name && tool?.Measure) {\n        setSelectedTool(tool);\n      }\n    };\n\n    const onAnnotationChanged = (changedAnnotations, action) => {\n      if (action === 'add' && isMeasurementExcludeCalibration(changedAnnotations[0])) {\n        setAnnotations([]);\n      }\n      if (action === 'delete') {\n        setAnnotations([]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    core.addEventListener('toolUpdated', onScaleUpdated);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('toolUpdated', onScaleUpdated);\n    };\n  }, []);\n\n  const onMouseMove = throttle(() => {\n    const tool = core.getTool(activeToolName);\n    if (isMeasurementToolWithInfo(tool) && !isSmallAnnotation(tool.annotation)) {\n      setAnnotations([tool.annotation]);\n    }\n  }, 100);\n\n  useEffect(() => {\n    core.addEventListener('mouseMove', onMouseMove);\n\n    return () => {\n      core.removeEventListener('mouseMove', onMouseMove);\n    };\n  }, [activeToolName]);\n\n  // This helps ensure we don't show an overlay for small annotations\n  const isSmallAnnotation = (annotation) => {\n    if (!annotation) {\n      return true;\n    }\n    const w = annotation.getWidth();\n    const h = annotation.getHeight();\n    const minSize = (annotation.getRectPadding() + 1) * 2;\n\n    return w <= minSize && h <= minSize;\n  };\n\n  const isMeasurementToolWithInfo = (tool) => {\n    return isMeasurementExcludeCalibration(tool) && tool.annotation && shouldShowInfo(tool.annotation);\n  };\n\n  const shouldShowInfo = (annotation) => {\n    const key = mapAnnotationToKey(annotation);\n\n    let showInfo;\n    if (\n      [\n        annotationMapKeys.PERIMETER_MEASUREMENT,\n        annotationMapKeys.AREA_MEASUREMENT,\n        annotationMapKeys.RECTANGULAR_AREA_MEASUREMENT,\n        annotationMapKeys.CLOUDY_RECTANGULAR_AREA_MEASUREMENT,\n        annotationMapKeys.ARC_MEASUREMENT,\n      ].includes(key)\n    ) {\n      // for polyline and polygon, there's no useful information we can show if it has no vertices or only one vertex.\n      showInfo = annotation.getPath().length > 1;\n    } else if ([annotationMapKeys.DISTANCE_MEASUREMENT, annotationMapKeys.ELLIPSE_MEASUREMENT].includes(key)) {\n      showInfo = true;\n    }\n\n    return showInfo;\n  };\n\n  useEffect(() => {\n    if (activeToolName) {\n      const tool = core.getTool(activeToolName);\n      if (tool?.Measure) {\n        setSelectedTool(tool);\n        setAnnotations([]);\n      } else {\n        setSelectedTool(null);\n      }\n    }\n  }, [activeToolName]);\n\n  useEffect(() => {\n    if (annotations.length || selectedTool) {\n      dispatch(actions.openElements([DataElements.SCALE_OVERLAY_CONTAINER]));\n    } else {\n      dispatch(actions.closeElements([DataElements.SCALE_OVERLAY_CONTAINER]));\n    }\n  }, [annotations, selectedTool]);\n\n  return { annotations, selectedTool };\n}\n","import useOnMeasurementToolOrAnnotationSelected from './useOnMeasurementToolOrAnnotationSelected';\n\nexport default useOnMeasurementToolOrAnnotationSelected;","import useOnCountMeasurementAnnotationSelected from './useOnCountMeasurementAnnotationSelected';\n\nexport default useOnCountMeasurementAnnotationSelected;","import { useEffect, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport { mapAnnotationToKey, mapToolNameToKey } from 'constants/map';\nimport usePrevious from 'hooks/usePrevious';\nimport { isMeasurementTool } from 'src/helpers/getMeasurementTools';\n\nexport default function useOnCountMeasurementAnnotationSelected() {\n  const dispatch = useDispatch();\n  const [\n    activeToolName,\n    customMeasurementOverlay,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.getCustomMeasurementOverlay(state),\n    ],\n    shallowEqual,\n  );\n\n  const prevActiveToolName = usePrevious(activeToolName);\n  const [annotation, setAnnotation] = useState(null);\n\n  const isCountMeasurementAnnotation = (annotation) => {\n    return ['countMeasurement'].includes(mapAnnotationToKey(annotation));\n  };\n\n  const isCountMeasurementTool = (toolName) => [\n    'countMeasurement'\n  ].includes(mapToolNameToKey(toolName));\n\n  const shouldShowCustomOverlay = (annotation) => {\n    return (\n      !isCountMeasurementAnnotation(annotation) &&\n      customMeasurementOverlay.some((overlay) => overlay.validate(annotation))\n    );\n  };\n\n  useEffect(() => {\n    if (prevActiveToolName !== activeToolName) {\n      const tool = core.getTool(activeToolName);\n      if (!isCountMeasurementTool(activeToolName) && isMeasurementTool(tool)) {\n        dispatch(actions.openElement(DataElements.MEASUREMENT_OVERLAY));\n      } else {\n        dispatch(actions.closeElement(DataElements.MEASUREMENT_OVERLAY));\n      }\n    }\n  }, [prevActiveToolName, activeToolName]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (\n        action === 'selected' &&\n        annotations.length === 1 &&\n        (isCountMeasurementAnnotation(annotations[0]) || shouldShowCustomOverlay(annotations[0]))\n      ) {\n        setAnnotation(annotations[0]);\n        dispatch(actions.openElement(DataElements.MEASUREMENT_OVERLAY));\n      } else if (\n        action === 'deselected' &&\n        !core.isAnnotationSelected(annotation)\n      ) {\n        dispatch(actions.closeElement(DataElements.MEASUREMENT_OVERLAY));\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => core.removeEventListener('annotationSelected', onAnnotationSelected);\n  }, [dispatch]);\n\n  return { annotation };\n}","import { useEffect, useRef } from 'react';\n\nexport default function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  const ref = useRef();\n  // Store current value in ref\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n  return ref.current;\n}","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { connect } from 'react-redux';\nimport Measure from 'react-measure';\nimport throttle from 'lodash/throttle';\nimport debounce from 'lodash/debounce';\nimport core from 'core';\nimport { isIE, isIE11 } from 'helpers/device';\nimport { updateContainerWidth, getClassNameInIE, handleWindowResize } from 'helpers/documentContainerHelper';\nimport loadDocument from 'helpers/loadDocument';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport { getStep } from 'helpers/zoom';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\nimport PageNavOverlay from 'components/PageNavOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport ReaderModeViewer from 'components/ReaderModeViewer';\nimport LazyLoadWrapper, { LazyLoadComponents } from 'components/LazyLoadWrapper';\nimport useOnMeasurementToolOrAnnotationSelected from 'hooks/useOnMeasurementToolOrAnnotationSelected';\nimport useOnCountMeasurementAnnotationSelected from 'hooks/useOnCountMeasurementAnnotationSelected';\n\nimport './DocumentContainer.scss';\nimport DataElements from 'src/constants/dataElement';\n\nconst PAGE_NAVIGATION_OVERLAY_FADEOUT = 4000;\n\nclass DocumentContainer extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelOpen: PropTypes.bool,\n    isRightPanelOpen: PropTypes.bool,\n    isSearchOverlayOpen: PropTypes.bool,\n    doesDocumentAutoLoad: PropTypes.bool,\n    zoom: PropTypes.number.isRequired,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    isHeaderOpen: PropTypes.bool,\n    dispatch: PropTypes.func.isRequired,\n    openElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    displayMode: PropTypes.string.isRequired,\n    leftPanelWidth: PropTypes.number,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    isMouseWheelZoomEnabled: PropTypes.bool.isRequired,\n    isReaderMode: PropTypes.bool,\n    setDocumentContainerWidth: PropTypes.func.isRequired,\n    setDocumentContainerHeight: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isRedactionPanelOpen: PropTypes.bool,\n    isTextEditingPanelOpen: PropTypes.bool,\n    isWv3dPropertiesPanelOpen: PropTypes.bool,\n    featureFlags: PropTypes.object,\n    bottomHeaderHeight: PropTypes.number,\n    activeDocumentViewerKey: PropTypes.number,\n    isLogoBarEnabled: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.document = React.createRef();\n    this.container = React.createRef();\n    this.wheelToNavigatePages = throttle(this.wheelToNavigatePages.bind(this), 300, { trailing: false });\n    this.wheelToZoom = throttle(this.wheelToZoom.bind(this), 30, { trailing: false });\n    this.handleResize = throttle(this.handleResize.bind(this), 200);\n    this.debouncedHidePageNavigationOverlay = debounce(\n      this.hidePageNavigationOverlay,\n      PAGE_NAVIGATION_OVERLAY_FADEOUT,\n    );\n    this.state = {\n      showNavOverlay: true,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (isIE11) {\n      updateContainerWidth(prevProps, this.props, this.container.current);\n    }\n  }\n\n  componentDidMount() {\n    touchEventManager.initialize(this.document.current, this.container.current);\n    core.setScrollViewElement(this.container.current);\n    core.setViewerElement(this.document.current);\n    this.props.closeElements([DataElements.MULTITABS_EMPTY_PAGE]);\n\n    if (isIE) {\n      window.addEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.addEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.addEventListener('wheel', this.onWheel, { passive: false });\n    this.updateContainerSize();\n    core.addEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n  }\n\n  componentWillUnmount() {\n    touchEventManager.terminate();\n    if (isIE) {\n      window.removeEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.removeEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.removeEventListener('wheel', this.onWheel, { passive: false });\n    core.removeEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n    this.props.closeElements([DataElements.MULTITABS_EMPTY_PAGE]);\n  }\n\n  preventDefault = (e) => e.preventDefault();\n\n  onDrop = (e) => {\n    e.preventDefault();\n\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(this.props.dispatch, files[0]);\n    }\n  };\n\n  handleWindowResize = () => {\n    handleWindowResize(this.props, this.container.current);\n  };\n\n  onWheel = (e) => {\n    const { isMouseWheelZoomEnabled } = this.props;\n    if (isMouseWheelZoomEnabled && (e.metaKey || e.ctrlKey)) {\n      e.preventDefault();\n      this.wheelToZoom(e);\n    } else if (\n      !core.isContinuousDisplayMode() &&\n      this.props.allowPageNavigation &&\n      !this.props.isReaderMode &&\n      core.isScrollableDisplayMode()\n    ) {\n      const { currentPage, totalPages } = this.props;\n      const { scrollTop, scrollHeight, clientHeight } = this.container.current;\n      const reachedTop = scrollTop === 0;\n      const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n\n      // depending on the track pad used (see this on MacBooks), deltaY can be between -1 and 1 when doing horizontal scrolling which cause page to change\n      const scrollingUp = e.deltaY < 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n      const scrollingDown = e.deltaY > 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n\n      const shouldGoUp = scrollingUp && reachedTop && currentPage > 1;\n      const shouldGoDown = scrollingDown && reachedBottom && currentPage < totalPages;\n\n      const shouldPreventParentScrolling =\n        scrollHeight === clientHeight &&\n        ((e.deltaY < 0 && currentPage > 1) || (e.deltaY > 0 && currentPage < totalPages));\n\n      if (shouldPreventParentScrolling) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      this.wheelToNavigatePages(e, shouldGoUp, shouldGoDown);\n      this.props.closeElements(['annotationPopup', 'textPopup', 'annotationNoteConnectorLine', 'inlineCommentPopup']);\n    }\n  };\n\n  wheelToNavigatePages = (e, shouldGoUp, shouldGoDown) => {\n    if (shouldGoUp) {\n      this.pageUp();\n    } else if (shouldGoDown) {\n      this.pageDown();\n    }\n\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  pageUp = () => {\n    const { currentPage } = this.props;\n    const { scrollHeight, clientHeight } = this.container.current;\n\n    setCurrentPage(currentPage - getNumberOfPagesToNavigate());\n    this.container.current.scrollTop = scrollHeight - clientHeight;\n  };\n\n  pageDown = () => {\n    const { currentPage } = this.props;\n\n    setCurrentPage(currentPage + getNumberOfPagesToNavigate());\n  };\n\n  wheelToZoom = (e) => {\n    const { zoom: currentZoomFactor, activeDocumentViewerKey } = this.props;\n    let newZoomFactor = currentZoomFactor;\n    if (e.deltaY < 0) {\n      newZoomFactor = Math.min(currentZoomFactor + getStep(currentZoomFactor), getMaxZoomLevel());\n    } else if (e.deltaY > 0) {\n      newZoomFactor = Math.max(currentZoomFactor - getStep(currentZoomFactor), getMinZoomLevel());\n    }\n    core.zoomToMouse(newZoomFactor, activeDocumentViewerKey, e);\n  };\n\n  handleScroll = () => {\n    this.props.closeElements(['annotationPopup', 'textPopup', 'inlineCommentPopup', 'annotationNoteConnectorLine']);\n\n    // Show overlay and then hide it, but the hide call is debounced\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  showAndFadeNavigationOverlay = () => {\n    this.showPageNavigationOverlay();\n    setTimeout(this.hidePageNavigationOverlay, PAGE_NAVIGATION_OVERLAY_FADEOUT);\n  };\n\n  hidePageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: false });\n  };\n\n  showPageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: true });\n  };\n\n  pageNavOnMouseEnter = () => {\n    this.showPageNavigationOverlay();\n  };\n\n  pageNavOnMouseLeave = () => {\n    this.hidePageNavigationOverlay();\n  };\n\n  getClassName = (props) => {\n    const { isSearchOverlayOpen } = props;\n\n    return classNames({\n      DocumentContainer: true,\n      'search-overlay': isSearchOverlayOpen,\n    });\n  };\n\n  handleResize() {\n    this.updateContainerSize();\n\n    if (!this.props.isReaderMode) {\n      // Skip when in reader mode, otherwise will cause error.\n      core.setScrollViewElement(this.container.current);\n      core.scrollViewUpdated();\n    }\n  }\n\n  updateContainerSize() {\n    const { clientWidth, clientHeight } = this.container.current;\n    this.props.setDocumentContainerWidth(clientWidth);\n    this.props.setDocumentContainerHeight(clientHeight);\n  }\n\n  onTransitionEnd(event) {\n    // I don't know if this is needed. But better safe than sorry.\n    const transitionProperiesToIgnore = ['background-color', 'opacity'];\n    if (!transitionProperiesToIgnore.includes(event.propertyName)) {\n      // We have a corner case where if you have 1st and 2nd page different size and you are in fit page mode\n      // if you have callout (freetext) annotation on second page. If you open notes panel then click annotation and click\n      // edit on it. This will cause our document container to re-render. We also have background-color transition\n      // set to all our elements (I believe for having smooth transition to dark mode, not sure though).\n      // All this is causing document to run fit page logic and zoom level of this second page jumps out.\n      // This is such a corner case, but reported by a customer, we decided do this check here and skip update if\n      // background color is the one that causes this transition.\n      // This effect is still happening in above case but if instead of clicking edit, user changes width of the notes panel\n      // It is currently expected behaviour\n      // Note Update after fading page nav was added:\n      // This also causes a doc container re-render as we fire the opacity transition when we fade the page nav\n      // we must skip updating the scrollViewUpdated call as well or it causes re-renders on docs with different page sizes\n      core.scrollViewUpdated();\n    }\n  }\n\n  render() {\n    const {\n      isMultiTabEmptyPageOpen,\n      isMobile,\n      documentContentContainerWidthStyle,\n      totalPages,\n      isInDesktopOnlyMode,\n      featureFlags,\n      bottomHeaderHeight,\n      leftHeaderWidth,\n      documentContainerLeftMargin,\n    } = this.props;\n\n    const style = {\n      width: documentContentContainerWidthStyle,\n      // we animate with margin-left. For some reason it looks nicer than transform.\n      // Using transform makes a clunky animation because the panels are using transform already.\n      marginLeft: `${documentContainerLeftMargin}px`,\n    };\n    const documentContainerClassName = isIE ? getClassNameInIE(this.props) : this.getClassName(this.props);\n    const documentClassName = classNames({\n      document: true,\n      hidden: this.props.isReaderMode,\n    });\n    const showPageNav = totalPages > 1;\n\n    const { customizableUI } = featureFlags;\n    const footerStyle = {\n      ...style,\n      left: customizableUI ? `${leftHeaderWidth}px` : undefined,\n      bottom: `${customizableUI ? bottomHeaderHeight : 0}px`,\n    };\n    // Calculating its height according to the existing horizontal modular headers\n    if (customizableUI) {\n      style['height'] = `calc(100% - ${bottomHeaderHeight}px)`;\n    }\n    return (\n      <div\n        style={style}\n        className={classNames({\n          'document-content-container': true,\n          'closed': isMultiTabEmptyPageOpen,\n        })}\n        onTransitionEnd={this.onTransitionEnd}\n      >\n        <Measure onResize={this.handleResize}>\n          {({ measureRef }) => (\n            <div className=\"measurement-container\" ref={measureRef}>\n              <div\n                className={documentContainerClassName}\n                ref={this.container}\n                data-element=\"documentContainer\"\n                onScroll={this.handleScroll}\n              >\n                {/* tabIndex=\"-1\" to keep document focused when in single page mode */}\n                <div className={documentClassName} ref={this.document} tabIndex=\"-1\" />\n              </div>\n              {this.props.isReaderMode && <ReaderModeViewer />}\n              <LazyLoadWrapper\n                Component={LazyLoadComponents.ScaleOverlayContainer}\n                dataElement={DataElements.SCALE_OVERLAY_CONTAINER}\n                onOpenHook={useOnMeasurementToolOrAnnotationSelected}\n              />\n              <LazyLoadWrapper\n                Component={LazyLoadComponents.MeasurementOverlay}\n                dataElement={DataElements.MEASUREMENT_OVERLAY}\n                onOpenHook={useOnCountMeasurementAnnotationSelected}\n              />\n              <div\n                className=\"footer\"\n                style={footerStyle}\n              >\n                {showPageNav && (\n                  <PageNavOverlay\n                    showNavOverlay={this.state.showNavOverlay}\n                    onMouseEnter={this.pageNavOnMouseEnter}\n                    onMouseLeave={this.pageNavOnMouseLeave}\n                    isLogoBarEnabled={this.props.isLogoBarEnabled}\n                  />\n                )}\n\n                {isMobile && !isInDesktopOnlyMode && <ToolsOverlay />}\n              </div>\n            </div>\n          )}\n        </Measure>\n        <div className=\"custom-container\" />\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  documentContentContainerWidthStyle: selectors.getDocumentContentContainerWidthStyle(state),\n  documentContainerLeftMargin: selectors.getDocumentContainerLeftMargin(state),\n  isRightPanelOpen: selectors.isElementOpen(state, 'searchPanel') || selectors.isElementOpen(state, 'notesPanel'),\n  isMultiTabEmptyPageOpen: selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0,\n  isSearchOverlayOpen: selectors.isElementOpen(state, DataElements.SEARCH_OVERLAY),\n  doesDocumentAutoLoad: selectors.doesDocumentAutoLoad(state),\n  zoom: selectors.getZoom(state),\n  currentPage: selectors.getCurrentPage(state),\n  isHeaderOpen: selectors.isElementOpen(state, 'header') && !selectors.isElementDisabled(state, 'header'),\n  displayMode: selectors.getDisplayMode(state),\n  totalPages: selectors.getTotalPages(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  isMouseWheelZoomEnabled: selectors.getEnableMouseWheelZoom(state),\n  isReaderMode: selectors.isReaderMode(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  isRedactionPanelOpen: selectors.isElementOpen(state, 'redactionPanel'),\n  isTextEditingPanelOpen: selectors.isElementOpen(state, 'textEditingPanel'),\n  isWv3dPropertiesPanelOpen: selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n  featureFlags: selectors.getFeatureFlags(state),\n  bottomHeaderHeight: selectors.getBottomHeadersHeight(state),\n  activeDocumentViewerKey: selectors.getActiveDocumentViewerKey(state),\n  isLogoBarEnabled: !selectors.isElementDisabled(state, DataElements.LOGO_BAR),\n  leftHeaderWidth: selectors.getLeftHeaderWidth(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  dispatch,\n  openElement: (dataElement) => dispatch(actions.openElement(dataElement)),\n  closeElements: (dataElements) => dispatch(actions.closeElements(dataElements)),\n  setDocumentContainerWidth: (width) => dispatch(actions.setDocumentContainerWidth(width)),\n  setDocumentContainerHeight: (height) => dispatch(actions.setDocumentContainerHeight(height)),\n});\n\nconst ConnectedDocumentContainer = connect(mapStateToProps, mapDispatchToProps)(DocumentContainer);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedDocumentContainer {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import DocumentContainer from './DocumentContainer';\n\nexport default DocumentContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport Element from 'components/Element';\n\nimport DataElements from 'constants/dataElement';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './LeftPanelTabs.scss';\n\nclass LeftPanelTabs extends React.Component {\n  static propTypes = {\n    isLeftPanelOpen: PropTypes.bool,\n    showPortfolio: PropTypes.bool,\n    activePanel: PropTypes.string.isRequired,\n    disabledCustomPanelTabs: PropTypes.array.isRequired,\n    customPanels: PropTypes.array.isRequired,\n    isLeftPanelTabsDisabled: PropTypes.bool,\n    setActiveLeftPanel: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n  };\n\n  isActive = (panel) => this.props.activePanel === panel;\n\n  render() {\n    const {\n      isLeftPanelOpen,\n      showPortfolio,\n      customPanels,\n      isLeftPanelTabsDisabled,\n      setActiveLeftPanel,\n      notesInLeftPanel,\n      openElement,\n    } = this.props;\n\n    if (isLeftPanelTabsDisabled) {\n      return null;\n    }\n\n    return (\n      <Element className=\"LeftPanelTabs\" dataElement=\"leftPanelTabs\">\n        {showPortfolio &&\n          <Button\n            isActive={this.isActive(DataElements.PORTFOLIO_PANEL)}\n            dataElement={DataElements.PORTFOLIO_PANEL_BUTTON}\n            img=\"icon-compare-change\"\n            onClick={() => setActiveLeftPanel(DataElements.PORTFOLIO_PANEL)}\n            title=\"portfolio.portfolioPanelTitle\"\n            tabIndex={isLeftPanelOpen ? 0 : -1}\n          />}\n        <Button\n          isActive={this.isActive('thumbnailsPanel')}\n          dataElement=\"thumbnailsPanelButton\"\n          img=\"icon-panel-thumbnail-line\"\n          onClick={() => setActiveLeftPanel('thumbnailsPanel')}\n          title=\"component.thumbnailsPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('outlinesPanel')}\n          dataElement=\"outlinesPanelButton\"\n          img=\"icon-panel-outlines\"\n          onClick={() => setActiveLeftPanel('outlinesPanel')}\n          title=\"component.outlinesPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('layersPanel')}\n          dataElement=\"layersPanelButton\"\n          img=\"ic_layers_24px\"\n          onClick={() => setActiveLeftPanel('layersPanel')}\n          title=\"component.layersPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('bookmarksPanel')}\n          dataElement=\"bookmarksPanelButton\"\n          img=\"ic_bookmarks_black_24px\"\n          onClick={() => setActiveLeftPanel('bookmarksPanel')}\n          title=\"component.bookmarksPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('signaturePanel')}\n          dataElement=\"signaturePanelButton\"\n          img=\"icon-tool-signature\"\n          onClick={() => setActiveLeftPanel('signaturePanel')}\n          title=\"component.signaturePanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('attachmentPanel')}\n          dataElement=\"attachmentPanelButton\"\n          img=\"ic_fileattachment_24px\"\n          onClick={() => setActiveLeftPanel('attachmentPanel')}\n          title=\"component.attachmentPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        {notesInLeftPanel &&\n          <Button\n            isActive={this.isActive(DataElements.NOTES_PANEL)}\n            dataElement=\"notesPanelButton\"\n            img=\"icon-header-chat-line\"\n            onClick={() => {\n              openElement(DataElements.NOTES_PANEL);\n              setActiveLeftPanel(DataElements.NOTES_PANEL);\n            }}\n            title=\"component.notesPanel\"\n          />}\n        {customPanels.map(({ panel, tab }, index) => <React.Fragment key={index}>\n          <Button\n            key={tab.dataElement || index}\n            isActive={this.isActive(panel.dataElement)}\n            dataElement={tab.dataElement}\n            img={tab.img}\n            onClick={() => setActiveLeftPanel(panel.dataElement)}\n            title={tab.title}\n          />\n          {index < customPanels.length - 1 && <div className=\"divider\" />}\n        </React.Fragment>,\n        )}\n      </Element>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  isLeftPanelOpen: selectors.isElementOpen(state, 'leftPanel'),\n  activePanel: selectors.getActiveLeftPanel(state),\n  customPanels: selectors.getCustomPanels(state),\n  disabledCustomPanelTabs: selectors.getDisabledCustomPanelTabs(state),\n  isLeftPanelTabsDisabled: selectors.isElementDisabled(state, 'leftPanelTabs'),\n  notesInLeftPanel: selectors.getNotesInLeftPanel(state),\n});\n\nconst mapDispatchToProps = {\n  setActiveLeftPanel: actions.setActiveLeftPanel,\n  openElement: actions.openElement,\n};\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(withTranslation()(LeftPanelTabs));\n","import LeftPanelTabs from './LeftPanelTabs';\n\nexport default LeftPanelTabs;","import React from 'react';\n\nconst PortfolioContext = React.createContext();\n\nexport default PortfolioContext;","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\nexport function getDecoratedComponent(instanceRef) {\n  var currentRef = instanceRef.current;\n\n  if (currentRef == null) {\n    return null;\n  } else if (currentRef.decoratedRef) {\n    // go through the private field in decorateHandler to avoid the invariant hit\n    return currentRef.decoratedRef.current;\n  } else {\n    return currentRef;\n  }\n}\nexport function isClassComponent(Component) {\n  return Component && Component.prototype && typeof Component.prototype.render === 'function';\n}\nexport function isRefForwardingComponent(C) {\n  var _item$$$typeof;\n\n  var item = C;\n  return (item === null || item === void 0 ? void 0 : (_item$$$typeof = item.$$typeof) === null || _item$$$typeof === void 0 ? void 0 : _item$$$typeof.toString()) === 'Symbol(react.forward_ref)';\n}\nexport function isRefable(C) {\n  return isClassComponent(C) || isRefForwardingComponent(C);\n}\nexport function checkDecoratorArguments(functionName, signature) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n      var arg = i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2];\n\n      if (arg && arg.prototype && arg.prototype.render) {\n        // eslint-disable-next-line no-console\n        console.error('You seem to be applying the arguments in the wrong order. ' + \"It should be \".concat(functionName, \"(\").concat(signature, \")(Component), not the other way around. \") + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n        return;\n      }\n    }\n  }\n}\nexport function isFunction(input) {\n  return typeof input === 'function';\n}\nexport function noop() {// noop\n}\n\nfunction isObjectLike(input) {\n  return _typeof(input) === 'object' && input !== null;\n}\n\nexport function isPlainObject(input) {\n  if (!isObjectLike(input)) {\n    return false;\n  }\n\n  if (Object.getPrototypeOf(input) === null) {\n    return true;\n  }\n\n  var proto = input;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(input) === proto;\n}\nexport function isValidType(type, allowArray) {\n  return typeof type === 'string' || _typeof(type) === 'symbol' || !!allowArray && Array.isArray(type) && type.every(function (t) {\n    return isValidType(t, false);\n  });\n}","function _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 _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 { isFunction, noop } from './utils';\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\n\nexport var Disposable = /*#__PURE__*/function () {\n  function Disposable(action) {\n    _classCallCheck(this, Disposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"action\", void 0);\n\n    this.action = isFunction(action) ? action : noop;\n  }\n  /** Performs the task of cleaning up resources. */\n\n\n  _createClass(Disposable, [{\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.action();\n        this.isDisposed = true;\n      }\n    }\n  }], [{\n    key: \"isDisposable\",\n    value:\n    /**\n     * Gets the disposable that does nothing when disposed.\n     */\n\n    /**\n     * Validates whether the given object is a disposable\n     * @param {Object} Object to test whether it has a dispose method\n     * @returns {Boolean} true if a disposable object, else false.\n     */\n    function isDisposable(d) {\n      return Boolean(d && isFunction(d.dispose));\n    }\n  }, {\n    key: \"_fixup\",\n    value: function _fixup(result) {\n      return Disposable.isDisposable(result) ? result : Disposable.empty;\n    }\n    /**\n     * Creates a disposable object that invokes the specified action when disposed.\n     * @param {Function} dispose Action to run during the first call to dispose.\n     * The action is guaranteed to be run at most once.\n     * @return {Disposable} The disposable object that runs the given action upon disposal.\n     */\n\n  }, {\n    key: \"create\",\n    value: function create(action) {\n      return new Disposable(action);\n    }\n  }]);\n\n  return Disposable;\n}();\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\n\n_defineProperty(Disposable, \"empty\", {\n  dispose: noop\n});\n\nexport var CompositeDisposable = /*#__PURE__*/function () {\n  function CompositeDisposable() {\n    _classCallCheck(this, CompositeDisposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"disposables\", void 0);\n\n    for (var _len = arguments.length, disposables = new Array(_len), _key = 0; _key < _len; _key++) {\n      disposables[_key] = arguments[_key];\n    }\n\n    this.disposables = disposables;\n  }\n  /**\n   * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n   * @param {Any} item Disposable to add.\n   */\n\n\n  _createClass(CompositeDisposable, [{\n    key: \"add\",\n    value: function add(item) {\n      if (this.isDisposed) {\n        item.dispose();\n      } else {\n        this.disposables.push(item);\n      }\n    }\n    /**\n     * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n     * @param {Any} item Disposable to remove.\n     * @returns {Boolean} true if found; false otherwise.\n     */\n\n  }, {\n    key: \"remove\",\n    value: function remove(item) {\n      var shouldDispose = false;\n\n      if (!this.isDisposed) {\n        var idx = this.disposables.indexOf(item);\n\n        if (idx !== -1) {\n          shouldDispose = true;\n          this.disposables.splice(idx, 1);\n          item.dispose();\n        }\n      }\n\n      return shouldDispose;\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group but\n     *  does not dispose the CompositeDisposable.\n     */\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      if (!this.isDisposed) {\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i = 0; _i < len; _i++) {\n          currentDisposables[_i].dispose();\n        }\n      }\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group.\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i2 = 0; _i2 < len; _i2++) {\n          currentDisposables[_i2].dispose();\n        }\n      }\n    }\n  }]);\n\n  return CompositeDisposable;\n}();\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\n\nexport var SerialDisposable = /*#__PURE__*/function () {\n  function SerialDisposable() {\n    _classCallCheck(this, SerialDisposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"current\", void 0);\n  }\n\n  _createClass(SerialDisposable, [{\n    key: \"getDisposable\",\n    value:\n    /**\n     * Gets the underlying disposable.\n     * @returns {Any} the underlying disposable.\n     */\n    function getDisposable() {\n      return this.current;\n    }\n  }, {\n    key: \"setDisposable\",\n    value: function setDisposable(value) {\n      var shouldDispose = this.isDisposed;\n\n      if (!shouldDispose) {\n        var old = this.current;\n        this.current = value;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n\n      if (shouldDispose && value) {\n        value.dispose();\n      }\n    }\n    /** Performs the task of cleaning up resources. */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var old = this.current;\n        this.current = undefined;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n    }\n  }]);\n\n  return SerialDisposable;\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\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 _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 _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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createRef, Component } from 'react';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../core';\nimport { isPlainObject } from './utils';\nimport { Disposable, CompositeDisposable, SerialDisposable } from './disposables';\nimport { isRefable } from './utils';\nimport hoistStatics from 'hoist-non-react-statics';\nexport function decorateHandler(_ref) {\n  var DecoratedComponent = _ref.DecoratedComponent,\n      createHandler = _ref.createHandler,\n      createMonitor = _ref.createMonitor,\n      createConnector = _ref.createConnector,\n      registerHandler = _ref.registerHandler,\n      containerDisplayName = _ref.containerDisplayName,\n      getType = _ref.getType,\n      collect = _ref.collect,\n      options = _ref.options;\n  var _options$arePropsEqua = options.arePropsEqual,\n      arePropsEqual = _options$arePropsEqua === void 0 ? shallowEqual : _options$arePropsEqua;\n  var Decorated = DecoratedComponent;\n  var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n  var DragDropContainer = /*#__PURE__*/function (_Component) {\n    _inherits(DragDropContainer, _Component);\n\n    var _super = _createSuper(DragDropContainer);\n\n    function DragDropContainer(props) {\n      var _this;\n\n      _classCallCheck(this, DragDropContainer);\n\n      _this = _super.call(this, props);\n\n      _defineProperty(_assertThisInitialized(_this), \"decoratedRef\", createRef());\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerId\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"manager\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerMonitor\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerConnector\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handler\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"disposable\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"currentType\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handleChange\", function () {\n        var nextState = _this.getCurrentState();\n\n        if (!shallowEqual(nextState, _this.state)) {\n          _this.setState(nextState);\n        }\n      });\n\n      _this.disposable = new SerialDisposable();\n\n      _this.receiveProps(props);\n\n      _this.dispose();\n\n      return _this;\n    }\n\n    _createClass(DragDropContainer, [{\n      key: \"getHandlerId\",\n      value: function getHandlerId() {\n        return this.handlerId;\n      }\n    }, {\n      key: \"getDecoratedComponentInstance\",\n      value: function getDecoratedComponentInstance() {\n        invariant(this.decoratedRef.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n        return this.decoratedRef.current;\n      }\n    }, {\n      key: \"shouldComponentUpdate\",\n      value: function shouldComponentUpdate(nextProps, nextState) {\n        return !arePropsEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.disposable = new SerialDisposable();\n        this.currentType = undefined;\n        this.receiveProps(this.props);\n        this.handleChange();\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        if (!arePropsEqual(this.props, prevProps)) {\n          this.receiveProps(this.props);\n          this.handleChange();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.dispose();\n      }\n    }, {\n      key: \"receiveProps\",\n      value: function receiveProps(props) {\n        if (!this.handler) {\n          return;\n        }\n\n        this.handler.receiveProps(props);\n        this.receiveType(getType(props));\n      }\n    }, {\n      key: \"receiveType\",\n      value: function receiveType(type) {\n        if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n          return;\n        }\n\n        if (type === this.currentType) {\n          return;\n        }\n\n        this.currentType = type;\n\n        var _registerHandler = registerHandler(type, this.handler, this.manager),\n            _registerHandler2 = _slicedToArray(_registerHandler, 2),\n            handlerId = _registerHandler2[0],\n            unregister = _registerHandler2[1];\n\n        this.handlerId = handlerId;\n        this.handlerMonitor.receiveHandlerId(handlerId);\n        this.handlerConnector.receiveHandlerId(handlerId);\n        var globalMonitor = this.manager.getMonitor();\n        var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, {\n          handlerIds: [handlerId]\n        });\n        this.disposable.setDisposable(new CompositeDisposable(new Disposable(unsubscribe), new Disposable(unregister)));\n      }\n    }, {\n      key: \"dispose\",\n      value: function dispose() {\n        this.disposable.dispose();\n\n        if (this.handlerConnector) {\n          this.handlerConnector.receiveHandlerId(null);\n        }\n      }\n    }, {\n      key: \"getCurrentState\",\n      value: function getCurrentState() {\n        if (!this.handlerConnector) {\n          return {};\n        }\n\n        var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor, this.props);\n\n        if (process.env.NODE_ENV !== 'production') {\n          invariant(isPlainObject(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n        }\n\n        return nextState;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        return _jsx(DndContext.Consumer, {\n          children: function children(_ref2) {\n            var dragDropManager = _ref2.dragDropManager;\n\n            _this2.receiveDragDropManager(dragDropManager);\n\n            if (typeof requestAnimationFrame !== 'undefined') {\n              requestAnimationFrame(function () {\n                var _this2$handlerConnect;\n\n                return (_this2$handlerConnect = _this2.handlerConnector) === null || _this2$handlerConnect === void 0 ? void 0 : _this2$handlerConnect.reconnect();\n              });\n            }\n\n            return _jsx(Decorated, Object.assign({}, _this2.props, _this2.getCurrentState(), {\n              // NOTE: if Decorated is a Function Component, decoratedRef will not be populated unless it's a refforwarding component.\n              ref: isRefable(Decorated) ? _this2.decoratedRef : null\n            }), void 0);\n          }\n        }, void 0);\n      }\n    }, {\n      key: \"receiveDragDropManager\",\n      value: function receiveDragDropManager(dragDropManager) {\n        if (this.manager !== undefined) {\n          return;\n        }\n\n        invariant(dragDropManager !== undefined, 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n        if (dragDropManager === undefined) {\n          return;\n        }\n\n        this.manager = dragDropManager;\n        this.handlerMonitor = createMonitor(dragDropManager);\n        this.handlerConnector = createConnector(dragDropManager.getBackend());\n        this.handler = createHandler(this.handlerMonitor, this.decoratedRef);\n      }\n    }]);\n\n    return DragDropContainer;\n  }(Component);\n\n  _defineProperty(DragDropContainer, \"DecoratedComponent\", DecoratedComponent);\n\n  _defineProperty(DragDropContainer, \"displayName\", \"\".concat(containerDisplayName, \"(\").concat(displayName, \")\"));\n\n  return hoistStatics(DragDropContainer, DecoratedComponent);\n}","function _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 _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 '@react-dnd/invariant';\nimport { isPlainObject, getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\n\nvar TargetImpl = /*#__PURE__*/function () {\n  function TargetImpl(spec, monitor, ref) {\n    _classCallCheck(this, TargetImpl);\n\n    _defineProperty(this, \"props\", null);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"ref\", void 0);\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(TargetImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"receiveMonitor\",\n    value: function receiveMonitor(monitor) {\n      this.monitor = monitor;\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      if (!this.spec.canDrop) {\n        return true;\n      }\n\n      return this.spec.canDrop(this.props, this.monitor);\n    }\n  }, {\n    key: \"hover\",\n    value: function hover() {\n      if (!this.spec.hover || !this.props) {\n        return;\n      }\n\n      this.spec.hover(this.props, this.monitor, getDecoratedComponent(this.ref));\n    }\n  }, {\n    key: \"drop\",\n    value: function drop() {\n      if (!this.spec.drop) {\n        return undefined;\n      }\n\n      var dropResult = this.spec.drop(this.props, this.monitor, this.ref.current);\n\n      if (process.env.NODE_ENV !== 'production') {\n        invariant(typeof dropResult === 'undefined' || isPlainObject(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', dropResult);\n      }\n\n      return dropResult;\n    }\n  }]);\n\n  return TargetImpl;\n}();\n\nexport function createTargetFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', ALLOWED_SPEC_METHODS.join(', '), key);\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', key, key, spec[key]);\n  });\n  return function createTarget(monitor, ref) {\n    return new TargetImpl(spec, monitor, ref);\n  };\n}","import { invariant } from '@react-dnd/invariant';\nimport { TargetConnector, DropTargetMonitorImpl, registerTarget } from '../internals';\nimport { isPlainObject, isValidType } from './utils';\nimport { checkDecoratorArguments } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { createTargetFactory } from './createTargetFactory';\n/**\n * @param type The accepted target type\n * @param spec The DropTarget specification\n * @param collect The props collector function\n * @param options Options\n */\n\nexport function DropTarget(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  checkDecoratorArguments('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    invariant(isValidType(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' + 'a string, an array of strings, or a function that returns either given ' + 'the current props. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', spec);\n  var createTarget = createTargetFactory(spec);\n  invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  return function decorateTarget(DecoratedComponent) {\n    return decorateHandler({\n      containerDisplayName: 'DropTarget',\n      createHandler: createTarget,\n      registerHandler: registerTarget,\n      createMonitor: function createMonitor(manager) {\n        return new DropTargetMonitorImpl(manager);\n      },\n      createConnector: function createConnector(backend) {\n        return new TargetConnector(backend);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}","function _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 _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 '@react-dnd/invariant';\nimport { isPlainObject, getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\n\nvar SourceImpl = /*#__PURE__*/function () {\n  function SourceImpl(spec, monitor, ref) {\n    var _this = this;\n\n    _classCallCheck(this, SourceImpl);\n\n    _defineProperty(this, \"props\", null);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"ref\", void 0);\n\n    _defineProperty(this, \"beginDrag\", function () {\n      if (!_this.props) {\n        return;\n      }\n\n      var item = _this.spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n\n      if (process.env.NODE_ENV !== 'production') {\n        invariant(isPlainObject(item), 'beginDrag() must return a plain object that represents the dragged item. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', item);\n      }\n\n      return item;\n    });\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(SourceImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.canDrag) {\n        return true;\n      }\n\n      return this.spec.canDrag(this.props, this.monitor);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(globalMonitor, sourceId) {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.isDragging) {\n        return sourceId === globalMonitor.getSourceId();\n      }\n\n      return this.spec.isDragging(this.props, this.monitor);\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {\n      if (!this.props) {\n        return;\n      }\n\n      if (!this.spec.endDrag) {\n        return;\n      }\n\n      this.spec.endDrag(this.props, this.monitor, getDecoratedComponent(this.ref));\n    }\n  }]);\n\n  return SourceImpl;\n}();\n\nexport function createSourceFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', ALLOWED_SPEC_METHODS.join(', '), key);\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  REQUIRED_SPEC_METHODS.forEach(function (key) {\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  return function createSource(monitor, ref) {\n    return new SourceImpl(spec, monitor, ref);\n  };\n}","import { invariant } from '@react-dnd/invariant';\nimport { registerSource, DragSourceMonitorImpl, SourceConnector } from '../internals';\nimport { checkDecoratorArguments, isPlainObject, isValidType } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { createSourceFactory } from './createSourceFactory';\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\n\nexport function DragSource(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  checkDecoratorArguments('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    invariant(isValidType(type), 'Expected \"type\" provided as the first argument to DragSource to be ' + 'a string, or a function that returns a string given the current props. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', spec);\n  var createSource = createSourceFactory(spec);\n  invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  return function decorateSource(DecoratedComponent) {\n    return decorateHandler({\n      containerDisplayName: 'DragSource',\n      createHandler: createSource,\n      registerHandler: registerSource,\n      createConnector: function createConnector(backend) {\n        return new SourceConnector(backend);\n      },\n      createMonitor: function createMonitor(manager) {\n        return new DragSourceMonitorImpl(manager);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}","export const ItemTypes = {\n  OUTLINE: 'outline',\n  PORTFOLIO: 'portfolio',\n};\n\nexport const DropLocation = {\n  ON_TARGET_HORIZONTAL_MIDPOINT: 'onTargetHorizontalMidPoint',\n  ABOVE_TARGET: 'aboveTarget',\n  BELOW_TARGET: 'belowTarget',\n  INITIAL: 'initial',\n};\n\nexport const BUFFER_ROOM = 8;","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\n\nimport './MoreOptionsContextMenuPopup.scss';\nimport Button from '../Button';\nimport getRootNode from 'helpers/getRootNode';\n\nconst propTypes = {\n  type: PropTypes.oneOf(['bookmark', 'outline', 'portfolio']).isRequired,\n  anchorButton: PropTypes.string.isRequired,\n  shouldDisplayDeleteButton: PropTypes.bool,\n  onClosePopup: PropTypes.func.isRequired,\n  onRenameClick: PropTypes.func,\n  onSetDestinationClick: PropTypes.func,\n  onDownloadClick: PropTypes.func,\n  onDeleteClick: PropTypes.func,\n  onOpenClick: PropTypes.func,\n};\n\nconst MoreOptionsContextMenuPopup = ({\n  type,\n  anchorButton,\n  shouldDisplayDeleteButton,\n  onClosePopup,\n  onRenameClick,\n  onSetDestinationClick,\n  onDownloadClick,\n  onDeleteClick,\n  onOpenClick,\n}) => {\n  const [t] = useTranslation();\n  const containerRef = useRef(null);\n  const [position, setPosition] = useState({ left: -100, right: 'auto', top: 'auto' });\n\n  const Portal = ({ children, position }) => {\n    const mount = getRootNode().querySelector('#outline-edit-popup-portal');\n    mount.style.position = 'absolute';\n    mount.style.top = position.top === 'auto' ? position.top : `${position.top}px`;\n    mount.style.left = position.left === 'auto' ? position.left : `${position.left}px`;\n    mount.style.right = position.right === 'auto' ? position.right : `${position.right}px`;\n    mount.style.zIndex = 999;\n\n    return createPortal(children, mount);\n  };\n\n  useEffect(() => {\n    const position = getOverlayPositionBasedOn(anchorButton, containerRef);\n    setPosition(position);\n  }, [anchorButton]);\n\n  const onClickOutside = useCallback((e) => {\n    if (!containerRef?.current.contains(e.target)) {\n      onClosePopup();\n    }\n  });\n\n  useOnClickOutside(containerRef, onClickOutside);\n\n  return (\n    <Portal position={position}>\n      <DataElementWrapper\n        ref={containerRef}\n        className=\"more-options-context-menu-popup\"\n        dataElement={`${type}EditPopup`}\n      >\n        {type === 'portfolio' && onOpenClick &&\n          <Button\n            className=\"option-button\"\n            dataElement={`${type}OpenFileButton`}\n            img=\"icon-portfolio-file\"\n            label={t('portfolio.openFile')}\n            ariaLabel={t('portfolio.openFile')}\n            onClick={(e) => {\n              e.stopPropagation();\n              onOpenClick();\n            }}\n          />\n        }\n        <Button\n          className=\"option-button\"\n          dataElement={`${type}RenameButton`}\n          img=\"ic_edit_page_24px\"\n          label={t('action.rename')}\n          ariaLabel={t('action.rename')}\n          onClick={(e) => {\n            e.stopPropagation();\n            onRenameClick();\n          }}\n        />\n        {type === 'outline' &&\n          <Button\n            className=\"option-button\"\n            dataElement={`${type}SetDestinationButton`}\n            img=\"icon-thumbtack\"\n            label={t('action.setDestination')}\n            ariaLabel={t('action.setDestination')}\n            onClick={(e) => {\n              e.stopPropagation();\n              onSetDestinationClick();\n            }}\n          />\n        }\n        {type === 'portfolio' &&\n          <Button\n            className=\"option-button\"\n            dataElement={`${type}DownloadButton`}\n            img=\"icon-download\"\n            label={t('action.download')}\n            ariaLabel={t('action.download')}\n            onClick={(e) => {\n              e.stopPropagation();\n              onDownloadClick();\n            }}\n          />\n        }\n        {shouldDisplayDeleteButton &&\n          <Button\n            className=\"option-button\"\n            dataElement={`${type}DeleteButton`}\n            img=\"icon-delete-line\"\n            label={t('action.delete')}\n            ariaLabel={t('action.delete')}\n            onClick={(e) => {\n              e.stopPropagation();\n              onDeleteClick();\n            }}\n          />\n        }\n      </DataElementWrapper>\n    </Portal>\n  );\n};\n\nMoreOptionsContextMenuPopup.propTypes = propTypes;\n\nexport default MoreOptionsContextMenuPopup;\n","import MoreOptionsContextMenuPopup from './MoreOptionsContextMenuPopup';\n\nexport default MoreOptionsContextMenuPopup;\n","import React, { useContext, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport { Input } from '@pdftron/webviewer-react-toolkit';\nimport Button from 'components/Button';\nimport Icon from 'components/Icon';\nimport PortfolioContext from 'components/PortfolioPanel/PortfolioContext';\nimport MoreOptionsContextMenuPopup from 'components/MoreOptionsContextMenuPopup';\nimport { isOpenableFile } from 'helpers/portfolio';\n\nimport './PortfolioItemContent.scss';\n\nconst propTypes = {\n  portfolioItem: PropTypes.object.isRequired,\n  isAdding: PropTypes.bool,\n  isPortfolioRenaming: PropTypes.bool,\n  setPortfolioRenaming: PropTypes.func,\n  setIsHovered: PropTypes.func,\n};\n\nconst PortfolioItemContent = ({\n  portfolioItem,\n  isAdding,\n  isPortfolioRenaming,\n  setPortfolioRenaming,\n  setIsHovered,\n}) => {\n  const {\n    setAddingNewFolder,\n    addNewFolder,\n    refreshPortfolio,\n    renamePortfolioItem,\n    removePortfolioItem,\n    openPortfolioItem,\n    downloadPortfolioItem,\n    isNameDuplicated,\n  } = useContext(PortfolioContext);\n\n  const { name, nameWithoutExtension, extension, id, isFolder } = portfolioItem;\n\n  const [t] = useTranslation();\n  const inputRef = useRef();\n  const [isDefault, setIsDefault] = useState(false);\n  const [portfolioEditName, setPortfolioEditName] = useState(nameWithoutExtension);\n  const [isContextMenuOpen, setContextMenuOpen] = useState(false);\n\n  const getIcon = () => {\n    return isFolder ? 'icon-folder' : 'icon-header-page-manipulation-page-layout-single-page-line';\n  };\n\n  const isRenameButtonDisabled = () => {\n    return !portfolioEditName || nameWithoutExtension === portfolioEditName || isNameDuplicated(`${portfolioEditName}.${extension}`, id);\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.stopPropagation();\n      if (isAdding) {\n        onAddFolder();\n      }\n      if (isPortfolioRenaming && !isRenameButtonDisabled()) {\n        onRenamePortfolioItem();\n      }\n    }\n    if (e.key === 'Escape') {\n      onCancelPortfolio();\n    }\n  };\n\n  const onAddFolder = () => {\n    addNewFolder(portfolioEditName.trim() === '' ? '' : portfolioEditName);\n  };\n\n  const onRenamePortfolioItem = () => {\n    setPortfolioRenaming(false);\n    renamePortfolioItem(id, `${portfolioEditName}.${extension}`);\n  };\n\n  const onCancelPortfolio = () => {\n    if (isPortfolioRenaming) {\n      setPortfolioRenaming(false);\n      setPortfolioEditName(nameWithoutExtension);\n    }\n    if (isAdding) {\n      setAddingNewFolder(false);\n    }\n    refreshPortfolio();\n  };\n\n  const duplicatedMessage = () => {\n    if (!isNameDuplicated(`${portfolioEditName}.${extension}`, id)) {\n      return '';\n    }\n    return isFolder ? t('portfolio.folderNameAlreadyExists') : t('portfolio.fileNameAlreadyExists');\n  };\n\n  useEffect(() => {\n    // when in adding or renaming mode, input is automatically focused\n    if (isAdding || isPortfolioRenaming) {\n      inputRef.current.focus();\n      inputRef.current.select();\n    }\n\n    setIsDefault(!isAdding && !isPortfolioRenaming);\n  }, [isAdding, isPortfolioRenaming]);\n\n  useEffect(() => {\n    if (!isAdding) {\n      setIsHovered(isContextMenuOpen);\n    }\n  }, [isContextMenuOpen]);\n\n  return (\n    <div className=\"bookmark-outline-label-row\">\n      {isAdding &&\n        <div className=\"bookmark-outline-label\">\n          {t('portfolio.portfolioNewFolder')}\n        </div>\n      }\n\n      {isDefault &&\n        <>\n          <span className=\"portfolio-item-icon\">\n            <Icon glyph={getIcon()} color={'inherit'} />\n          </span>\n          <div\n            className=\"bookmark-outline-text outline-text\"\n          >\n            {name}\n          </div>\n\n          <Button\n            className=\"bookmark-outline-more-button\"\n            dataElement={`portfolio-item-more-button-${id}`}\n            img=\"icon-tool-more\"\n            tabIndex={-1}\n            onClick={(e) => {\n              e.stopPropagation(); // click on this button won't select the file/folder\n              setContextMenuOpen(true);\n            }}\n          />\n\n          {isContextMenuOpen &&\n            <MoreOptionsContextMenuPopup\n              type={'portfolio'}\n              anchorButton={`portfolio-item-more-button-${id}`}\n              onClosePopup={() => setContextMenuOpen(false)}\n              onRenameClick={() => {\n                setContextMenuOpen(false);\n                setPortfolioRenaming(true);\n              }}\n              onDownloadClick={() => {\n                setContextMenuOpen(false);\n                downloadPortfolioItem(portfolioItem);\n              }}\n              shouldDisplayDeleteButton={true}\n              onDeleteClick={() => {\n                setContextMenuOpen(false);\n                removePortfolioItem(id);\n              }}\n              onOpenClick={isOpenableFile(extension) ? () => {\n                setContextMenuOpen(false);\n                openPortfolioItem(portfolioItem);\n              } : null}\n            />\n          }\n        </>\n      }\n\n      {(isAdding || isPortfolioRenaming) &&\n        <>\n          <Input\n            type=\"text\"\n            name=\"outline\"\n            ref={inputRef}\n            wrapperClassName=\"portfolio-input\"\n            placeholder={isFolder ? t('portfolio.portfolioFolderPlaceholder') : t('portfolio.portfolioFilePlaceholder')}\n            aria-label={t('action.name')}\n            value={portfolioEditName}\n            onKeyDown={handleKeyDown}\n            onChange={(e) => setPortfolioEditName(e.target.value)}\n            fillWidth\n            messageText={duplicatedMessage()}\n            message={isNameDuplicated(`${portfolioEditName}.${extension}`, id) ? 'error' : 'default'}\n          />\n\n          <div className=\"bookmark-outline-editing-controls\">\n            <Button\n              className=\"bookmark-outline-cancel-button\"\n              label={t('action.cancel')}\n              onClick={onCancelPortfolio}\n            />\n            {isAdding &&\n              <Button\n                className=\"bookmark-outline-save-button\"\n                label={t('action.add')}\n                isSubmitType={true}\n                onClick={onAddFolder}\n              />\n            }\n            {isPortfolioRenaming &&\n              <Button\n                className=\"bookmark-outline-save-button\"\n                label={t('action.save')}\n                isSubmitType={true}\n                disabled={isRenameButtonDisabled()}\n                onClick={onRenamePortfolioItem}\n              />\n            }\n          </div>\n        </>\n      }\n    </div>\n  );\n};\n\nPortfolioItemContent.propTypes = propTypes;\n\nexport default PortfolioItemContent;\n","import PortfolioItemContent from './PortfolioItemContent';\n\nexport default PortfolioItemContent;\n","import React, { forwardRef, useCallback, useContext, useImperativeHandle, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { ItemTypes, DropLocation, BUFFER_ROOM } from 'constants/dnd';\n\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport PortfolioContext from 'components/PortfolioPanel/PortfolioContext';\nimport PortfolioItemContent from 'components/PortfolioItemContent';\nimport { hasChildren } from 'helpers/portfolio';\n\nimport './PortfolioItem.scss';\n\nconst propTypes = {\n  portfolioItem: PropTypes.object.isRequired,\n  movePortfolioInward: PropTypes.func,\n  movePortfolioBeforeTarget: PropTypes.func,\n  movePortfolioAfterTarget: PropTypes.func,\n  connectDragSource: PropTypes.func,\n  connectDragPreview: PropTypes.func,\n  connectDropTarget: PropTypes.func,\n  isDragging: PropTypes.bool,\n  isDraggedUpwards: PropTypes.bool,\n  isDraggedDownwards: PropTypes.bool,\n};\n\nconst PortfolioItem = forwardRef(({\n  portfolioItem,\n  movePortfolioInward,\n  movePortfolioBeforeTarget,\n  movePortfolioAfterTarget,\n  connectDragSource,\n  connectDragPreview,\n  connectDropTarget,\n  isDragging,\n  isDraggedUpwards,\n  isDraggedDownwards,\n}, ref) => {\n  const {\n    setActivePortfolioItem,\n    isPortfolioItemActive,\n    isAddingNewFolder,\n    setAddingNewFolder,\n    openPortfolioItem,\n  } = useContext(PortfolioContext);\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [isRenaming, setIsRenaming] = useState(false);\n  const [isHovered, setHovered] = useState(false); // when the popup menu is open, the container will have a background\n  const isActive = isPortfolioItemActive(portfolioItem);\n\n  const elementRef = useRef(null);\n  connectDragSource(elementRef);\n  connectDragPreview(getEmptyImage(), { captureDraggingState: true });\n  connectDropTarget(elementRef);\n  const opacity = isDragging ? 0.5 : 1;\n  useImperativeHandle(ref, () => ({\n    getNode: () => elementRef.current,\n  }));\n\n  const togglePortfolioItem = useCallback(() => {\n    setIsExpanded((expand) => !expand);\n  }, []);\n\n  const onDoubleClick = useCallback(() => {\n    // If the item is in renaming-mode, double-clicking on it won't do anything\n    if (isRenaming) {\n      return;\n    }\n\n    openPortfolioItem(portfolioItem);\n    setActivePortfolioItem(portfolioItem.id);\n\n    // If the panel is in add-folder-mode, reset it when double-clicking on other items\n    if (isAddingNewFolder) {\n      setAddingNewFolder(false);\n    }\n  }, [isRenaming, portfolioItem, openPortfolioItem, setActivePortfolioItem, isAddingNewFolder, setAddingNewFolder]);\n\n  return (\n    <div\n      ref={(!isAddingNewFolder) ? elementRef : null}\n      className=\"outline-drag-container\"\n      style={{ opacity }}\n    >\n      <div className=\"outline-drag-line\" style={{ opacity: isDraggedUpwards ? 1 : 0 }} />\n      <DataElementWrapper\n        className={classNames({\n          'bookmark-outline-single-container': true,\n          'editing': isRenaming,\n          'default': !isRenaming,\n          'selected': isActive,\n          'hover': isHovered && !isActive,\n        })}\n        tabIndex={0}\n        onDoubleClick={onDoubleClick}\n      >\n        <div\n          className={classNames({\n            'outline-treeview-toggle': true,\n            expanded: isExpanded,\n          })}\n          style={{ marginLeft: portfolioItem.getNestedLevel() * 12 }}\n        >\n          {hasChildren(portfolioItem) &&\n            <Button\n              img=\"icon-chevron-right\"\n              tabIndex={0}\n              onClick={(e) => {\n                e.stopPropagation();\n                togglePortfolioItem();\n              }}\n            />\n          }\n        </div>\n\n        <PortfolioItemContent\n          portfolioItem={portfolioItem}\n          isPortfolioRenaming={isRenaming}\n          setPortfolioRenaming={setIsRenaming}\n          setIsHovered={setHovered}\n        />\n      </DataElementWrapper>\n\n      <div className=\"outline-drag-line\" style={{ opacity: isDraggedDownwards ? 1 : 0 }} />\n\n      {isExpanded &&\n        portfolioItem?.children.map((child) => (\n          <PortfolioItemNested\n            portfolioItem={child}\n            key={child.id}\n            movePortfolioInward={movePortfolioInward}\n            movePortfolioBeforeTarget={movePortfolioBeforeTarget}\n            movePortfolioAfterTarget={movePortfolioAfterTarget}\n          />\n        ))\n      }\n    </div>\n  );\n});\n\nPortfolioItem.propTypes = propTypes;\nPortfolioItem.displayName = 'PortfolioItem';\n\nconst PortfolioItemNested = DropTarget(\n  ItemTypes.PORTFOLIO,\n  {\n    hover(props, dropTargetMonitor, dropTargetContainer) {\n      if (!dropTargetContainer) {\n        return;\n      }\n\n      const dragObject = dropTargetMonitor.getItem();\n      if (!dragObject) {\n        return;\n      }\n\n      const { dragPortfolioItem, dragSourceNode } = dragObject;\n      const { portfolioItem: dropPortfolioItem } = props;\n\n      const dropTargetNode = dropTargetContainer.getNode();\n      if (!dragSourceNode || !dropTargetNode) {\n        return;\n      }\n\n      const portfolioItemIsBeingDraggedIntoDescendant = dragSourceNode.contains(dropTargetNode);\n      if (portfolioItemIsBeingDraggedIntoDescendant) {\n        dragObject.dropTargetNode = undefined;\n        dragObject.dropLocation = DropLocation.INITIAL;\n        return;\n      }\n\n      dragObject.dropTargetNode = dropTargetNode;\n      const dragId = dragPortfolioItem.id;\n      const hoverId = dropPortfolioItem.id;\n      // do nothing if drag object and drop object are the same item\n      // depends on the data structure, could have more conditions here\n      if (dragId === hoverId) {\n        return;\n      }\n\n      const dropTargetBoundingRect = dropTargetNode.getBoundingClientRect();\n      const dropTargetVerticalMiddlePoint = (dropTargetBoundingRect.height / 2) + dropTargetBoundingRect.top;\n      const clientOffset = dropTargetMonitor.getClientOffset();\n      const dropTargetClientY = clientOffset.y;\n      switch (true) {\n        case dropPortfolioItem.isFolder && dropTargetClientY <= dropTargetVerticalMiddlePoint + BUFFER_ROOM && dropTargetClientY >= dropTargetVerticalMiddlePoint - BUFFER_ROOM:\n          dragObject.dropLocation = DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT;\n          if (dropTargetMonitor.isOver({ shallow: true })) {\n            dropTargetNode.classList.add('isNesting');\n          }\n          setTimeout(() => {\n            if (dragObject?.dropTargetNode !== dropTargetNode) {\n              dropTargetNode.classList.remove('isNesting');\n            }\n          }, 100);\n          break;\n        case dropTargetClientY > dropTargetVerticalMiddlePoint:\n          dragObject.dropLocation = DropLocation.BELOW_TARGET;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n        case dropTargetClientY < dropTargetVerticalMiddlePoint:\n          dragObject.dropLocation = DropLocation.ABOVE_TARGET;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n        default:\n          dragObject.dropLocation = DropLocation.INITIAL;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n      }\n    },\n    drop(props, dropTargetMonitor, dropTargetContainer) {\n      if (!dropTargetContainer) {\n        return;\n      }\n      const dragObject = dropTargetMonitor.getItem();\n      const { dragPortfolioItem, dropTargetNode } = dragObject;\n      const { portfolioItem: dropPortfolioItem, movePortfolioInward, movePortfolioBeforeTarget, movePortfolioAfterTarget } = props;\n\n      if (!dropTargetNode) {\n        return;\n      }\n\n      switch (dragObject.dropLocation) {\n        case DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT:\n          movePortfolioInward(dragPortfolioItem, dropPortfolioItem);\n          break;\n        case DropLocation.ABOVE_TARGET:\n          movePortfolioBeforeTarget(dragPortfolioItem.id, dropPortfolioItem.id);\n          break;\n        case DropLocation.BELOW_TARGET:\n          movePortfolioAfterTarget(dragPortfolioItem.id, dropPortfolioItem.id);\n          break;\n        default:\n          break;\n      }\n      dropTargetNode.classList.remove('isNesting');\n      dragObject.dropLocation = DropLocation.INITIAL;\n    }\n  },\n  (connect, dropTargetState) => ({\n    connectDropTarget: connect.dropTarget(),\n    isDraggedUpwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.ABOVE_TARGET),\n    isDraggedDownwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.BELOW_TARGET),\n  })\n)(DragSource(\n  ItemTypes.PORTFOLIO,\n  {\n    beginDrag: (props, dragSourceMonitor, dragSourceContainer) => ({\n      sourceId: dragSourceMonitor.sourceId,\n      dragPortfolioItem: props.portfolioItem,\n      dragSourceNode: dragSourceContainer.getNode(),\n      dropLocation: DropLocation.INITIAL,\n    }),\n    canDrag: () => true,\n  },\n  (connect, dragSourceState) => ({\n    connectDragSource: connect.dragSource(),\n    connectDragPreview: connect.dragPreview(),\n    isDragging: dragSourceState.isDragging(),\n  })\n)(PortfolioItem));\n\nPortfolioItemNested.propTypes = propTypes;\n\nexport default PortfolioItemNested;\n","import PortfolioItem from './PortfolioItem';\n\nexport default PortfolioItem;\n","import React from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport { ItemTypes } from 'constants/dnd';\n\nconst layerStyles = {\n  position: 'fixed',\n  pointerEvents: 'none',\n  zIndex: 99999,\n  left: 0,\n  top: 0,\n  width: '100%',\n  height: '100%'\n};\n\nconst getItemStyles = (initialOffset, currentOffset) => {\n  if (!initialOffset || !currentOffset) {\n    return {\n      display: 'none'\n    };\n  }\n  const { x, y } = currentOffset;\n  const transform = `translate(calc(${x}px - 50%), calc(${y}px - 100%))`;\n  return {\n    transform,\n    WebkitTransform: transform,\n  };\n};\n\nexport const PortfolioDragLayer = () => {\n  const {\n    itemType,\n    item,\n    isDragging,\n    initialOffset,\n    currentOffset\n  } = useDragLayer((dragLayerState) => ({\n    itemType: dragLayerState.getItemType(),\n    item: dragLayerState.getItem(),\n    isDragging: dragLayerState.isDragging(),\n    initialOffset: dragLayerState.getInitialSourceClientOffset(),\n    currentOffset: dragLayerState.getClientOffset(),\n  }));\n\n  const renderDragItemPreview = () => {\n    if (!item) {\n      return null;\n    }\n\n    const { dragPortfolioItem } = item;\n\n    if (itemType === ItemTypes.PORTFOLIO) {\n      return (\n        <>\n          {dragPortfolioItem.name}\n        </>\n      );\n    }\n\n    return null;\n  };\n\n  if (!isDragging) {\n    return null;\n  }\n\n  return (\n    <div style={layerStyles}>\n      <div\n        className=\"bookmark-outline-single-container preview\"\n        style={getItemStyles(initialOffset, currentOffset)}\n      >\n        {renderDragItemPreview()}\n      </div>\n    </div>\n  );\n};\n","import React, { useState, useRef, useCallback } from 'react';\nimport { shallowEqual, useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { DndProvider } from 'react-dnd';\nimport TouchBackEnd from 'react-dnd-touch-backend';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nimport Button from 'components/Button';\nimport PortfolioContext from './PortfolioContext';\nimport PortfolioItem from 'components/PortfolioItem';\nimport PortfolioItemContent from 'components/PortfolioItemContent';\nimport { PortfolioDragLayer } from './PortfolioDragLayer';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport DataElements from 'constants/dataElement';\nimport { DropLocation as MoveDirection } from 'constants/dnd';\nimport { isMobileDevice } from 'helpers/device';\nimport { enableMultiTab } from 'helpers/TabManager';\nimport { addFile, deletePortfolioFile, downloadPortfolioFile, getPortfolioFiles, isOpenableFile, renamePortfolioFile, reorderPortfolioFile } from 'helpers/portfolio';\nimport core from 'core';\n\nimport '../../constants/bookmarksOutlinesShared.scss';\nimport './PortfolioPanel.scss';\n\nconst PortfolioPanel = () => {\n  const [\n    isDisabled,\n    tabManager,\n    portfolioFiles,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, DataElements.PORTFOLIO_PANEL),\n      selectors.getTabManager(state),\n      selectors.getPortfolio(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  const [activePortfolioItem, setActivePortfolioItem] = useState(null);\n  const [isAddingNewFolder, setAddingNewFolder] = useState(false);\n\n  const fileInputRef = useRef(null);\n\n  const onAddFile = () => {\n    fileInputRef?.current?.click();\n  };\n\n  const addNewFile = async (e) => {\n    const files = e.target.files;\n    if (files.length === 1) {\n      const file = files[0];\n      const isNameConflicted = portfolioFiles.some((item) => item.name === file.name);\n      if (isNameConflicted) {\n        const message = t('portfolio.fileAlreadyExistsMessage', { fileName: file.name });\n        const title = t('portfolio.fileAlreadyExists');\n        const confirmBtnText = t('portfolio.reselect');\n        const warning = {\n          message,\n          title,\n          confirmBtnText,\n          onConfirm: () => onAddFile()\n        };\n        dispatch(actions.showWarningMessage(warning));\n      } else {\n        const doc = core.getDocument();\n        if (doc) {\n          const pdfDoc = await doc.getPDFDoc();\n          if (pdfDoc) {\n            await addFile(pdfDoc, file);\n            refreshPortfolio();\n          }\n        }\n      }\n    }\n  };\n\n  const addNewFolder = (name) => {\n    if (!name) {\n      name = t('message.untitled');\n    }\n    // TODO: add new folder to portfolio here\n    refreshPortfolio();\n  };\n\n  const renamePortfolioItem = async (id, newName) => {\n    await renamePortfolioFile(id, newName);\n    refreshPortfolio();\n  };\n\n  const refreshPortfolio = async () => {\n    dispatch(actions.setPortfolio(await getPortfolioFiles()));\n    setAddingNewFolder(false);\n  };\n\n  const removePortfolioItem = (id) => {\n    const fileToRemove = portfolioFiles.find((file) => file.id === id);\n    const message = t('portfolio.deletePortfolio', { fileName: fileToRemove.name });\n    const title = t('action.delete');\n    const confirmBtnText = t('action.delete');\n    const warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm: async () => {\n        await deletePortfolioFile(id);\n        refreshPortfolio();\n      },\n    };\n    dispatch(actions.showWarningMessage(warning));\n  };\n\n  const openPortfolioItem = (portfolioItem) => {\n    if (isOpenableFile(portfolioItem.extension)) {\n      dispatch(enableMultiTab());\n      dispatch(actions.addPortfolioTab(portfolioItem));\n    }\n  };\n\n  const isNameDuplicated = (newName, id) => {\n    const otherFiles = portfolioFiles.filter((file) => file.id !== id);\n    return otherFiles.some((file) => file.name === newName);\n  };\n\n  const downloadPortfolioItem = async (portfolioItem) => {\n    dispatch(actions.openElement(DataElements.LOADING_MODAL));\n    await downloadPortfolioFile(portfolioItem);\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n  };\n\n  const movePortfolioInward = (dragItem, dropItem) => {\n    /* eslint-disable no-console */\n    // no-console function is empty for now\n    console.log(dragItem.name, 'Inward', dropItem.name);\n    /* eslint-enable no-console */\n  };\n\n  const moveFileInArray = async (portfolioFiles, dragItemId, dropItemId, moveDirection) => {\n    // clone to another array to avoid modifying portfolioFiles\n    const fileArray = [...portfolioFiles];\n    const fromIndex = fileArray.findIndex((file) => file.id === dragItemId);\n    const dropItemIndex = fileArray.findIndex((file) => file.id === dropItemId);\n    let moveToIndex = dropItemIndex;\n    // If move 1 to before 3, we want to delete 1 and re-insert at index (3-1=2)\n    if (moveDirection === MoveDirection.ABOVE_TARGET && fromIndex < dropItemIndex) {\n      moveToIndex = dropItemIndex - 1;\n    }\n    // If move 3 to after 1, we want to delete 3 and re-insert at index (1+1=2)\n    if (moveDirection === MoveDirection.BELOW_TARGET && fromIndex > dropItemIndex) {\n      moveToIndex = dropItemIndex + 1;\n    }\n\n    // Move elements in an array based on index\n    fileArray.splice(moveToIndex, 0, fileArray.splice(fromIndex, 1)[0]);\n    for (const [index, file] of fileArray.entries()) {\n      if (file.order !== index) {\n        await reorderPortfolioFile(file.id, index);\n      }\n    }\n  };\n\n  const movePortfolioBeforeTarget = useCallback(async (dragItemId, dropItemId) => {\n    await moveFileInArray(portfolioFiles, dragItemId, dropItemId, MoveDirection.ABOVE_TARGET);\n    refreshPortfolio();\n  }, [portfolioFiles]);\n\n  const movePortfolioAfterTarget = useCallback(async (dragItemId, dropItemId) => {\n    await moveFileInArray(portfolioFiles, dragItemId, dropItemId, MoveDirection.BELOW_TARGET);\n    refreshPortfolio();\n  }, [portfolioFiles]);\n\n  return isDisabled ? null : (\n    <DataElementWrapper\n      className=\"Panel PortfolioPanel bookmark-outline-panel\"\n      dataElement={DataElements.PORTFOLIO_PANEL}\n    >\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">\n          {t('portfolio.portfolioPanelTitle')}\n        </div>\n\n        <div className=\"portfolio-panel-control\">\n          <Button\n            className=\"portfolio-panel-control-button\"\n            dataElement={DataElements.PORTFOLIO_ADD_FILE}\n            img=\"icon-add-file\"\n            title={t('portfolio.addFile')}\n            disabled={isAddingNewFolder}\n            onClick={onAddFile}\n          />\n\n          <input\n            ref={fileInputRef}\n            style={{ display: 'none' }}\n            type=\"file\"\n            onChange={(event) => {\n              addNewFile(event);\n              event.target.value = null;\n            }}\n          />\n        </div>\n      </div>\n\n      <PortfolioContext.Provider\n        value={{\n          activePortfolioItem,\n          setActivePortfolioItem,\n          isPortfolioItemActive: (portfolioItem) => portfolioItem?.id === activePortfolioItem,\n          isAddingNewFolder,\n          setAddingNewFolder,\n          addNewFolder,\n          renamePortfolioItem,\n          removePortfolioItem,\n          openPortfolioItem,\n          downloadPortfolioItem,\n          refreshPortfolio,\n          isNameDuplicated,\n          tabManager,\n        }}\n      >\n        <DndProvider backend={isMobileDevice ? TouchBackEnd : HTML5Backend}>\n          <PortfolioDragLayer />\n\n          <div className=\"bookmark-outline-row\">\n            {portfolioFiles.map((item) => (\n              <PortfolioItem\n                key={item.id}\n                portfolioItem={item}\n                movePortfolioInward={movePortfolioInward}\n                movePortfolioBeforeTarget={movePortfolioBeforeTarget}\n                movePortfolioAfterTarget={movePortfolioAfterTarget}\n              />\n            ))}\n\n            {isAddingNewFolder && (\n              <DataElementWrapper className=\"bookmark-outline-single-container editing\">\n                <PortfolioItemContent\n                  name={''}\n                  id={'0'}\n                  isFolder\n                  isAdding\n                />\n              </DataElementWrapper>\n            )}\n          </div>\n        </DndProvider>\n      </PortfolioContext.Provider>\n    </DataElementWrapper>\n  );\n};\n\nexport default PortfolioPanel;\n","import PortfolioPanel from './PortfolioPanel';\n\nexport default PortfolioPanel;\n","import React from 'react';\nimport ToggleElementButton from '../ToggleElementButton';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\n\nfunction PageManipulationOverlayButtonContainer(props) {\n  const { className, pageIndex } = props;\n\n  const dispatch = useDispatch();\n  const selectedPageIndexes = useSelector((state) => selectors.getSelectedThumbnailPageIndexes(state));\n\n  const onClickPageManipulationOverlayButton = () => {\n    if (selectedPageIndexes.indexOf(pageIndex) === -1) {\n      dispatch(actions.setSelectedPageThumbnails([pageIndex]));\n    }\n  };\n\n  return (\n    <div\n      className={className}\n      onClick={onClickPageManipulationOverlayButton}\n    >\n      <ToggleElementButton\n        dataElement={DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON}\n        element={DataElements.PAGE_MANIPULATION_OVERLAY}\n        img=\"icon-tool-more\"\n        title=\"option.thumbnailPanel.moreOptions\"\n      />\n    </div>\n  );\n}\n\nexport default PageManipulationOverlayButtonContainer;","import PageManipulationOverlayButton from './PageManipulationOverlayButtonContainer';\n\nexport default PageManipulationOverlayButton;","import React from 'react';\nimport { useDispatch, shallowEqual, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { deletePages, rotateClockwise, rotateCounterClockwise } from 'helpers/pageManipulationFunctions';\nimport Button from 'components/Button';\nimport selectors from 'selectors';\nimport './ThumbnailControls.scss';\nimport PageManipulationOverlayButton from 'components/PageManipulationOverlayButton';\nimport { workerTypes } from 'constants/types';\nimport core from 'src/core';\nimport DataElements from 'constants/dataElement';\nimport { useTranslation } from 'react-i18next';\n\nconst propTypes = {\n  index: PropTypes.number.isRequired,\n};\n\nconst dataElementName = 'thumbnailControl';\n\nconst ThumbnailControls = ({ index }) => {\n  const { t } = useTranslation();\n  const [isElementDisabled] = useSelector((state) => [selectors.isElementDisabled(state, dataElementName)]);\n  const [isMoreOptionDisabled] = useSelector((state) => [selectors.isElementDisabled(state, DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON)]);\n  const [isPageDeletionConfirmationModalEnabled, selectedIndexes] = useSelector((state) => [\n    selectors.pageDeletionConfirmationModalEnabled(state),\n    selectors.getSelectedThumbnailPageIndexes(state),\n  ]);\n  const dispatch = useDispatch();\n\n  const [\n    currentPage,\n    pageThumbnailControlMenuItems,\n  ] = useSelector((state) => [\n    selectors.getCurrentPage(state),\n    selectors.getThumbnailControlMenuItems(state),\n  ], shallowEqual);\n\n  let pageNumbers = selectedIndexes.length > 0 ? selectedIndexes.map((i) => i + 1) : [index + 1];\n\n  const isCurrentPageInTheSelection = pageNumbers.includes(currentPage);\n\n  if (!isCurrentPageInTheSelection) {\n    pageNumbers = [currentPage];\n  }\n\n  const document = core.getDocument();\n  const documentType = document?.type;\n  const isXod = documentType === workerTypes.XOD;\n  const isOffice = documentType === workerTypes.OFFICE || documentType === workerTypes.LEGACY_OFFICE;\n\n  const BUTTONS_MAP = {\n    'thumbRotateClockwise': <Button\n      className=\"rotate-button\"\n      img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n      onClick={() => rotateClockwise(pageNumbers)}\n      title=\"option.thumbnailPanel.rotatePageClockwise\"\n      dataElement=\"thumbRotateClockwise\"\n    />,\n    'thumbRotateCounterClockwise': <Button\n      img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n      onClick={() => rotateCounterClockwise(pageNumbers)}\n      title=\"option.thumbnailPanel.rotatePageCounterClockwise\"\n      dataElement=\"thumbRotateCounterClockwise\"\n    />,\n    'thumbDelete': <Button\n      className=\"delete-button\"\n      img=\"icon-delete-line\"\n      onClick={() => deletePages(pageNumbers, dispatch, isPageDeletionConfirmationModalEnabled)}\n      title=\"option.thumbnailPanel.delete\"\n      dataElement=\"thumbDelete\"\n      onClickAnnouncement={`${t('action.delete')} ${t('action.modal')} ${t('action.isOpen')}`}\n    />,\n  };\n  let isCustomized = false;\n  const occurredButtons = [];\n  const buttons = pageThumbnailControlMenuItems.map((item) => {\n    const { dataElement } = item;\n    const key = dataElement;\n    let component = BUTTONS_MAP[dataElement];\n    if (occurredButtons.indexOf(dataElement) > -1) {\n      return null;\n    }\n    occurredButtons.push(dataElement);\n\n    /* Example button object:\n    {\n      title: 'Alert me',\n      img: '/path-to-image',\n      onClick: (selectedPageNumbers) => alert(``),\n      dataElement: 'alertMeDataElement',\n    } */\n    if (!component) {\n      isCustomized = true;\n      const { img, onClick, title } = item;\n      component = <Button\n        className={`${dataElement}-button`}\n        img={img}\n        onClick={() => onClick(currentPage)}\n        title={title}\n        dataElement={dataElement}\n      />;\n    }\n\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n\n  if (isElementDisabled) {\n    return null;\n  } if (isXod || isOffice || document?.isWebViewerServerDocument()) {\n    return (\n      <div className=\"thumbnailControls-overlay\" data-element={dataElementName}\n        style={{ display: 'flex' }}\n      >\n        <Button\n          img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n          onClick={() => rotateCounterClockwise(pageNumbers)}\n          title=\"option.thumbnailPanel.rotatePageCounterClockwise\"\n          dataElement=\"thumbRotateCounterClockwise\"\n        />\n        <Button\n          img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n          onClick={() => rotateClockwise(pageNumbers)}\n          title=\"option.thumbnailPanel.rotatePageClockwise\"\n          dataElement=\"thumbRotateClockwise\"\n        />\n      </div>\n    );\n  }\n  return (\n    <div className={classNames({\n      'thumbnailControls-overlay': true,\n      'custom-buttons': isCustomized,\n    })}\n    data-element={dataElementName}\n    >\n      {buttons}\n      {\n        (isMoreOptionDisabled) ? null : <PageManipulationOverlayButton\n          className={'more-options'}\n          pageIndex={index}\n        />\n      }\n\n    </div>\n  );\n};\n\n\nThumbnailControls.propTypes = propTypes;\n\nexport default ThumbnailControls;\n","import ThumbnailControls from './ThumbnailControls';\n\nexport default ThumbnailControls;\n","export default {\n  THUMBNAIL: 'thumbnail',\n  CHECKBOX: 'checkbox',\n};\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport core from 'core';\nimport ThumbnailControls from 'components/ThumbnailControls';\nimport thumbnailSelectionModes from 'constants/thumbnailSelectionModes';\n\nimport './Thumbnail.scss';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport getRootNode from 'helpers/getRootNode';\n\n// adds a delay in ms so thumbs that are only on the screen briefly are not loaded.\nconst THUMBNAIL_LOAD_DELAY = 50;\n\nconst Thumbnail = ({\n  index,\n  isSelected,\n  updateAnnotations,\n  shiftKeyThumbnailPivotIndex,\n  onFinishLoading,\n  onLoad,\n  onRemove = () => { },\n  onDragStart,\n  onDragOver,\n  isDraggable,\n  shouldShowControls,\n  thumbnailSize,\n  currentPage,\n  pageLabels = [],\n  selectedPageIndexes,\n  isThumbnailMultiselectEnabled,\n  isReaderModeOrReadOnly,\n  dispatch,\n  actions,\n  isMobile,\n  canLoad,\n  onCancel,\n  isThumbnailSelectingPages,\n  thumbnailSelectionMode,\n  activeDocumentViewerKey,\n  panelSelector\n}) => {\n  const thumbSize = thumbnailSize ? Number(thumbnailSize) : 150;\n\n  const [dimensions, setDimensions] = useState({ width: thumbSize, height: thumbSize });\n  // To ensure checkmark loads after thumbnail\n  const [loaded, setLoaded] = useState(false);\n\n  let loadTimeout = null;\n\n  const loadThumbnailAsync = () => {\n    loadTimeout = setTimeout(() => {\n      const thumbnailContainer = getRootNode().querySelector(`.ThumbnailsPanel.${panelSelector} #pageThumb${index}`);\n\n      const pageNum = index + 1;\n      const viewerRotation = core.getRotation(pageNum);\n\n      const doc = core.getDocument(activeDocumentViewerKey);\n      // Possible race condition can happen where we try to render a thumbnail for a page that has\n      // been deleted. Prevent that by checking if pageInfo exists\n\n      if (doc && doc.getPageInfo(pageNum)) {\n        const id = doc.loadCanvas({\n          pageNumber: pageNum,\n          width: thumbSize,\n          height: thumbSize,\n          drawComplete: async (thumb) => {\n            const thumbnailContainer = getRootNode().querySelector(`.ThumbnailsPanel.${panelSelector} #pageThumb${index}`);\n            if (thumbnailContainer) {\n              const childElement = thumbnailContainer.querySelector('.page-image');\n              if (childElement) {\n                thumbnailContainer.removeChild(childElement);\n              }\n\n              thumb.className = 'page-image';\n\n              const ratio = Math.min(thumbSize / thumb.width, thumbSize / thumb.height);\n              thumb.style.width = `${thumb.width * ratio}px`;\n              thumb.style.height = `${thumb.height * ratio}px`;\n              setDimensions({ width: Number(thumb.width), height: Number(thumb.height) });\n\n              if (Math.abs(viewerRotation)) {\n                const cssTransform = `rotate(${viewerRotation * 90}deg) translate(-50%,-50%)`;\n                const cssTransformOrigin = 'top left';\n                thumb.style['transform'] = cssTransform;\n                thumb.style['transform-origin'] = cssTransformOrigin;\n                thumb.style['ms-transform'] = cssTransform;\n                thumb.style['ms-transform-origin'] = cssTransformOrigin;\n                thumb.style['-moz-transform'] = cssTransform;\n                thumb.style['-moz-transform-origin'] = cssTransformOrigin;\n                thumb.style['-webkit-transform-origin'] = cssTransformOrigin;\n                thumb.style['-webkit-transform'] = cssTransform;\n                thumb.style['-o-transform'] = cssTransform;\n                thumb.style['-o-transform-origin'] = cssTransformOrigin;\n              }\n\n              thumbnailContainer.appendChild(thumb);\n            }\n\n            if (updateAnnotations) {\n              updateAnnotations(index);\n            }\n\n            onFinishLoading(index);\n            setLoaded(true);\n          },\n          allowUseOfOptimizedThumbnail: true,\n        });\n        onLoad(index, thumbnailContainer, id);\n      }\n    }, THUMBNAIL_LOAD_DELAY);\n  };\n\n  useEffect(() => {\n    const onPagesUpdated = (changes) => {\n      const { contentChanged, moved, added, removed } = changes;\n\n      const currentPage = index + 1;\n\n      const isPageAdded = added.includes(currentPage);\n      const didPageChange = contentChanged.some((changedPage) => currentPage === changedPage);\n      const didPageMove = Object.keys(moved).some((movedPage) => currentPage === parseInt(movedPage));\n      const isPageRemoved = removed.includes(currentPage);\n      const newPageCount = core.getTotalPages();\n\n      if (removed.length > 0 && index + 1 > newPageCount) {\n        return;\n      }\n\n      if (isPageAdded || didPageChange || didPageMove || isPageRemoved) {\n        loadThumbnailAsync();\n      }\n    };\n\n    const onRotationUpdated = () => {\n      setLoaded(false);\n      loadThumbnailAsync();\n    };\n\n    core.addEventListener('pagesUpdated', onPagesUpdated);\n    core.addEventListener('rotationUpdated', onRotationUpdated);\n    if (canLoad) {\n      loadThumbnailAsync();\n    }\n    return () => {\n      core.removeEventListener('pagesUpdated', onPagesUpdated);\n      core.removeEventListener('rotationUpdated', onRotationUpdated);\n      clearTimeout(loadTimeout);\n      onRemove(index);\n    };\n  }, []);\n\n  useDidUpdate(() => {\n    if (canLoad) {\n      loadThumbnailAsync();\n      updateAnnotations(index);\n    } else {\n      onCancel(index);\n    }\n  }, [canLoad, activeDocumentViewerKey]);\n\n  const handleClick = (e) => {\n    const checkboxToggled = e.target.type && e.target.type === 'checkbox';\n    if (isThumbnailMultiselectEnabled && !isReaderModeOrReadOnly) {\n      const multiSelectionKeyPressed = e.ctrlKey || e.metaKey;\n      const shiftKeyPressed = e.shiftKey;\n      let updatedSelectedPages = [...selectedPageIndexes];\n\n      if (shiftKeyPressed) {\n        dispatch(actions.setThumbnailSelectingPages(true));\n        // Include current page as part of selection if we just started shift-selecting\n        let shiftKeyPivot = shiftKeyThumbnailPivotIndex;\n        if (shiftKeyPivot === null) {\n          shiftKeyPivot = currentPage - 1;\n          dispatch(actions.setShiftKeyThumbnailsPivotIndex(shiftKeyPivot));\n        }\n        // get the range of the selected index and update selected page\n        const currSelectMinIndex = Math.min(shiftKeyPivot, index);\n        const currSelectMaxIndex = Math.max(shiftKeyPivot, index);\n        updatedSelectedPages = [...new Set([...Array.from(\n          { length: currSelectMaxIndex - currSelectMinIndex + 1 },\n          (_, i) => i + currSelectMinIndex,\n        )])];\n      } else if (multiSelectionKeyPressed || isThumbnailSelectingPages) {\n        dispatch(actions.setThumbnailSelectingPages(true));\n        // Only select a page if multiSelectionKeyPressed or if checkbox is checked unless in 'thumbnail' mode\n        if (multiSelectionKeyPressed || checkboxToggled || thumbnailSelectionMode === thumbnailSelectionModes['THUMBNAIL']) {\n          // Include current page as part of selection if we just started multi-selecting\n          if (selectedPageIndexes.length === 0 && !isThumbnailSelectingPages) {\n            updatedSelectedPages.push(currentPage - 1);\n          } else if (selectedPageIndexes.includes(index)) {\n            updatedSelectedPages = selectedPageIndexes.filter((pageIndex) => index !== pageIndex);\n          } else {\n            updatedSelectedPages.push(index);\n          }\n        }\n        dispatch(actions.setShiftKeyThumbnailsPivotIndex(index));\n      } else {\n        updatedSelectedPages = [index];\n      }\n      // set shiftKeyPivot when press ctr key or single key\n      const lastSelectedPageIndex = updatedSelectedPages[updatedSelectedPages.length - 1];\n      const shouldUpdateShiftKeyPivotIndex = !isThumbnailSelectingPages && !shiftKeyPressed;\n\n      if (shouldUpdateShiftKeyPivotIndex) {\n        dispatch(actions.setShiftKeyThumbnailsPivotIndex(lastSelectedPageIndex));\n      }\n\n      dispatch(actions.setSelectedPageThumbnails(updatedSelectedPages));\n    } else if (isMobile()) {\n      dispatch(actions.closeElement('leftPanel'));\n    }\n\n    // due to the race condition, we need a settimeout here\n    // otherwise, sometimes the current page will not be visible in left panel\n    setTimeout(() => {\n      // If user clicks on checkbox, it should not automatically jump to that page,\n      // only if the user clicks on thumbnail then go to page and view it, unless in 'thumbnail' mode\n      if (!checkboxToggled || thumbnailSelectionMode === thumbnailSelectionModes['THUMBNAIL']) {\n        core.setCurrentPage(index + 1);\n      }\n    }, 0);\n  };\n\n  const isActive = currentPage === index + 1;\n  const pageLabel = pageLabels[index];\n  let checkboxRotateClass = 'default';\n  const rotation = core.getRotation(index + 1);\n  if ((!rotation || rotation === 2) && dimensions.width > dimensions.height) {\n    checkboxRotateClass = 'rotated';\n  } else if ((rotation === 1 || rotation === 3) && dimensions.width < dimensions.height) {\n    checkboxRotateClass = 'rotated';\n  }\n\n  return (\n    <div\n      className={classNames({\n        Thumbnail: true,\n        active: isActive,\n        selected: isSelected && isThumbnailSelectingPages,\n      })}\n      onDragOver={(e) => onDragOver(e, index)}\n      id=\"Thumbnail-container\"\n    >\n      <div\n        className=\"container\"\n        style={{\n          width: thumbSize,\n          height: thumbSize,\n        }}\n        onDragStart={(e) => onDragStart(e, index)}\n        draggable={isDraggable}\n        onClick={handleClick}\n      >\n        <div id={`pageThumb${index}`} className=\"thumbnail\" />\n        {isThumbnailSelectingPages && loaded && (\n          <Choice className={`checkbox ${checkboxRotateClass}`} checked={selectedPageIndexes.includes(index)} />\n        )}\n      </div>\n      <div className=\"page-label\">{pageLabel}</div>\n      {!isThumbnailSelectingPages && isActive && shouldShowControls && <ThumbnailControls index={index} />}\n    </div>\n  );\n};\n\nexport default Thumbnail;\n","import React from 'react';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nimport Thumbnail from './Thumbnail';\n\nconst ThumbnailRedux = (props) => {\n  const [\n    currentPage,\n    pageLabels,\n    selectedPageIndexes,\n    isThumbnailMultiselectEnabled,\n    isReaderMode,\n    isDocumentReadOnly,\n    shiftKeyThumbnailPivotIndex,\n    isThumbnailSelectingPages,\n    thumbnailSelectionMode,\n    activeDocumentViewerKey,\n    selectionModes\n  ] = useSelector(\n    (state) => [\n      selectors.getCurrentPage(state),\n      selectors.getPageLabels(state),\n      selectors.getSelectedThumbnailPageIndexes(state),\n      selectors.isThumbnailMultiselectEnabled(state),\n      selectors.isReaderMode(state),\n      selectors.isDocumentReadOnly(state),\n      selectors.getShiftKeyThumbnailPivotIndex(state),\n      selectors.isThumbnailSelectingPages(state),\n      selectors.getThumbnailSelectionMode(state),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  return <Thumbnail {...props} {...{\n    currentPage,\n    pageLabels,\n    selectedPageIndexes,\n    isThumbnailMultiselectEnabled,\n    isReaderModeOrReadOnly: isReaderMode || isDocumentReadOnly,\n    dispatch,\n    actions,\n    isMobile,\n    shiftKeyThumbnailPivotIndex,\n    isThumbnailSelectingPages,\n    thumbnailSelectionMode,\n    selectionModes,\n    activeDocumentViewerKey,\n  }}\n  />;\n};\n\nexport default ThumbnailRedux;\n","import Thumbnail from './ThumbnailRedux';\n\nexport default Thumbnail;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport pageNumberPlaceholder from 'constants/pageNumberPlaceholder';\nimport core from 'src/core';\nimport { useTranslation } from 'react-i18next';\n\nimport './DocumentControls.scss';\n\nfunction getPageString(selectedPageArray, pageLabels) {\n  let pagesToPrint = '';\n  const sortedPages = selectedPageArray.sort((a, b) => a - b);\n  let prevIndex = null;\n\n  for (let i = 0; sortedPages.length > i; i++) {\n    if (sortedPages[i + 1] === sortedPages[i] + 1) {\n      prevIndex = prevIndex !== null ? prevIndex : sortedPages[i];\n    } else if (prevIndex !== null) {\n      pagesToPrint = `${pagesToPrint}${pageLabels[prevIndex]}-${pageLabels[sortedPages[i]]}, `;\n      prevIndex = null;\n    } else {\n      pagesToPrint = `${pagesToPrint}${pageLabels[sortedPages[i]]}, `;\n    }\n  }\n\n  return pagesToPrint.slice(0, -2);\n}\n\nconst DocumentControls = ({ shouldShowControls }) => {\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const [selectedPageIndexes, isDisabled, pageLabels, isThumbnailSelectingPages] = useSelector((state) => [\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.isElementDisabled(state, 'documentControl'),\n    selectors.getPageLabels(state),\n    selectors.isThumbnailSelectingPages(state),\n  ]);\n\n  const initialPagesString = getPageString(selectedPageIndexes, pageLabels);\n\n  const [pageString, setPageString] = useState(initialPagesString);\n  const [previousPageString, setPreviousPageString] = useState(initialPagesString);\n\n  useEffect(() => {\n    setPageString(getPageString(selectedPageIndexes, pageLabels));\n  }, [setPageString, selectedPageIndexes, shouldShowControls, pageLabels]);\n\n  const onBlur = (e) => {\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pages = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels);\n    const pageIndexes = pages.map((page) => page - 1);\n\n    if (pages.length || !selectedPagesString) {\n      dispatch(actions.setSelectedPageThumbnails(pageIndexes));\n\n      const updatedString = getPageString(selectedPageIndexes, pageLabels);\n\n      setPageString(updatedString);\n      setPreviousPageString(updatedString);\n    } else {\n      setPageString(previousPageString);\n    }\n\n    if (selectedPageIndexes.length > 0 && !isThumbnailSelectingPages) {\n      // set a short timeout due to race condition caused by onBlur and\n      // changing the documentControlsButton based on isThumbnailSelectingPages\n      setTimeout(() => {\n        enableThumbnailSelectingPages();\n      }, 100);\n    }\n  };\n\n  const pageStringUpdate = (e) => {\n    setPageString(e.target.value);\n  };\n\n  const disableThumbnailSelectingPages = () => {\n    dispatch(actions.setSelectedPageThumbnails([core.getCurrentPage() - 1]));\n    dispatch(actions.setThumbnailSelectingPages(false));\n  };\n\n  const enableThumbnailSelectingPages = () => {\n    dispatch(actions.setThumbnailSelectingPages(true));\n  };\n\n  return isDisabled ? null : (\n    <div className={'documentControlsContainer'} data-element={'documentControl'}>\n      {shouldShowControls ? (\n        <div className={'documentControls'}>\n          <div className={'divider'}></div>\n          <div className={'documentControlsInput'}>\n            <input\n              onBlur={onBlur}\n              onChange={pageStringUpdate}\n              value={pageString}\n              placeholder={pageNumberPlaceholder}\n              aria-label={t('option.thumbnailPanel.enterPageNumbers')}\n              className=\"pagesInput\"\n              type=\"text\"\n            />\n            <div className={'documentControlsButton'}>\n              {!isThumbnailSelectingPages ? (\n                <Button\n                  img={'icon-tool-select-pages'}\n                  title={'option.documentControls.selectTooltip'}\n                  onClick={enableThumbnailSelectingPages}\n                  dataElement={'thumbMultiSelect'}\n                />\n              ) : (\n                <Button\n                  img={'icon-close'}\n                  title={'option.documentControls.closeTooltip'}\n                  onClick={disableThumbnailSelectingPages}\n                  dataElement={'thumbCloseMultiSelect'}\n                />\n              )}\n            </div>\n          </div>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nDocumentControls.propTypes = {\n  isDisabled: PropTypes.bool,\n  pageLabels: PropTypes.arrayOf(PropTypes.string),\n  toggleDocumentControl: PropTypes.func,\n  shouldShowControls: PropTypes.bool,\n};\n\nexport default DocumentControls;\n","import DocumentControls from './DocumentControls';\n\nexport default DocumentControls;","import core from 'core';\nimport actions from 'actions';\nimport extractPagesWithAnnotations from './extractPagesWithAnnotations';\nimport fireEvent from './fireEvent';\nimport Events from 'constants/events';\nimport DataElements from 'src/constants/dataElement';\n\nexport const extractPagesToMerge = (pageNumbers) => {\n  // extract pages and put the data on the iFrame window element for another instance of WebViewer to access\n  window.extractedDataPromise = extractPagesWithAnnotations(pageNumbers);\n  window.pagesExtracted = pageNumbers;\n};\n\nexport const mergeDocument = (srcToMerge, mergeToPage, shouldFireEvent = true) => (dispatch) => {\n  dispatch(actions.openElement(DataElements.LOADING_MODAL));\n\n  return new Promise((resolve, reject) => {\n    core.mergeDocument(srcToMerge, mergeToPage).then((mergeResults) => {\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      core.setCurrentPage(mergeToPage);\n\n      if (shouldFireEvent) {\n        fireEvent(Events.DOCUMENT_MERGED, mergeResults);\n      }\n\n      resolve(mergeResults);\n    }).catch((err) => {\n      reject(err);\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    });\n  });\n};\n\nexport const mergeExternalWebViewerDocument = (viewerID, mergeToPage) => (dispatch) => {\n  return new Promise((resolve, reject) => {\n    const otherWebViewerIframe = window.parent.document.querySelector(`#${viewerID}`);\n    if (!otherWebViewerIframe) {\n      console.warn('Could not find other instance of WebViewer');\n      reject();\n    }\n\n    const extractedDataPromise = otherWebViewerIframe.contentWindow.extractedDataPromise;\n    if (!extractedDataPromise) {\n      console.warn('Could not retrieve data from other instance of WebViewer');\n      reject();\n    }\n\n    dispatch(actions.openElement(DataElements.LOADING_MODAL));\n    extractedDataPromise.then((docToMerge) => {\n      dispatch(mergeDocument(docToMerge, mergeToPage, false)).then(({ filename, pages }) => {\n        fireEvent(Events.DOCUMENT_MERGED, { filename, pages: otherWebViewerIframe.contentWindow.pagesExtracted });\n        dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n        resolve({ filename, pages });\n      });\n    }).catch((err) => {\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      reject(err);\n    });\n  });\n};","import debounce from 'lodash/debounce';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { List } from 'react-virtualized';\nimport Measure from 'react-measure';\nimport classNames from 'classnames';\nimport { isIE11 } from 'helpers/device';\n\nimport Thumbnail from 'components/Thumbnail';\nimport DocumentControls from 'components/DocumentControls';\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport { extractPagesToMerge, mergeDocument, mergeExternalWebViewerDocument } from 'helpers/pageManipulation';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Events from 'constants/events';\nimport DataElements from 'constants/dataElement';\nimport fireEvent from 'helpers/fireEvent';\n\nimport './ThumbnailsPanel.scss';\nimport getRootNode from 'helpers/getRootNode';\nimport { useTranslation } from 'react-i18next';\n\nconst dataTransferWebViewerFrameKey = 'dataTransferWebViewerFrame';\n\nconst ZOOM_RANGE_MIN = '100';\nconst ZOOM_RANGE_MAX = '1000';\nconst ZOOM_RANGE_STEP = '50';\nconst MAX_COLUMNS = 16;\n\nconst hoverAreaHeight = 25;\n\nconst ThumbnailsPanel = ({ panelSelector }) => {\n  const [\n    isLeftPanelOpen,\n    isDisabled,\n    totalPages,\n    currentPage,\n    selectedPageIndexes,\n    isThumbnailMergingEnabled,\n    isThumbnailReorderingEnabled,\n    isMultipleViewerMerging,\n    isThumbnailControlDisabled,\n    isThumbnailSliderDisabled,\n    isReaderMode,\n    isDocumentReadOnly,\n    totalPagesFromSecondaryDocumentViewer,\n    activeDocumentViewerKey,\n    isRightClickEnabled,\n    featureFlags\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'leftPanel'),\n      selectors.isElementDisabled(state, 'thumbnailsPanel'),\n      selectors.getTotalPages(state),\n      selectors.getCurrentPage(state),\n      selectors.getSelectedThumbnailPageIndexes(state),\n      selectors.getIsThumbnailMergingEnabled(state),\n      selectors.getIsThumbnailReorderingEnabled(state),\n      selectors.getIsMultipleViewerMerging(state),\n      selectors.isElementDisabled(state, 'thumbnailControl'),\n      selectors.isElementDisabled(state, 'thumbnailsSizeSlider'),\n      selectors.isReaderMode(state),\n      selectors.isDocumentReadOnly(state),\n      selectors.getTotalPages(state, 2),\n      selectors.getActiveDocumentViewerKey(state),\n      selectors.openingPageManipulationOverlayByRightClickEnabled(state),\n      selectors.getFeatureFlags(state)\n    ],\n    shallowEqual,\n  );\n\n  const [t] = useTranslation();\n\n  const listRef = useRef();\n  const pendingThumbs = useRef([]);\n  const thumbs = useRef([]);\n  const afterMovePageNumber = useRef(null);\n\n  const [canLoad, setCanLoad] = useState(true);\n  const [height, setHeight] = useState(0);\n  const [width, setWidth] = useState(0);\n  const [draggingOverPageIndex, setDraggingOverPageIndex] = useState(null);\n  const [isDraggingToPreviousPage, setDraggingToPreviousPage] = useState(false);\n  const [numberOfColumns, setNumberOfColumns] = useState(1);\n  const [isDragging, setIsDragging] = useState(false);\n\n  const [thumbnailSize, setThumbnailSize] = useState(150);\n  const [lastTimeTriggered, setLastTimeTriggered] = useState(0);\n  const [globalIndex, setGlobalIndex] = useState(0);\n  const pageCount = activeDocumentViewerKey === 2 ? totalPagesFromSecondaryDocumentViewer : totalPages;\n\n  const dispatch = useDispatch();\n\n  // If memory becomes an issue, change this to use pageNumbers.\n  // Instead of a debounced drawAnnotations function, perhaps use\n  // a function that first checks for the pageNumber in this map\n  // before calling drawAnnotations on a page.\n  let activeThumbRenders = {};\n\n  const getThumbnailSize = (pageWidth, pageHeight) => {\n    let width;\n    let height;\n    let ratio;\n\n    if (pageWidth > pageHeight) {\n      ratio = pageWidth / thumbnailSize;\n      width = thumbnailSize;\n      height = Math.round(pageHeight / ratio);\n    } else {\n      ratio = pageHeight / thumbnailSize;\n      width = Math.round(pageWidth / ratio); // Chrome has trouble displaying borders of non integer width canvases.\n      height = thumbnailSize;\n    }\n\n    return {\n      width,\n      height,\n    };\n  };\n\n  const updateAnnotations = (pageIndex) => {\n    const thumbContainer = thumbs.current && thumbs.current[pageIndex] && thumbs.current[pageIndex].element;\n    if (!thumbContainer) {\n      return;\n    }\n\n    const pageNumber = pageIndex + 1;\n    const pageWidth = core.getPageWidth(pageNumber);\n    const pageHeight = core.getPageHeight(pageNumber);\n\n    const { width, height } = getThumbnailSize(pageWidth, pageHeight);\n\n    const annotCanvas = thumbContainer.querySelector('.annotation-image') || document.createElement('canvas');\n    annotCanvas.className = 'annotation-image';\n    annotCanvas.style.maxWidth = `${thumbnailSize}px`;\n    annotCanvas.style.maxHeight = `${thumbnailSize}px`;\n    const ctx = annotCanvas.getContext('2d');\n\n    let zoom = 1;\n    let rotation = core.getCompleteRotation(pageNumber);\n    if (rotation < 0) {\n      rotation += 4;\n    }\n    const multiplier = window.Core.getCanvasMultiplier();\n\n    if (rotation % 2 === 0) {\n      annotCanvas.width = width;\n      annotCanvas.height = height;\n      zoom = annotCanvas.width / pageWidth;\n      zoom /= multiplier;\n    } else {\n      annotCanvas.width = height;\n      annotCanvas.height = width;\n\n      zoom = annotCanvas.height / pageWidth;\n      zoom /= multiplier;\n    }\n\n    thumbContainer.appendChild(annotCanvas);\n    core.setAnnotationCanvasTransform(ctx, zoom, rotation);\n\n    let options = {\n      pageNumber,\n      overrideCanvas: annotCanvas,\n    };\n\n    const thumb = thumbContainer.querySelector('.page-image');\n\n    if (thumb) {\n      options = {\n        ...options,\n        overridePageRotation: rotation,\n        overridePageCanvas: thumb,\n      };\n    } else {\n      return;\n    }\n\n    if (!activeThumbRenders[pageNumber]) {\n      activeThumbRenders[pageNumber] = debounce(core.drawAnnotations, 112);\n    }\n    const debouncedDraw = activeThumbRenders[pageNumber];\n    debouncedDraw(options);\n  };\n\n  useEffect(() => {\n    const onBeginRendering = () => {\n      setCanLoad(false);\n    };\n\n    const onFinishedRendering = (needsMoreRendering) => {\n      if (!needsMoreRendering) {\n        setCanLoad(true);\n      }\n    };\n\n    const onDocumentLoaded = () => {\n      activeThumbRenders = {};\n      dispatch(actions.setSelectedPageThumbnails([]));\n    };\n\n    const onPageComplete = () => {\n      if (afterMovePageNumber.current) {\n        core.setCurrentPage(afterMovePageNumber.current);\n        afterMovePageNumber.current = null;\n      }\n    };\n\n    core.addEventListener('beginRendering', onBeginRendering);\n    core.addEventListener('finishedRendering', onFinishedRendering);\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('pageComplete', onPageComplete);\n\n\n    // The document might have already been loaded before this component is mounted.\n    // If document is already loaded, call 'onDocumentLoaded()' manually to update the state properly.\n    if (core.getDocument()) {\n      onDocumentLoaded();\n    }\n\n    return () => {\n      core.removeEventListener('beginRendering', onBeginRendering);\n      core.removeEventListener('finishedRendering', onFinishedRendering);\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('pageComplete', onPageComplete);\n    };\n  }, []);\n\n  useEffect(() => {\n    const onPagesUpdated = (changes) => {\n      if (!changes) {\n        return;\n      }\n      let updatedPagesIndexes = Array.from(selectedPageIndexes);\n\n      if (changes.removed) {\n        updatedPagesIndexes = updatedPagesIndexes.filter((pageIndex) => changes.removed.indexOf(pageIndex + 1) === -1);\n      }\n\n      if (changes.moved) {\n        updatedPagesIndexes = updatedPagesIndexes.map((pageIndex) => (changes.moved[pageIndex + 1] ? changes.moved[pageIndex + 1] - 1 : pageIndex),\n        );\n      }\n\n      dispatch(actions.setSelectedPageThumbnails(updatedPagesIndexes));\n    };\n\n    core.addEventListener('pagesUpdated', onPagesUpdated);\n\n    return () => core.removeEventListener('pagesUpdated', onPagesUpdated);\n  }, [selectedPageIndexes]);\n\n  useEffect(() => {\n    listRef.current?.scrollToRow(Math.floor((currentPage - 1) / numberOfColumns));\n    const onAnnotationChanged = (annots) => {\n      const indices = [];\n\n      annots.forEach((annot) => {\n        const pageIndex = annot.PageNumber - 1;\n        if (!annot.Listable || indices.indexOf(pageIndex) > -1) {\n          return;\n        }\n        indices.push(pageIndex);\n\n        updateAnnotations(pageIndex);\n      });\n    };\n\n    const onPageNumberUpdated = (pageNumber) => {\n      const pageIndex = pageNumber - 1;\n      listRef.current?.scrollToRow(Math.floor(pageIndex / numberOfColumns));\n    };\n\n    core.addEventListener('pageNumberUpdated', onPageNumberUpdated);\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationHidden', onAnnotationChanged);\n\n    return () => {\n      core.removeEventListener('pageNumberUpdated', onPageNumberUpdated);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationHidden', onAnnotationChanged);\n    };\n  }, [thumbnailSize, numberOfColumns]);\n\n  useEffect(() => {\n    if (isReaderMode || isDocumentReadOnly) {\n      dispatch(actions.setSelectedPageThumbnails([]));\n      dispatch(actions.setThumbnailSelectingPages(false));\n    }\n  }, [isReaderMode, isDocumentReadOnly]);\n\n  const { customizableUI } = featureFlags;\n\n  // if disabled or left panel is not open when we are not in customize mode, return\n  if (isDisabled || (!isLeftPanelOpen && !customizableUI)) {\n    return null;\n  }\n  const onDragEnd = () => {\n    setIsDragging(false);\n    setDraggingOverPageIndex(null);\n  };\n\n  const scrollToRowHelper = (index, change, time) => {\n    const now = new Date().getTime();\n    if (index < pageCount - 1 && index > 0 && now - lastTimeTriggered >= time) {\n      listRef.current?.scrollToRow(Math.floor((index + change) / numberOfColumns));\n      setLastTimeTriggered(now);\n      return index + change;\n    }\n    return index;\n  };\n\n  const onDragOver = (e, index) => {\n    // 'preventDefault' to prevent opening pdf dropped in and 'stopPropagation' to keep parent from opening pdf\n    e.preventDefault();\n    e.stopPropagation();\n    if (!isThumbnailReorderingEnabled && !isThumbnailMergingEnabled) {\n      return;\n    }\n\n    const thumbnail = e.target.getBoundingClientRect();\n    if (numberOfColumns > 1) {\n      // row with more than 1 thumbnail so user are dragging to the left and right\n      setDraggingToPreviousPage(!(e.pageX > thumbnail.x + thumbnail.width / 2));\n    } else {\n      setDraggingToPreviousPage(!(e.pageY > thumbnail.y + thumbnail.height / 2));\n    }\n\n    setDraggingOverPageIndex(index);\n    const virtualizedThumbnailContainerElement = getRootNode().querySelector('#virtualized-thumbnails-container');\n    const { y, bottom } = virtualizedThumbnailContainerElement.getBoundingClientRect();\n\n    if (e.pageY < y + hoverAreaHeight * 4) {\n      setGlobalIndex(scrollToRowHelper(index, -1, 400));\n    } else if (e.pageY > bottom - hoverAreaHeight * 4) {\n      setGlobalIndex(scrollToRowHelper(index, 1, 400));\n    }\n  };\n\n  const scrollDown = () => {\n    setGlobalIndex(scrollToRowHelper(globalIndex, 1, 200));\n  };\n  const scrollUp = () => {\n    setGlobalIndex(scrollToRowHelper(globalIndex, -1, 200));\n  };\n\n  const onDragStart = (e, index) => {\n    setGlobalIndex(index);\n    setIsDragging(true);\n    const draggingSelectedPage = selectedPageIndexes.some((i) => i === index);\n    const pagesToMove = draggingSelectedPage ? selectedPageIndexes.map((index) => index + 1) : [index + 1];\n    fireEvent(Events.THUMBNAIL_DRAGGED);\n    // need to set 'text' to empty for drag to work in FireFox and mobile\n    e.dataTransfer.setData('text', '');\n\n    if (pagesToMove.length > 1) {\n      // can't set to null so set to new instance of an image\n      e.dataTransfer.setDragImage(new Image(), 0, 0);\n    }\n\n    if (isThumbnailMergingEnabled && isMultipleViewerMerging) {\n      e.dataTransfer.dropEffect = 'move';\n      e.dataTransfer.effectAllowed = 'all';\n      e.dataTransfer.setData(dataTransferWebViewerFrameKey, window.frameElement.id);\n      extractPagesToMerge(pagesToMove);\n    }\n\n    if (!draggingSelectedPage) {\n      dispatch(actions.setSelectedPageThumbnails([index]));\n    }\n\n    core.setCurrentPage(index + 1);\n  };\n\n  const onDrop = (e) => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    const insertTo = isDraggingToPreviousPage ? draggingOverPageIndex + 1 : draggingOverPageIndex + 2;\n    let externalPageWebViewerFrameId;\n    if (!isIE11) {\n      // at this time of writing, IE11 does not really have support for getData\n      externalPageWebViewerFrameId = e.dataTransfer.getData(dataTransferWebViewerFrameKey);\n    }\n    const mergingDocument =\n      (externalPageWebViewerFrameId && window.frameElement.id !== externalPageWebViewerFrameId) || files.length;\n    const currentPageIndex = currentPage - 1;\n\n    if (isThumbnailMergingEnabled && mergingDocument) {\n      if (externalPageWebViewerFrameId && window.frameElement.id !== externalPageWebViewerFrameId) {\n        dispatch(mergeExternalWebViewerDocument(externalPageWebViewerFrameId, insertTo));\n      } else if (files.length) {\n        Array.from(files).forEach((file) => {\n          dispatch(mergeDocument(file, insertTo));\n        });\n      }\n    } else if (isThumbnailReorderingEnabled && !mergingDocument) {\n      if (draggingOverPageIndex !== null) {\n        const targetPageNumber = isDraggingToPreviousPage ? draggingOverPageIndex + 1 : draggingOverPageIndex + 2;\n        const draggingSelectedPage = selectedPageIndexes.some((i) => i === currentPageIndex);\n        const pageNumbersToMove = draggingSelectedPage ? selectedPageIndexes.map((i) => i + 1) : [currentPage];\n        afterMovePageNumber.current = targetPageNumber - pageNumbersToMove.filter((p) => p < targetPageNumber).length;\n        core.movePages(pageNumbersToMove, targetPageNumber);\n        const updatedPagesNumbers = [];\n        for (let offset = 0; offset < pageNumbersToMove.length; offset++) {\n          updatedPagesNumbers.push(afterMovePageNumber.current + offset);\n        }\n        fireEvent(Events.THUMBNAIL_DROPPED, { pageNumbersBeforeMove: pageNumbersToMove, pagesNumbersAfterMove: updatedPagesNumbers, numberOfPagesMoved: updatedPagesNumbers.length });\n      }\n    }\n    setDraggingOverPageIndex(null);\n    setIsDragging(false);\n  };\n\n  const onLoad = (pageIndex, element, id) => {\n    if (!thumbIsLoaded(pageIndex) && !thumbIsPending(pageIndex)) {\n      thumbs.current[pageIndex] = {\n        element,\n        loaded: false,\n      };\n\n      pendingThumbs.current.push({\n        pageIndex,\n        id,\n      });\n    }\n  };\n\n  const removeFromPendingThumbs = (pageIndex) => {\n    const index = getPendingThumbIndex(pageIndex);\n    if (index !== -1) {\n      pendingThumbs.current.splice(index, 1);\n    }\n  };\n\n  const thumbIsLoaded = (pageIndex) => thumbs.current[pageIndex]?.loaded;\n\n  const thumbIsPending = (pageIndex) => getPendingThumbIndex(pageIndex) !== -1;\n\n  const onCancel = (pageIndex) => {\n    const index = getPendingThumbIndex(pageIndex);\n    if (index !== -1) {\n      core.cancelLoadThumbnail(pendingThumbs.current[index].id);\n      pendingThumbs.current.splice(index, 1);\n    }\n  };\n\n  const onRightClick = (event, pageIndex) => {\n    event.preventDefault();\n    core.setCurrentPage(pageIndex + 1);\n    if (!selectedPageIndexes.includes(pageIndex)) {\n      dispatch(actions.setSelectedPageThumbnails([pageIndex]));\n    }\n\n    if (isReaderMode || isDocumentReadOnly) {\n      return;\n    }\n\n    dispatch(actions.setPageManipulationOverlayAlternativePosition({ left: event.pageX, right: 'auto', top: event.pageY }));\n    dispatch(actions.openElements([DataElements.PAGE_MANIPULATION_OVERLAY]));\n  };\n\n  const getPendingThumbIndex = (pageIndex) => pendingThumbs.current.findIndex((thumbStatus) => thumbStatus.pageIndex === pageIndex);\n\n  const onRemove = (pageIndex) => {\n    onCancel(pageIndex);\n    const canvases = thumbs.current[pageIndex]?.element?.querySelectorAll('canvas');\n    if (canvases?.length) {\n      canvases.forEach((c) => {\n        c.height = 0;\n        c.width = 0;\n      });\n    }\n\n    if (activeThumbRenders[pageIndex]) {\n      activeThumbRenders[pageIndex].cancel();\n    }\n    thumbs.current[pageIndex] = null;\n  };\n\n  const renderThumbnails = ({ index, key, style }) => {\n    const className = classNames({\n      columnsOfThumbnails: numberOfColumns > 1,\n      row: true,\n    });\n    const allowPageOperationsUI = !(isReaderMode || isDocumentReadOnly);\n\n    return (\n      <div role=\"row\" aria-label=\"row\" className={className} key={key} style={style}>\n        {new Array(numberOfColumns).fill().map((_, columnIndex) => {\n          const thumbIndex = index * numberOfColumns + columnIndex;\n          const allowDragAndDrop = allowPageOperationsUI && (isThumbnailMergingEnabled || isThumbnailReorderingEnabled);\n          const showPlaceHolder = allowDragAndDrop && draggingOverPageIndex === thumbIndex;\n\n          return thumbIndex < pageCount ? (\n            <React.Fragment key={thumbIndex}>\n              {(numberOfColumns > 1 || thumbIndex === 0) && showPlaceHolder && isDraggingToPreviousPage && <div key={`placeholder1-${thumbIndex}`} className=\"thumbnailPlaceholder\" />}\n              <div key={thumbIndex} role=\"cell\" onDragEnd={onDragEnd} className=\"cellThumbContainer\" onContextMenu={(e) => isRightClickEnabled && onRightClick(e, thumbIndex)}>\n                <Thumbnail\n                  isDraggable={allowDragAndDrop}\n                  isSelected={selectedPageIndexes.includes(thumbIndex)}\n                  index={thumbIndex}\n                  canLoad={canLoad}\n                  onLoad={onLoad}\n                  onCancel={onCancel}\n                  onRemove={onRemove}\n                  onDragStart={onDragStart}\n                  onDragOver={onDragOver}\n                  onFinishLoading={removeFromPendingThumbs}\n                  updateAnnotations={updateAnnotations}\n                  shouldShowControls={allowPageOperationsUI}\n                  thumbnailSize={thumbnailSize}\n                  panelSelector={panelSelector}\n                />\n              </div>\n              {showPlaceHolder && !isDraggingToPreviousPage && <div key={`placeholder2-${thumbIndex}`} className=\"thumbnailPlaceholder\" />}\n            </React.Fragment>\n          ) : null;\n        })}\n      </div>\n    );\n  };\n\n  const onPanelResize = ({ bounds }) => {\n    setHeight(bounds.height);\n    setWidth(bounds.width);\n    setNumberOfColumns(Math.min(MAX_COLUMNS, Math.max(1, Math.floor(bounds.width / thumbnailSize))));\n  };\n\n  const updateNumberOfColumns = () => {\n    setNumberOfColumns(Math.min(MAX_COLUMNS, Math.max(1, Math.floor(width / thumbnailSize))));\n  };\n\n  const thumbnailHeight = isThumbnailControlDisabled ? Number(thumbnailSize) + 50 : Number(thumbnailSize) + 80;\n  const shouldShowControls = !(isReaderMode || isDocumentReadOnly);\n  const thumbnailAutoScrollAreaStyle = {\n    'height': `${hoverAreaHeight}px`,\n  };\n\n  return (\n    <React.Fragment>\n      {!isThumbnailSliderDisabled && <div data-element=\"thumbnailsSizeSlider\" className=\"thumbnail-slider-container\">\n        <Button\n          img=\"icon-zoom-thumb-out\"\n          title=\"action.zoomOut\"\n          hideTooltipShortcut\n          onClick={() => {\n            if (thumbnailSize - Number(ZOOM_RANGE_STEP) > Number(ZOOM_RANGE_STEP)) {\n              setThumbnailSize(thumbnailSize - Number(ZOOM_RANGE_STEP));\n              updateNumberOfColumns();\n            }\n          }}\n          dataElement=\"zoomThumbOutButton\"\n        />\n        <input\n          role='slider'\n          type=\"range\"\n          aria-label='thumbnail size slider'\n          min={ZOOM_RANGE_MIN}\n          max={ZOOM_RANGE_MAX}\n          value={thumbnailSize}\n          aria-valuemin={ZOOM_RANGE_MIN}\n          aria-valuemax={ZOOM_RANGE_MAX}\n          aria-valuenow={thumbnailSize}\n          onChange={(e) => {\n            setThumbnailSize(Number(e.target.value));\n            updateNumberOfColumns();\n          }}\n          step={ZOOM_RANGE_STEP}\n          className=\"thumbnail-slider\"\n          id=\"thumbnailSize\"\n        />\n        <Button\n          img=\"icon-zoom-thumb-in\"\n          title=\"action.zoomIn\"\n          hideTooltipShortcut\n          onClick={() => {\n            if (thumbnailSize + Number(ZOOM_RANGE_STEP) < 1001) {\n              setThumbnailSize(thumbnailSize + Number(ZOOM_RANGE_STEP));\n              updateNumberOfColumns();\n            }\n          }}\n          dataElement=\"zoomThumbInButton\"\n        />\n      </div>}\n      <Measure bounds onResize={onPanelResize} key={thumbnailSize}>\n        {({ measureRef }) => (\n          <div className={`Panel ThumbnailsPanel ${panelSelector}`} id=\"virtualized-thumbnails-container\" data-element=\"thumbnailsPanel\" onDrop={onDrop} ref={measureRef}>\n            <div className=\"virtualized-thumbnails-container\">\n              {isDragging ?\n                <div className=\"thumbnailAutoScrollArea\" onDragOver={scrollUp} style={thumbnailAutoScrollAreaStyle}></div> : ''\n              }\n              <List\n                ref={listRef}\n                height={height}\n                width={width}\n                rowHeight={thumbnailHeight}\n                // Round it to a whole number because React-Virtualized list library doesn't round it for us and throws errors when rendering non whole number rows\n                // use ceiling rather than floor so that an extra row can be created in case the items can't be evenly distributed between rows\n                rowCount={Math.ceil(pageCount / numberOfColumns)}\n                rowRenderer={renderThumbnails}\n                overscanRowCount={3}\n                className={'thumbnailsList'}\n                style={{ outline: 'none' }}\n                // Ensure we show the current page in the thumbnails when we open the panel\n                scrollToIndex={Math.floor((currentPage - 1) / numberOfColumns)}\n                role='grid'\n                aria-label={t('component.thumbnailsPanel')}\n              />\n              {isDragging ?\n                <div className=\"thumbnailAutoScrollArea\" onDragOver={scrollDown} style={{ ...thumbnailAutoScrollAreaStyle, 'bottom': '70px' }}></div> : ''\n              }\n            </div>\n          </div>\n        )}\n      </Measure>\n      <DocumentControls shouldShowControls={shouldShowControls} />\n    </React.Fragment>\n  );\n};\n\nexport default ThumbnailsPanel;\n","import ThumbnailsPanel from './ThumbnailsPanel';\n\nexport default ThumbnailsPanel;\n","import React from 'react';\n\nconst OutlineContext = React.createContext();\n\nexport default OutlineContext;","import fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nconst OutlineUtils = {\n  setDoc(doc) {\n    this.doc = doc;\n  },\n  async setOutlineName(path, newName) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    await target.setTitle(newName);\n    const bookmarkEventObject = {\n      ...target,\n      bookmark: target,\n      path,\n      action: 'setOutlineName'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return path;\n  },\n  async setOutlineDestination(path, pageNum, x, y, zoom) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    const PDFNet = window.Core.PDFNet;\n    const document = await this.doc.getPDFDoc();\n    return PDFNet.runWithCleanup(async () => {\n      const page = await document.getPage(pageNum);\n      const destination = await PDFNet.Destination.createXYZ(page, x, y, zoom);\n      target.setAction(await PDFNet.Action.createGoto(destination));\n      const bookmarkEventObject = {\n        ...target,\n        bookmark: target,\n        path,\n        action: 'setOutlineDestination'\n      };\n      fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    });\n  },\n  async addRootOutline(newName, pageNum, x, y, zoom) {\n    const newOutline = await this.createOutlineXYZ(newName, pageNum, x, y, zoom);\n    const doc = await this.doc.getPDFDoc();\n\n    await doc.addRootBookmark(newOutline);\n\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: '0',\n      action: 'addRootOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return '0';\n  },\n  async addNewOutline(newName, path, pageNum, x, y, zoom) {\n    let target;\n\n    const hasActiveOutline = !!path;\n    if (hasActiveOutline) {\n      target = await this.findPDFNetOutline(path);\n    } else {\n      target = await this.getLastOutline();\n    }\n\n    if (!target) {\n      return null;\n    }\n\n    const newOutline = await this.createOutlineXYZ(newName, pageNum, x, y, zoom);\n    if (hasActiveOutline) {\n      await target.addChild(newOutline);\n    } else {\n      await target.addNext(newOutline);\n    }\n\n    const addedOutlinePath = await this.findPathInTree(newOutline);\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: addedOutlinePath,\n      action: 'addNewOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return addedOutlinePath;\n  },\n  async createOutlineXYZ(newName, pageNum, x, y, zoom) {\n    const PDFNet = window.Core.PDFNet;\n    const doc = await this.doc.getPDFDoc();\n    return PDFNet.runWithCleanup(async () => {\n      const newOutline = await PDFNet.Bookmark.create(doc, newName);\n\n      const page = await doc.getPage(pageNum);\n      const dest = await PDFNet.Destination.createXYZ(page, x, y, zoom);\n      newOutline.setAction(await PDFNet.Action.createGoto(dest));\n\n      return newOutline;\n    });\n  },\n  async deleteOutline(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    if (target) {\n      const bookmarkEventObject = {\n        ...target,\n        bookmark: target,\n        path,\n        action: 'deleteOutline'\n      };\n      await target.delete();\n      fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    }\n\n    return null;\n  },\n  async moveOutlineUp(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await prev.addPrev(copy);\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineUp'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineDown(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const next = await target.getNext();\n    if (!(await this.isValid(next))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await next.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineDown'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineBeforeTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineBeforeTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineAfterTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineAfterTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeParent(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeParent'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeAncestor(path, ancestorPath) {\n    const target = await this.findPDFNetOutline(path);\n    const ancestorTarget = await this.findPDFNetOutline(ancestorPath);\n\n    if (!target || (await target.getIndent()) === 1 || !ancestorTarget) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    await ancestorTarget.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeAncestor'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInTarget(path, targetPath) {\n    const target = await this.findPDFNetOutline(path);\n    const targetOutline = await this.findPDFNetOutline(targetPath);\n    if (!target || !targetOutline) {\n      return path;\n    }\n\n    if (!(await this.isValid(targetOutline))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await targetOutline.hasChildren()) {\n      const lastChild = await targetOutline.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await targetOutline.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await prev.hasChildren()) {\n      const lastChild = await prev.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await prev.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async getCanMoveState(path) {\n    const state = { up: false, down: false, outward: false, inward: false };\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return state;\n    }\n\n    const prev = await target.getPrev();\n    if (await this.isValid(prev)) {\n      state.up = true;\n      state.inward = true;\n    }\n\n    const next = await target.getNext();\n    if (await this.isValid(next)) {\n      state.down = true;\n    }\n\n    const parent = await target.getParent();\n    if ((await this.isValid(parent)) && (await target.getIndent()) > 1) {\n      state.outward = true;\n    }\n\n    return state;\n  },\n  getOutlineId(outline) {\n    const name = outline.getName();\n    const path = this.getPath(outline);\n\n    return `${path}${this.getSplitter()}${name}`;\n  },\n  async getLastOutline() {\n    const doc = await this.doc.getPDFDoc();\n    return window.Core.PDFNet.runWithCleanup(async () => {\n      const root = await doc.getFirstBookmark();\n\n      let curr = root;\n      while ((await this.isValid(curr)) && (await this.isValid(await curr.getNext()))) {\n        curr = await curr.getNext();\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  async findPathInTree(target) {\n    const doc = await this.doc.getPDFDoc();\n    const root = await doc.getFirstBookmark();\n    const queue = [];\n\n    // add all the bookmarks in the first level to the queue\n    // this includes the root bookmark and all of its siblings\n    let i = 0;\n    let curr = root;\n    while (await this.isValid(curr)) {\n      queue.push([curr, `${i}`]);\n      curr = await curr.getNext();\n      i++;\n    }\n\n    // start a BFS to find the target\n    while (queue.length > 0) {\n      const node = queue.shift();\n      const [outline, path] = node;\n\n      if (outline.id === target.id) {\n        return path;\n      }\n\n      if (!(await outline.hasChildren())) {\n        continue;\n      }\n\n      let childIdx = 0;\n      let child = await outline.getFirstChild();\n      while (await this.isValid(child)) {\n        queue.push([child, `${path}${this.getSplitter()}${childIdx}`]);\n\n        child = await child.getNext();\n        childIdx++;\n      }\n    }\n\n    return null;\n  },\n  async findPDFNetOutline(path) {\n    if (!path) {\n      return Promise.resolve(null);\n    }\n\n    const paths = path.split(this.getSplitter());\n    const doc = await this.doc.getPDFDoc();\n    return window.Core.PDFNet.runWithCleanup(async () => {\n      const rootOutline = await doc.getFirstBookmark();\n\n      let curr = rootOutline;\n      for (let level = 0; level < paths.length; level++) {\n        for (let i = 0; i < paths[level]; i++) {\n          if (!curr) {\n            return null;\n          }\n          curr = await curr.getNext();\n        }\n\n        if (level !== paths.length - 1) {\n          curr = await curr.getFirstChild();\n        }\n      }\n\n      if (await this.isValid(curr)) {\n        return curr;\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  isAncestor(outline, targetOutline) {\n    if (outline === targetOutline) {\n      return false;\n    }\n    let parentOutline = outline.parent;\n    while (parentOutline) {\n      if (parentOutline === targetOutline) {\n        return true;\n      }\n      parentOutline = parentOutline.parent;\n    }\n    return false;\n  },\n  getPathArray(outline) {\n    const paths = [];\n\n    let curr = outline;\n    while (curr) {\n      paths.push(curr.getIndex());\n      curr = curr.getParent();\n    }\n\n    return paths;\n  },\n  getPath(outline) {\n    return this.getPathArray(outline).reverse().join(this.getSplitter());\n  },\n  getNestedLevel(outline) {\n    return this.getPathArray(outline).length - 1;\n  },\n  getSplitter() {\n    return '-';\n  },\n  async isValid(pdfnetOutline) {\n    // eslint-disable-next-line no-return-await\n    return pdfnetOutline && (await pdfnetOutline.isValid());\n  },\n};\n\nexport default Object.create(OutlineUtils);\n","import React, { useContext, useState, useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport OutlineContext from 'components/Outline/Context';\n\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport selectors from 'selectors';\n\nimport './OutlineControls.scss';\nimport DataElements from 'src/constants/dataElement';\n\nconst OutlineControls = () => {\n  const outlines = useSelector((state) => selectors.getOutlines(state));\n  const {\n    activeOutlinePath,\n    setActiveOutlinePath,\n    updateOutlines\n  } = useContext(OutlineContext);\n  const [canMove, setCanMove] = useState({ up: false, down: false, outward: false, inward: false });\n  const nextIndexRef = useRef(null);\n  const [t] = useTranslation();\n\n  useEffect(() => {\n    if (!core.isFullPDFEnabled()) {\n      return;\n    }\n\n    const setCanMoveState = async () => {\n      setCanMove(await outlineUtils.getCanMoveState(activeOutlinePath));\n    };\n\n    setCanMoveState();\n  }, [activeOutlinePath]);\n\n  useEffect(() => {\n    if (nextIndexRef.current !== null) {\n      setActiveOutlinePath(nextIndexRef.current);\n      nextIndexRef.current = null;\n    }\n  }, [outlines, setActiveOutlinePath]);\n\n  const moveOutlineUp = async () => {\n    const nextIndex = await outlineUtils.moveOutlineUp(activeOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  };\n\n  const moveOutlineDown = async () => {\n    const nextIndex = await outlineUtils.moveOutlineDown(activeOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  };\n\n  const moveOutlineOutward = async () => {\n    const nextIndex = await outlineUtils.moveOutlineOutward(activeOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  };\n\n  const moveOutlineInward = async () => {\n    const nextIndex = await outlineUtils.moveOutlineInward(activeOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  };\n\n  return (\n    <DataElementWrapper\n      className=\"OutlineControls\"\n      dataElement={DataElements.OUTLINE_CONTROLS}\n    >\n      <span className=\"reorderText\">\n        {t('option.bookmarkOutlineControls.reorder')}\n      </span>\n      <Button\n        img=\"icon-arrow-up\"\n        disabled={!canMove.up}\n        onClick={moveOutlineUp}\n        dataElement={DataElements.OUTLINE_MOVE_UP_BUTTON}\n      />\n      <Button\n        img=\"icon-arrow-down\"\n        disabled={!canMove.down}\n        onClick={moveOutlineDown}\n        dataElement={DataElements.OUTLINE_MOVE_DOWN_BUTTON}\n      />\n      <Button\n        img=\"icon-arrow-left\"\n        disabled={!canMove.outward}\n        onClick={moveOutlineOutward}\n        dataElement={DataElements.OUTLINE_MOVE_OUTWARD_BUTTON}\n      />\n      <Button\n        img=\"icon-arrow-right\"\n        disabled={!canMove.inward}\n        onClick={moveOutlineInward}\n        dataElement={DataElements.OUTLINE_MOVE_INWARD_BUTTON}\n      />\n    </DataElementWrapper>\n  );\n};\n\nexport default OutlineControls;\n","import OutlineControls from './OutlineControls';\n\nexport default OutlineControls;","import React, { useContext, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport core from 'core';\n\nimport Button from '../Button';\nimport MoreOptionsContextMenuPopup from '../MoreOptionsContextMenuPopup';\nimport OutlineContext from '../Outline/Context';\nimport './OutlineContent.scss';\n\nconst propTypes = {\n  text: PropTypes.string.isRequired,\n  outlinePath: PropTypes.string,\n  isAdding: PropTypes.bool,\n  isOutlineRenaming: PropTypes.bool,\n  setOutlineRenaming: PropTypes.func,\n  isOutlineChangingDest: PropTypes.bool,\n  setOutlineChangingDest: PropTypes.func,\n  setIsHovered: PropTypes.func,\n  onCancel: PropTypes.func,\n  textColor: PropTypes.string,\n};\n\nconst OutlineContent = ({\n  text,\n  outlinePath,\n  isAdding,\n  isOutlineRenaming,\n  setOutlineRenaming,\n  isOutlineChangingDest,\n  setOutlineChangingDest,\n  setIsHovered,\n  onCancel,\n  textColor,\n}) => {\n  const {\n    currentDestPage,\n    currentDestText,\n    editingOutlines,\n    setEditingOutlines,\n    isMultiSelectMode,\n    isOutlineEditable,\n    addNewOutline,\n    renameOutline,\n    updateOutlineDest,\n    updateOutlines,\n    removeOutlines,\n  } = useContext(OutlineContext);\n\n  const [t] = useTranslation();\n  const TOOL_NAME = 'OutlineDestinationCreateTool';\n\n  const [isDefault, setIsDefault] = useState(false);\n  const [outlineText, setOutlineText] = useState(text);\n  const [isContextMenuOpen, setContextMenuOpen] = useState(false);\n  const inputRef = useRef();\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.stopPropagation();\n      if (isAdding) {\n        onAddOutline();\n      }\n      if (isOutlineRenaming && !isRenameButtonDisabled()) {\n        onRenameOutline();\n      }\n    }\n    if (e.key === 'Escape') {\n      onCancelOutline();\n    }\n  };\n\n  const onAddOutline = () => {\n    addNewOutline(outlineText.trim() === '' ? '' : outlineText);\n  };\n\n  const onRenameOutline = () => {\n    setOutlineRenaming(false);\n    renameOutline(outlinePath, outlineText);\n  };\n\n  const onCancelOutline = () => {\n    updateOutlines();\n    if (isOutlineRenaming) {\n      setOutlineRenaming(false);\n      setOutlineText(text);\n    }\n    if (isOutlineChangingDest) {\n      setOutlineChangingDest(false);\n    }\n    if (isAdding) {\n      onCancel();\n    }\n  };\n\n  const isRenameButtonDisabled = () => {\n    return !outlineText || text === outlineText;\n  };\n\n  useEffect(() => {\n    if (outlineText !== text) {\n      setOutlineText(text);\n    }\n  }, [text]);\n\n  useEffect(() => {\n    if (isAdding || isOutlineRenaming) {\n      inputRef.current.focus();\n      inputRef.current.select();\n    }\n\n    setIsDefault(!isAdding && !isOutlineRenaming && !isOutlineChangingDest);\n  }, [isOutlineRenaming, isOutlineChangingDest]);\n\n  useEffect(() => {\n    const editingOutlinesClone = { ...editingOutlines };\n    const isOutlineEditing = isOutlineRenaming || isOutlineChangingDest;\n    if (isOutlineEditing) {\n      editingOutlinesClone[outlinePath] = (isOutlineEditing);\n    } else {\n      delete editingOutlinesClone[outlinePath];\n    }\n    setEditingOutlines({ ...editingOutlinesClone });\n  }, [isOutlineRenaming, isOutlineChangingDest]);\n\n  useEffect(() => {\n    if (!isAdding) {\n      setIsHovered(isContextMenuOpen);\n    }\n  }, [isContextMenuOpen]);\n\n  const textStyle = {\n    color: textColor || 'auto'\n  };\n\n  return (\n    <div className=\"bookmark-outline-label-row\">\n      {isAdding &&\n        <div className=\"bookmark-outline-label\">\n          {t('component.newOutlineTitle')}\n        </div>\n      }\n\n      {isDefault &&\n        <>\n          <div\n            className=\"bookmark-outline-text outline-text\"\n            onDoubleClick={() => {\n              if (isOutlineEditable) {\n                setOutlineRenaming(true);\n              }\n            }}\n            style={textStyle}\n          >\n            {text}\n          </div>\n\n          {isOutlineEditable &&\n            <Button\n              className=\"bookmark-outline-more-button\"\n              dataElement={`outline-more-button-${outlinePath}`}\n              img=\"icon-tool-more\"\n              tabIndex={-1}\n              onClick={(e) => {\n                e.stopPropagation();\n                setContextMenuOpen(true);\n              }}\n            />\n          }\n          {isContextMenuOpen &&\n            <MoreOptionsContextMenuPopup\n              type={'outline'}\n              anchorButton={`outline-more-button-${outlinePath}`}\n              shouldDisplayDeleteButton={!isMultiSelectMode}\n              onClosePopup={() => setContextMenuOpen(false)}\n              onRenameClick={() => {\n                setContextMenuOpen(false);\n                setOutlineRenaming(true);\n              }}\n              onSetDestinationClick={() => {\n                setContextMenuOpen(false);\n                setOutlineChangingDest(true);\n                core.setToolMode(TOOL_NAME);\n              }}\n              onDeleteClick={() => {\n                setContextMenuOpen(false);\n                removeOutlines([outlinePath]);\n              }}\n            />\n          }\n        </>\n      }\n\n      {isOutlineChangingDest &&\n        <div\n          className=\"bookmark-outline-text outline-text\"\n          style={textStyle}\n        >\n          {text}\n        </div>\n      }\n\n      {(isAdding || isOutlineRenaming) &&\n        <input\n          type=\"text\"\n          name=\"outline\"\n          ref={inputRef}\n          className=\"bookmark-outline-input\"\n          placeholder={t('component.outlineTitle')}\n          aria-label={t('action.name')}\n          value={outlineText}\n          onKeyDown={handleKeyDown}\n          onChange={(e) => setOutlineText(e.target.value)}\n        />\n      }\n\n      {(isAdding || isOutlineChangingDest) &&\n        <div className=\"outline-destination\">\n          {t('component.destination')}: {t('component.bookmarkPage')} {currentDestPage},\n          <span style={{ fontStyle: 'italic' }}> “{currentDestText}”</span>\n        </div>\n      }\n\n      {(isAdding || isOutlineRenaming || isOutlineChangingDest) &&\n        <div className=\"bookmark-outline-editing-controls\">\n          <Button\n            className=\"bookmark-outline-cancel-button\"\n            label={t('action.cancel')}\n            onClick={onCancelOutline}\n          />\n          {isAdding &&\n            <Button\n              className=\"bookmark-outline-save-button\"\n              label={t('action.add')}\n              isSubmitType={true}\n              onClick={onAddOutline}\n            />\n          }\n          {isOutlineRenaming &&\n            <Button\n              className=\"bookmark-outline-save-button\"\n              label={t('action.save')}\n              isSubmitType={true}\n              disabled={isRenameButtonDisabled()}\n              onClick={onRenameOutline}\n            />\n          }\n          {isOutlineChangingDest &&\n            <Button\n              className=\"bookmark-outline-save-button\"\n              label={t('action.save')}\n              isSubmitType={true}\n              onClick={() => {\n                setOutlineChangingDest(false);\n                updateOutlineDest(outlinePath);\n              }}\n            />\n          }\n        </div>\n      }\n    </div>\n  );\n};\n\nOutlineContent.propTypes = propTypes;\n\nexport default OutlineContent;\n","import OutlineContent from './OutlineContent';\n\nexport default OutlineContent;\n","import React, { useState, useCallback, useContext, useEffect, useLayoutEffect, forwardRef, useImperativeHandle, useRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { ItemTypes, DropLocation, BUFFER_ROOM } from 'constants/dnd';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport Events from 'constants/events';\nimport fireEvent from 'helpers/fireEvent';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport { isMobile, isIE } from 'helpers/device';\nimport OutlineContext from './Context';\nimport OutlineContent from 'src/components/OutlineContent';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Choice from '../Choice';\nimport Button from '../Button';\n\nimport './Outline.scss';\n\nconst propTypes = {\n  outline: PropTypes.object.isRequired,\n  setMultiSelected: PropTypes.func,\n  moveOutlineInward: PropTypes.func.isRequired,\n  moveOutlineBeforeTarget: PropTypes.func.isRequired,\n  moveOutlineAfterTarget: PropTypes.func.isRequired,\n  connectDragSource: PropTypes.func,\n  connectDragPreview: PropTypes.func,\n  connectDropTarget: PropTypes.func,\n  isDragging: PropTypes.bool,\n  isDraggedUpwards: PropTypes.bool,\n  isDraggedDownwards: PropTypes.bool,\n};\n\nconst Outline = forwardRef(\n  function Outline(\n    {\n      outline,\n      setMultiSelected,\n      isDragging,\n      isDraggedUpwards,\n      isDraggedDownwards,\n      connectDragSource,\n      connectDragPreview,\n      connectDropTarget,\n      moveOutlineInward,\n      moveOutlineBeforeTarget,\n      moveOutlineAfterTarget\n    },\n    ref\n  ) {\n    const outlines = useSelector((state) => selectors.getOutlines(state));\n    const {\n      setActiveOutlinePath,\n      activeOutlinePath,\n      isOutlineActive,\n      setAddingNewOutline,\n      isAddingNewOutline,\n      isAnyOutlineRenaming,\n      isMultiSelectMode,\n      shouldAutoExpandOutlines,\n      isOutlineEditable,\n      selectedOutlines,\n      updateOutlines,\n    } = useContext(OutlineContext);\n\n    const outlinePath = outlineUtils.getPath(outline);\n\n    const [isExpanded, setIsExpanded] = useState(shouldAutoExpandOutlines);\n    const [isSelected, setIsSelected] = useState(selectedOutlines.includes(outlinePath));\n    const [isRenaming, setIsRenaming] = useState(false);\n    const [isChangingDest, setChangingDest] = useState(false);\n    const [isHovered, setHovered] = useState(false); // when the popup menu is open, the container will have a background\n    const [clearSingleClick, setClearSingleClick] = useState(undefined);\n\n    const dispatch = useDispatch();\n\n    const elementRef = useRef(null);\n    connectDragSource(elementRef);\n    connectDragPreview(getEmptyImage(), { captureDraggingState: true });\n    connectDropTarget(elementRef);\n    const opacity = isDragging ? 0.5 : 1;\n    useImperativeHandle(ref, () => ({\n      getNode: () => elementRef.current,\n    }));\n\n    useEffect(() => {\n      const shouldExpandOutline =\n        activeOutlinePath !== null\n        && activeOutlinePath !== outlinePath\n        && activeOutlinePath.startsWith(outlinePath);\n      if (shouldExpandOutline) {\n        setIsExpanded(true);\n      }\n    }, [activeOutlinePath, isAddingNewOutline, outline]);\n\n    useLayoutEffect(() => {\n      setIsExpanded(shouldAutoExpandOutlines);\n    }, [shouldAutoExpandOutlines]);\n\n    useLayoutEffect(() => {\n      setIsRenaming(false);\n      setChangingDest(false);\n    }, [outlines]);\n\n    useEffect(() => {\n      setIsSelected(selectedOutlines.includes(outlinePath));\n    }, [selectedOutlines]);\n\n    const toggleOutline = useCallback(() => {\n      setIsExpanded((expand) => !expand);\n    }, []);\n\n    const onSingleClick = useCallback(() => {\n      core.goToOutline(outline);\n\n      outlinePath === activeOutlinePath\n        ? setActiveOutlinePath(null)\n        : setActiveOutlinePath(outlinePath);\n\n\n      if (isAddingNewOutline) {\n        setAddingNewOutline(false);\n        updateOutlines();\n      }\n\n      if (isMobile()) {\n        dispatch(actions.closeElement('leftPanel'));\n      }\n    }, [dispatch, setActiveOutlinePath, activeOutlinePath, isAddingNewOutline, outline]);\n\n    const isActive = isOutlineActive(outline);\n\n    const convertRgbObjectToRgbString = (rgbObject) => {\n      const rValue = rgbObject['r'] * 255;\n      const gValue = rgbObject['g'] * 255;\n      const bValue = rgbObject['b'] * 255;\n      return `rgb(${rValue}, ${gValue}, ${bValue})`;\n    };\n\n    return (\n      <div\n        ref={(!isAddingNewOutline && !isAnyOutlineRenaming && isMultiSelectMode && isOutlineEditable) ? elementRef : null}\n        className=\"outline-drag-container\"\n        style={{ opacity }}\n      >\n        <div className=\"outline-drag-line\" style={{ opacity: isDraggedUpwards ? 1 : 0 }} />\n        <DataElementWrapper\n          className={classNames({\n            'bookmark-outline-single-container': true,\n            'editing': isRenaming || isChangingDest,\n            'default': !isRenaming && !isChangingDest,\n            'selected': isActive,\n            'hover': isHovered && !isActive,\n          })}\n          tabIndex={0}\n          onKeyDown={(e) => e.key === 'Enter' && onSingleClick()}\n          onClick={(e) => {\n            if (!isRenaming && !isChangingDest && e.detail === 1) {\n              setClearSingleClick(setTimeout(onSingleClick, 300));\n            }\n          }}\n          onDoubleClick={() => {\n            if (!isRenaming && !isChangingDest) {\n              clearTimeout(clearSingleClick);\n            }\n          }}\n        >\n          {isMultiSelectMode &&\n            <Choice\n              type=\"checkbox\"\n              className=\"bookmark-outline-checkbox\"\n              id={`outline-checkbox-${outlinePath}`}\n              checked={isSelected}\n              onClick={(e) => e.stopPropagation()}\n              onChange={(e) => {\n                setIsSelected(e.target.checked);\n                setMultiSelected(outlinePath, e.target.checked);\n              }}\n            />\n          }\n\n          <div\n            className={classNames({\n              'outline-treeview-toggle': true,\n              expanded: isExpanded,\n            })}\n            style={{ marginLeft: outlineUtils.getNestedLevel(outline) * 12 }}\n          >\n            {outline.getChildren().length > 0 &&\n              <Button\n                img=\"icon-chevron-right\"\n                tabIndex={0}\n                onClick={(e) => {\n                  e.stopPropagation();\n                  toggleOutline();\n                }}\n              />\n            }\n          </div>\n\n          <OutlineContent\n            text={outline.getName()}\n            outlinePath={outlinePath}\n            isOutlineRenaming={isRenaming}\n            setOutlineRenaming={setIsRenaming}\n            isOutlineChangingDest={isChangingDest}\n            setOutlineChangingDest={setChangingDest}\n            setIsHovered={setHovered}\n            textColor={outline.color ? convertRgbObjectToRgbString(outline.color) : null}\n          />\n        </DataElementWrapper>\n\n        <div className=\"outline-drag-line\" style={{ opacity: isDraggedDownwards ? 1 : 0 }} />\n\n        {isExpanded &&\n          outline.getChildren().map((child) => (\n            <OutlineNested\n              outline={child}\n              key={outlineUtils.getOutlineId(child)}\n              setMultiSelected={setMultiSelected}\n              moveOutlineInward={moveOutlineInward}\n              moveOutlineBeforeTarget={moveOutlineBeforeTarget}\n              moveOutlineAfterTarget={moveOutlineAfterTarget}\n            />\n          ))\n        }\n        {isAddingNewOutline && isActive && (\n          <DataElementWrapper className=\"bookmark-outline-single-container editing\">\n            <div\n              className=\"outline-treeview-toggle\"\n              style={{ marginLeft: outlineUtils.getNestedLevel(outline) * 12 }}\n            ></div>\n            <OutlineContent\n              isAdding={true}\n              text={''}\n              onCancel={() => setAddingNewOutline(false)}\n            />\n          </DataElementWrapper>\n        )}\n      </div>\n    );\n  }\n);\n\nOutline.propTypes = propTypes;\n\nconst OutlineNested = DropTarget(\n  ItemTypes.OUTLINE,\n  {\n    hover(props, dropTargetMonitor, dropTargetContainer) {\n      if (!dropTargetContainer) {\n        return;\n      }\n\n      const dragObject = dropTargetMonitor.getItem();\n      if (!dragObject) {\n        return;\n      }\n\n      const { dragOutline, dragSourceNode } = dragObject;\n      const { outline: dropOutline } = props;\n\n      const dropTargetNode = dropTargetContainer.getNode();\n      if (!dragSourceNode || !dropTargetNode) {\n        return;\n      }\n\n      const outlineIsBeingDraggedIntoDescendant = dragSourceNode.contains(dropTargetNode);\n      if (outlineIsBeingDraggedIntoDescendant) {\n        dragObject.dropTargetNode = undefined;\n        dragObject.dropLocation = DropLocation.INITIAL;\n        return;\n      }\n\n      dragObject.dropTargetNode = dropTargetNode;\n      const dragIndex = dragOutline.index;\n      const hoverIndex = dropOutline.index;\n      if (dragOutline.parent === dropOutline.parent && dragIndex === hoverIndex) {\n        return;\n      }\n\n      const dropTargetBoundingRect = dropTargetNode.getBoundingClientRect();\n      const dropTargetVerticalMiddlePoint = (dropTargetBoundingRect.bottom - dropTargetBoundingRect.top) / 2;\n      const clientOffset = dropTargetMonitor.getClientOffset();\n      const dropTargetClientY = clientOffset.y - dropTargetBoundingRect.top;\n      switch (true) {\n        case dropTargetClientY <= dropTargetVerticalMiddlePoint + BUFFER_ROOM && dropTargetClientY >= dropTargetVerticalMiddlePoint - BUFFER_ROOM:\n          dragObject.dropLocation = DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT;\n          if (dropTargetMonitor.isOver({ shallow: true })) {\n            dropTargetNode.classList.add('isNesting');\n          }\n          setTimeout(() => {\n            if (dragObject?.dropTargetNode !== dropTargetNode) {\n              dropTargetNode.classList.remove('isNesting');\n            }\n          }, 100);\n          break;\n        case dropTargetClientY > dropTargetVerticalMiddlePoint + BUFFER_ROOM:\n          dragObject.dropLocation = DropLocation.BELOW_TARGET;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n        case dropTargetClientY < dropTargetVerticalMiddlePoint - BUFFER_ROOM:\n          dragObject.dropLocation = DropLocation.ABOVE_TARGET;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n        default:\n          dragObject.dropLocation = DropLocation.INITIAL;\n          dropTargetNode.classList.remove('isNesting');\n          break;\n      }\n      fireEvent(Events.DRAG_OUTLINE,\n        {\n          targetOutline: dropOutline,\n          draggedOutline: dragObject.dragOutline,\n          dropLocation: dragObject.dropLocation\n        }\n      );\n    },\n    drop(props, dropTargetMonitor, dropTargetContainer) {\n      if (!dropTargetContainer) {\n        return;\n      }\n      const dragObject = dropTargetMonitor.getItem();\n      const { dragOutline, dropTargetNode } = dragObject;\n      const { outline: dropOutline, moveOutlineInward, moveOutlineBeforeTarget, moveOutlineAfterTarget } = props;\n\n      if (!dropTargetNode) {\n        return;\n      }\n\n      switch (dragObject.dropLocation) {\n        case DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT:\n          moveOutlineInward(dragOutline, dropOutline);\n          break;\n        case DropLocation.ABOVE_TARGET:\n          moveOutlineBeforeTarget(dragOutline, dropOutline);\n          break;\n        case DropLocation.BELOW_TARGET:\n          moveOutlineAfterTarget(dragOutline, dropOutline);\n          break;\n        default:\n          break;\n      }\n      dropTargetNode.classList.remove('isNesting');\n      fireEvent(Events.DROP_OUTLINE,\n        {\n          targetOutline: dropOutline,\n          draggedOutline: dragOutline,\n          dropLocation: dragObject.dropLocation\n        }\n      );\n      dragObject.dropLocation = DropLocation.INITIAL;\n    }\n  },\n  (connect, dropTargetState) => ({\n    connectDropTarget: connect.dropTarget(),\n    isDraggedUpwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.ABOVE_TARGET),\n    isDraggedDownwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.BELOW_TARGET),\n  })\n)(DragSource(\n  ItemTypes.OUTLINE,\n  {\n    beginDrag: (props, dragSourceMonitor, dragSourceContainer) => ({\n      sourceId: dragSourceMonitor.sourceId,\n      dragOutline: props.outline,\n      dragSourceNode: dragSourceContainer.getNode(),\n      dropLocation: DropLocation.INITIAL,\n    }),\n    canDrag() {\n      if (isIE) {\n        console.warn('Drag and drop outlines for IE11 is not supported');\n        return false;\n      }\n      if (!core.isFullPDFEnabled()) {\n        console.warn('Full API must be enabled to drag and drop outlines');\n        return false;\n      }\n      return true;\n    }\n  },\n  (connect, dragSourceState) => ({\n    connectDragSource: connect.dragSource(),\n    connectDragPreview: connect.dragPreview(),\n    isDragging: dragSourceState.isDragging(),\n  })\n)(Outline));\n\nOutlineNested.propTypes = propTypes;\n\nexport default OutlineNested;\n","import Outline from './Outline';\n\nexport default Outline;\n","import React from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport { ItemTypes } from 'constants/dnd';\n\nconst layerStyles = {\n  position: 'fixed',\n  pointerEvents: 'none',\n  zIndex: 99999,\n  left: 0,\n  top: 0,\n  width: '100%',\n  height: '100%'\n};\n\nconst getItemStyles = (initialOffset, currentOffset) => {\n  if (!initialOffset || !currentOffset) {\n    return {\n      display: 'none'\n    };\n  }\n  const { x, y } = currentOffset;\n  const transform = `translate(calc(${x}px - 50%), calc(${y}px - 100%))`;\n  return {\n    transform,\n    WebkitTransform: transform,\n  };\n};\n\nexport const OutlinesDragLayer = () => {\n  const {\n    itemType,\n    item,\n    isDragging,\n    initialOffset,\n    currentOffset\n  } = useDragLayer((dragLayerState) => ({\n    itemType: dragLayerState.getItemType(),\n    item: dragLayerState.getItem(),\n    isDragging: dragLayerState.isDragging(),\n    initialOffset: dragLayerState.getInitialSourceClientOffset(),\n    currentOffset: dragLayerState.getClientOffset(),\n  }));\n\n  const renderDragItem = () => {\n    if (!item) {\n      return null;\n    }\n\n    const { dragOutline } = item;\n\n    switch (itemType) {\n      case ItemTypes.OUTLINE:\n        return (\n          <>\n            {dragOutline.getName()}\n          </>\n        );\n      default:\n        return null;\n    }\n  };\n\n  if (!isDragging) {\n    return null;\n  }\n\n  return (\n    <div style={layerStyles}>\n      <div\n        className=\"bookmark-outline-single-container preview\"\n        style={getItemStyles(initialOffset, currentOffset)}\n      >\n        {renderDragItem()}\n      </div>\n    </div>\n  );\n};\n","import React, { useState, useLayoutEffect, useRef, useEffect } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { DndProvider } from 'react-dnd';\nimport { isMobileDevice } from 'helpers/device';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport TouchBackEnd from 'react-dnd-touch-backend';\nimport OutlineControls from '../OutlineControls';\nimport Outline from 'components/Outline';\nimport OutlineContext from 'components/Outline/Context';\nimport Button from 'components/Button';\nimport OutlineContent from 'components/OutlineContent';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport '../../constants/bookmarksOutlinesShared.scss';\nimport './OutlinesPanel.scss';\nimport { OutlinesDragLayer } from './OutlinesDragLayer';\n\nconst OutlinesPanel = () => {\n  const [\n    isDisabled,\n    outlines,\n    outlineControlVisibility,\n    outlineEditingEnabled,\n    shouldAutoExpandOutlines,\n    currentPage,\n    pageLabels,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, DataElements.OUTLINE_PANEL),\n      selectors.getOutlines(state),\n      selectors.isOutlineControlVisible(state),\n      selectors.getOutlineEditingEnabled(state),\n      selectors.shouldAutoExpandOutlines(state),\n      selectors.getCurrentPage(state),\n      selectors.getPageLabels(state),\n    ],\n    shallowEqual,\n  );\n\n  const defaultDestText = 'Full Page';\n  const areaDestinationText = 'Area Selection';\n  const defaultDestCoord = { x: 0, y: 0 };\n\n  const [currentDestText, setCurrentDestText] = useState(defaultDestText);\n  const [currentDestCoord, setCurrentDestCoord] = useState(defaultDestCoord);\n  const [currentDestPage, setCurrentDestPage] = useState(currentPage);\n  const [isOutlineEditable, setOutlineEditable] = useState(false);\n  const [activeOutlinePath, setActiveOutlinePath] = useState(null);\n  const [isAddingNewOutline, setAddingNewOutline] = useState(false);\n  const [editingOutlines, setEditingOutlines] = useState({});\n  const [isAnyOutlineRenaming, setAnyOutlineRenaming] = useState(false);\n  const [isMultiSelectMode, setMultiSelectMode] = useState(false);\n  const [selectedOutlines, setSelectedOutlines] = useState([]);\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n  const nextPathRef = useRef(null);\n  const TOOL_NAME = 'OutlineDestinationCreateTool';\n  const tool = core.getTool(TOOL_NAME);\n\n  useLayoutEffect(() => {\n    setAddingNewOutline(false);\n\n    if (nextPathRef.current !== null) {\n      setActiveOutlinePath(nextPathRef.current);\n      nextPathRef.current = null;\n    }\n\n    const shouldResetMultiSelectedMode = outlines.length === 0;\n    if (shouldResetMultiSelectedMode) {\n      setMultiSelectMode(false);\n    }\n  }, [outlines]);\n\n  useEffect(() => {\n    setOutlineEditable(core.isFullPDFEnabled() && outlineEditingEnabled);\n  }, [outlineEditingEnabled]);\n\n  useEffect(() => {\n    const isAnyEditing = Object.values(editingOutlines).some((value) => value);\n    setAnyOutlineRenaming(isAnyEditing);\n  }, [editingOutlines, outlines]);\n\n  useEffect(() => {\n    const onSetDestination = (annotation) => {\n      setCurrentDestText(annotation['IsText'] ? annotation.getCustomData('trn-annot-preview') : areaDestinationText);\n      setCurrentDestCoord({ x: annotation['X'], y: annotation['Y'] });\n      setCurrentDestPage(annotation['PageNumber']);\n    };\n\n    const onOutlinesBookmarksChanged = () => {\n      core.getOutlines((outlines) => {\n        dispatch(actions.setOutlines(outlines));\n      });\n    };\n\n    const onDocumentLoaded = () => {\n      setActiveOutlinePath(null);\n    };\n\n    core.addEventListener('outlineSetDestination', onSetDestination);\n    window.addEventListener('outlineBookmarksChanged', onOutlinesBookmarksChanged);\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => {\n      core.removeEventListener('outlineSetDestination', onSetDestination);\n      window.removeEventListener('outlineBookmarksChanged', onOutlinesBookmarksChanged);\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n    };\n  }, []);\n\n  const getCurrentDestViewerCoord = (pageNum, { x, y }) => {\n    const doc = core.getDocumentViewer().getDocument();\n    // convert annotation coordinates to viewerCoordinates because PDFNet used PDF coordinates\n    return doc.getViewerCoordinates(pageNum, x, y);\n  };\n\n  const addNewOutline = async (name) => {\n    let { x, y } = getCurrentDestViewerCoord(currentDestPage, currentDestCoord);\n    let nextPath;\n    let outlineName = name;\n    if (![defaultDestText, areaDestinationText].includes(currentDestText) && !name) {\n      outlineName = currentDestText.slice(0, 40);\n    } else if (!name) {\n      outlineName = t('message.untitled');\n    }\n\n    const doc = core.getDocumentViewer().getDocument();\n\n    const pageRotation = doc.getPageRotation(currentDestPage) / 90;\n    if (pageRotation === window.Core.PageRotation.E_90 || pageRotation === window.Core.PageRotation.E_270) {\n      const tmp = x;\n      x = y;\n      y = tmp;\n    }\n    if (outlines.length === 0) {\n      nextPath = await outlineUtils.addRootOutline(outlineName, currentDestPage, x, y, 0);\n    } else {\n      nextPath = await outlineUtils.addNewOutline(outlineName, activeOutlinePath, currentDestPage, x, y, 0);\n    }\n\n    nextPathRef.current = nextPath;\n    updateOutlines();\n  };\n\n  const updateOutlines = () => {\n    core.getOutlines((outlines) => {\n      dispatch(actions.setOutlines(outlines));\n    });\n    clearOutlineDestination();\n    setEditingOutlines({});\n  };\n\n  const getPath = (outline) => {\n    return outlineUtils.getPath(outline);\n  };\n\n  const clearOutlineDestination = () => {\n    core.setToolMode(defaultTool);\n    setCurrentDestText(defaultDestText);\n    setCurrentDestCoord(defaultDestCoord);\n    setCurrentDestPage(currentPage);\n    tool.clearOutlineDestination();\n  };\n\n  const updateOutlineDest = async (outlinePath) => {\n    const { x, y } = getCurrentDestViewerCoord(currentDestPage, currentDestCoord);\n    await outlineUtils.setOutlineDestination(outlinePath, currentDestPage, x, y, 0);\n    nextPathRef.current = outlinePath;\n    updateOutlines();\n  };\n\n  useEffect(() => {\n    if (currentDestText === defaultDestText) {\n      setCurrentDestPage(currentPage);\n    }\n  }, [currentDestText, currentPage]);\n\n  useEffect(() => {\n    if (isAddingNewOutline) {\n      core.setToolMode(TOOL_NAME);\n    } else {\n      clearOutlineDestination();\n    }\n  }, [isAddingNewOutline]);\n\n  const generalMoveOutlineAction = (dragOutline, dropOutline, moveDirection) => {\n    const dragPath = getPath(dragOutline);\n    const dropPath = getPath(dropOutline);\n    setSelectedOutlines([]);\n\n    moveDirection.call(outlineUtils, dragPath, dropPath).then((path) => {\n      updateOutlines();\n      nextPathRef.current = path;\n    });\n    core.goToOutline(dragOutline);\n  };\n\n  const moveOutlineAfterTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineAfterTarget);\n  };\n\n  const moveOutlineBeforeTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineBeforeTarget);\n  };\n\n  const moveOutlineInward = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineInTarget);\n  };\n\n  const renameOutline = async (outlinePath, newName) => {\n    await outlineUtils.setOutlineName(outlinePath, newName);\n    updateOutlines();\n  };\n\n  const removeOutlines = async (outlinesToRemove) => {\n    outlinesToRemove.sort().reverse();\n    const confirmationWarning = {\n      message: t('warning.deleteOutline.message'),\n      title: t('warning.deleteOutline.title'),\n      confirmBtnText: t('action.delete'),\n      onConfirm: async () => {\n        for (let i = 0; i < outlinesToRemove.length; i++) {\n          const fullIndex = outlinesToRemove[i];\n          await outlineUtils.deleteOutline(fullIndex);\n        }\n        updateOutlines();\n        setActiveOutlinePath(null);\n        setSelectedOutlines([]);\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <div\n      className=\"Panel OutlinesPanel bookmark-outline-panel\"\n      data-element={DataElements.OUTLINE_PANEL}\n    >\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">\n          {t('component.outlinesPanel')}\n        </div>\n        {isOutlineEditable &&\n          (isMultiSelectMode ?\n            <Button\n              className=\"bookmark-outline-control-button\"\n              dataElement={DataElements.OUTLINE_MULTI_SELECT}\n              label={t('option.bookmarkOutlineControls.done')}\n              disabled={isAddingNewOutline}\n              onClick={() => setMultiSelectMode(false)}\n            />\n            :\n            <Button\n              className=\"bookmark-outline-control-button\"\n              dataElement={DataElements.OUTLINE_MULTI_SELECT}\n              label={t('action.edit')}\n              disabled={isAddingNewOutline || outlines.length === 0}\n              onClick={() => {\n                setMultiSelectMode(true);\n                setSelectedOutlines([]);\n              }}\n            />\n          )\n        }\n      </div>\n      <OutlineContext.Provider\n        value={{\n          currentDestPage: pageLabels[currentDestPage - 1],\n          currentDestText,\n          setActiveOutlinePath,\n          activeOutlinePath,\n          isOutlineActive: (outline) => getPath(outline) === activeOutlinePath,\n          setAddingNewOutline,\n          isAddingNewOutline,\n          setEditingOutlines,\n          editingOutlines,\n          selectedOutlines,\n          isAnyOutlineRenaming,\n          isMultiSelectMode,\n          shouldAutoExpandOutlines,\n          isOutlineEditable,\n          addNewOutline,\n          updateOutlines,\n          renameOutline,\n          updateOutlineDest,\n          removeOutlines,\n        }}\n      >\n        {outlineControlVisibility && <OutlineControls />}\n        <DndProvider backend={isMobileDevice ? TouchBackEnd : HTML5Backend}>\n          <OutlinesDragLayer />\n\n          <div className=\"bookmark-outline-row\">\n            {!isAddingNewOutline && outlines.length === 0 &&\n              <div className=\"msg msg-no-bookmark-outline\">{t('message.noOutlines')}</div>\n            }\n            {outlines.map((outline) => (\n              <Outline\n                key={outlineUtils.getOutlineId(outline)}\n                outline={outline}\n                setMultiSelected={(path, value) => {\n                  if (selectedOutlines.find((outline) => outline === path)) {\n                    if (!value) {\n                      setSelectedOutlines(selectedOutlines.filter((outline) => outline !== path));\n                    }\n                  } else {\n                    if (value) {\n                      setSelectedOutlines([...selectedOutlines, path]);\n                    }\n                  }\n                }}\n                moveOutlineInward={moveOutlineInward}\n                moveOutlineBeforeTarget={moveOutlineBeforeTarget}\n                moveOutlineAfterTarget={moveOutlineAfterTarget}\n              />\n            ))}\n            {isAddingNewOutline && activeOutlinePath === null && (\n              <DataElementWrapper className=\"bookmark-outline-single-container editing\">\n                <OutlineContent\n                  isAdding={true}\n                  text={''}\n                  onCancel={() => setAddingNewOutline(false)}\n                />\n              </DataElementWrapper>\n            )}\n          </div>\n        </DndProvider>\n\n        {isOutlineEditable &&\n          <DataElementWrapper\n            className=\"bookmark-outline-footer\"\n            dataElement={DataElements.OUTLINE_ADD_NEW_BUTTON_CONTAINER}\n          >\n            {isMultiSelectMode ?\n              <>\n                <Button\n                  className=\"multi-selection-button\"\n                  img=\"icon-menu-add\"\n                  disabled={selectedOutlines.length > 0 || isAddingNewOutline}\n                  onClick={() => setAddingNewOutline(true)}\n                />\n                <Button\n                  className=\"multi-selection-button\"\n                  img=\"icon-delete-line\"\n                  disabled={selectedOutlines.length === 0}\n                  onClick={() => removeOutlines(selectedOutlines)}\n                />\n              </>\n              :\n              <Button\n                className=\"bookmark-outline-control-button add-new-button\"\n                img=\"icon-menu-add\"\n                dataElement={DataElements.OUTLINE_ADD_NEW_BUTTON}\n                disabled={isAddingNewOutline}\n                label={`${t('action.add')} ${t('component.outlinePanel')}`}\n                onClick={() => setAddingNewOutline(true)}\n              />\n            }\n          </DataElementWrapper>\n        }\n      </OutlineContext.Provider>\n    </div>\n  );\n};\n\nexport default React.memo(OutlinesPanel);\n","import OutlinesPanel from './OutlinesPanel';\n\nexport default OutlinesPanel;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport core from 'core';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport DataElementWrapper from '../DataElementWrapper';\nimport MoreOptionsContextMenuPopup from '../MoreOptionsContextMenuPopup';\nimport Choice from 'components/Choice';\n\nconst propTypes = {\n  text: PropTypes.string.isRequired,\n  label: PropTypes.string.isRequired,\n  defaultLabel: PropTypes.string,\n  pageIndex: PropTypes.number.isRequired,\n  isAdding: PropTypes.bool,\n  isMultiSelectionMode: PropTypes.bool,\n  setSelected: PropTypes.func,\n  onSave: PropTypes.func.isRequired,\n  onRemove: PropTypes.func,\n  onCancel: PropTypes.func,\n  panelSelector: PropTypes.string,\n};\n\nconst Bookmark = ({\n  text,\n  label,\n  defaultLabel,\n  pageIndex,\n  isAdding,\n  isMultiSelectionMode,\n  setSelected,\n  onSave,\n  onRemove,\n  onCancel,\n  panelSelector,\n}) => {\n  const [t] = useTranslation();\n\n  const [isEditing, setIsEditing] = useState(false);\n  const [isDefault, setIsDefault] = useState(false);\n  const [bookmarkText, setBookmarkText] = useState(text);\n  const [isContextMenuOpen, setContextMenuOpen] = useState(false);\n  const [clearSingleClick, setClearSingleClick] = useState(undefined);\n  const inputRef = useRef();\n\n  const isRenameButtonDisabled = () => {\n    return !bookmarkText || text === bookmarkText;\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.stopPropagation();\n      if (isAdding || (isEditing && !isRenameButtonDisabled())) {\n        onSaveBookmark();\n      }\n    }\n    if (e.key === 'Escape') {\n      onCancelBookmark();\n    }\n  };\n\n  const onSaveBookmark = () => {\n    setIsEditing(false);\n    onSave(bookmarkText.trim() === '' ? t('message.untitled') : bookmarkText);\n  };\n\n  const onCancelBookmark = () => {\n    setIsEditing(false);\n    // on cancel reset local bookmark text\n    isEditing && setBookmarkText(text);\n    isAdding && onCancel();\n  };\n\n  const setCurrentPage = (pageIndex) => {\n    core.setCurrentPage(pageIndex + 1);\n  };\n\n  useEffect(() => {\n    if (bookmarkText !== text) {\n      setBookmarkText(text);\n    }\n  }, [text]);\n\n  useEffect(() => {\n    if (isAdding || isEditing) {\n      inputRef.current.focus();\n      inputRef.current.select();\n    }\n\n    if (!isAdding && !isEditing) {\n      setIsDefault(true);\n    } else {\n      setIsDefault(false);\n    }\n  }, [isEditing]);\n\n  return (\n    <DataElementWrapper\n      className={classNames({\n        'bookmark-outline-single-container': true,\n        'editing': isAdding || isEditing,\n        'default': isDefault,\n        'hover': isContextMenuOpen,\n      })}\n      tabIndex={0}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter') {\n          setCurrentPage(pageIndex);\n        }\n      }}\n      onClick={(e) => {\n        if (isDefault && e.detail === 1) {\n          setClearSingleClick(setTimeout(() => {\n            setCurrentPage(pageIndex);\n          }, 300));\n        }\n      }}\n      onDoubleClick={() => {\n        if (isDefault) {\n          clearTimeout(clearSingleClick);\n        }\n      }}\n    >\n      {isMultiSelectionMode &&\n        <Choice\n          type=\"checkbox\"\n          className=\"bookmark-outline-checkbox\"\n          id={`bookmark-checkbox-${pageIndex + 1}`}\n          onClick={(e) => e.stopPropagation()}\n          onChange={(e) => setSelected(pageIndex, e.target.checked)}\n        />\n      }\n\n      <div className=\"bookmark-outline-label-row\">\n        <div className=\"bookmark-outline-label\">{(isAdding || isEditing) ? label : defaultLabel}</div>\n\n        {isDefault &&\n          <>\n            {isMultiSelectionMode &&\n              <Button\n                className=\"bookmark-outline-more-button\"\n                dataElement={`bookmark-more-button-${pageIndex}`}\n                img=\"icon-pencil-line\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                  setIsEditing(true);\n                }}\n                tabIndex={-1}\n              />\n            }\n            {!isMultiSelectionMode &&\n              <Button\n                className=\"bookmark-outline-more-button\"\n                dataElement={`bookmark-more-button-${panelSelector}-${pageIndex}`}\n                img=\"icon-tool-more\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                  setContextMenuOpen(true);\n                }}\n                tabIndex={-1}\n              />\n            }\n            {isContextMenuOpen && (\n              <MoreOptionsContextMenuPopup\n                type={'bookmark'}\n                anchorButton={`bookmark-more-button-${panelSelector}-${pageIndex}`}\n                shouldDisplayDeleteButton={true}\n                onClosePopup={() => setContextMenuOpen(false)}\n                onRenameClick={() => {\n                  setContextMenuOpen(false);\n                  setIsEditing(true);\n                }}\n                onDeleteClick={() => {\n                  setContextMenuOpen(false);\n                  onRemove(pageIndex);\n                }}\n              />\n            )}\n\n            <div\n              className=\"bookmark-outline-text bookmark-text-input\"\n              onDoubleClick={() => setIsEditing(true)}\n            >\n              {text}\n            </div>\n          </>\n        }\n\n        {(isAdding || isEditing) &&\n          <>\n            <input\n              type=\"text\"\n              name=\"bookmark\"\n              ref={inputRef}\n              className=\"bookmark-outline-input bookmark-text-input\"\n              placeholder={t('component.bookmarkTitle')}\n              aria-label={t('action.name')}\n              value={bookmarkText}\n              onKeyDown={handleKeyDown}\n              onChange={(e) => setBookmarkText(e.target.value)}\n            />\n\n            <div className=\"bookmark-outline-editing-controls\">\n              <Button\n                className=\"bookmark-outline-cancel-button\"\n                label={t('action.cancel')}\n                onClick={onCancelBookmark}\n              />\n              {isAdding &&\n                <Button\n                  className=\"bookmark-outline-save-button\"\n                  label={t('action.add')}\n                  isSubmitType\n                  onClick={onSaveBookmark}\n                />\n              }\n              {isEditing &&\n                <Button\n                  className=\"bookmark-outline-save-button\"\n                  label={t('action.save')}\n                  isSubmitType\n                  disabled={isRenameButtonDisabled()}\n                  onClick={onSaveBookmark}\n                />\n              }\n            </div>\n          </>\n        }\n      </div>\n    </DataElementWrapper>\n  );\n};\n\nBookmark.propTypes = propTypes;\n\nexport default Bookmark;\n","import Bookmark from './Bookmark';\n\nexport default Bookmark;\n","import React, { useEffect, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport Bookmark from 'components/Bookmark';\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport DataElements from 'constants/dataElement';\nimport Choice from 'components/Choice';\n\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport '../../constants/bookmarksOutlinesShared.scss';\nimport './BookmarksPanel.scss';\n\nconst BookmarksPanel = ({ panelSelector }) => {\n  const [\n    isDisabled,\n    bookmarks,\n    currentPageIndex,\n    pageLabels,\n    isBookmarkIconShortcutVisible\n  ] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, DataElements.BOOKMARK_PANEL),\n      selectors.getBookmarks(state),\n      selectors.getCurrentPage(state) - 1,\n      selectors.getPageLabels(state),\n      selectors.isBookmarkIconShortcutVisible(state),\n    ],\n    shallowEqual,\n  );\n\n  const [isAddingNewBookmark, setAddingNewBookmark] = useState(false);\n  const [isMultiSelectionMode, setMultiSelectionMode] = useState(false);\n  const [selectingBookmarks, setSelectingBookmarks] = useState([]);\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    if (isBookmarkIconShortcutVisible && !isDisabled) {\n      core.setBookmarkIconShortcutVisibility(true);\n    } else {\n      core.setBookmarkIconShortcutVisibility(false);\n    }\n  }, [isDisabled, isBookmarkIconShortcutVisible]);\n\n  const pageIndexes = Object.keys(bookmarks).map((pageIndex) => parseInt(pageIndex, 10));\n\n  useEffect(() => {\n    // if bookmark is deleted from the shortcut, should also remove from selectingBookmarks\n    selectingBookmarks.forEach((index) => {\n      if (!pageIndexes.includes(index)) {\n        setSelectingBookmarks(selectingBookmarks.filter((bm) => bm !== index));\n      }\n    });\n\n    const shouldResetMultiSelectMode = pageIndexes.length === 0;\n    if (shouldResetMultiSelectMode) {\n      setMultiSelectionMode(false);\n    }\n  }, [bookmarks]);\n\n  const onRemoveBookmarks = (pageIndexes) => {\n    const title = t('warning.deleteBookmark.title');\n    const message = t('warning.deleteBookmark.message');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        pageIndexes.forEach((pageIndex) => dispatch(actions.removeBookmark(pageIndex)));\n        setSelectingBookmarks([]);\n      },\n      confirmBtnText: t('action.delete'),\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <div\n      className={`Panel BookmarksPanel bookmark-outline-panel ${panelSelector}`}\n      data-element={DataElements.BOOKMARK_PANEL}\n    >\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">\n          {t('component.bookmarksPanel')}\n        </div>\n        {!isMultiSelectionMode &&\n          <Button\n            className=\"bookmark-outline-control-button\"\n            dataElement={DataElements.BOOKMARK_MULTI_SELECT}\n            label={t('action.edit')}\n            disabled={isAddingNewBookmark || pageIndexes.length === 0}\n            onClick={() => setMultiSelectionMode(true)}\n          />\n        }\n        {isMultiSelectionMode &&\n          <Button\n            className=\"bookmark-outline-control-button\"\n            dataElement={DataElements.BOOKMARK_MULTI_SELECT}\n            label={t('option.bookmarkOutlineControls.done')}\n            disabled={isAddingNewBookmark}\n            onClick={() => {\n              setMultiSelectionMode(false);\n              setSelectingBookmarks([]);\n            }}\n          />\n        }\n      </div>\n\n      <Choice\n        dataElement={DataElements.BOOKMARK_SHORTCUT_OPTION}\n        type=\"checkbox\"\n        isSwitch\n        id=\"bookmark-view-option\"\n        className=\"bookmark-switch\"\n        label={t('message.viewBookmark')}\n        checked={isBookmarkIconShortcutVisible}\n        onChange={(e) => dispatch(actions.setBookmarkIconShortcutVisibility(e.target.checked))}\n      />\n\n      {!isAddingNewBookmark && pageIndexes.length === 0 && (\n        <div className=\"msg msg-no-bookmark-outline\">{t('message.noBookmarks')}</div>\n      )}\n\n      <div className=\"bookmark-outline-row\">\n        {isAddingNewBookmark &&\n          <Bookmark\n            isAdding\n            label={`${t('component.bookmarkPage')} ${pageLabels[currentPageIndex]} - ${t('component.bookmarkTitle')}`}\n            text={bookmarks[currentPageIndex] ?? ''}\n            pageIndex={currentPageIndex}\n            onSave={(newText) => {\n              dispatch(actions.addBookmark(currentPageIndex, newText));\n              setAddingNewBookmark(false);\n            }}\n            onCancel={() => setAddingNewBookmark(false)}\n            panelSelector={panelSelector}\n          />\n        }\n\n        {pageIndexes.map((pageIndex) => (\n          <Bookmark\n            key={pageIndex}\n            panelSelector={panelSelector}\n            isMultiSelectionMode={isMultiSelectionMode}\n            label={`${t('component.bookmarkPage')} ${pageLabels[pageIndex]} - ${t('component.bookmarkTitle')}`}\n            defaultLabel={`${t('component.bookmarkPage')} ${pageLabels[pageIndex]}`}\n            text={bookmarks[pageIndex]}\n            pageIndex={pageIndex}\n            onSave={(newText) => dispatch(actions.editBookmark(pageIndex, newText))}\n            onRemove={(index) => onRemoveBookmarks([index])}\n            setSelected={(index, val) => {\n              if (selectingBookmarks.find((bm) => bm === index)) {\n                if (!val) {\n                  setSelectingBookmarks(selectingBookmarks.filter((bm) => bm !== index));\n                }\n              } else {\n                if (val) {\n                  setSelectingBookmarks([...selectingBookmarks, index]);\n                }\n              }\n            }}\n          />\n        ))}\n      </div>\n\n      <DataElementWrapper\n        className=\"bookmark-outline-footer\"\n        dataElement={DataElements.BOOKMARK_ADD_NEW_BUTTON_CONTAINER}\n      >\n        {isMultiSelectionMode ?\n          <>\n            <Button\n              className=\"multi-selection-button\"\n              img=\"icon-menu-add\"\n              disabled={selectingBookmarks.length > 0 || !!bookmarks[currentPageIndex] || isAddingNewBookmark}\n              onClick={() => setAddingNewBookmark(true)}\n            />\n            <Button\n              className=\"multi-selection-button\"\n              img=\"icon-delete-line\"\n              disabled={selectingBookmarks.length === 0}\n              onClick={() => onRemoveBookmarks(selectingBookmarks)}\n            />\n          </>\n          :\n          <Button\n            className=\"bookmark-outline-control-button add-new-button\"\n            img=\"icon-menu-add\"\n            dataElement={DataElements.BOOKMARK_ADD_NEW_BUTTON}\n            label={`${t('action.add')} ${t('component.bookmarkPanel')}`}\n            disabled={isAddingNewBookmark || !!bookmarks[currentPageIndex]}\n            onClick={() => setAddingNewBookmark(true)}\n          />\n        }\n      </DataElementWrapper>\n    </div>\n  );\n};\n\nexport default BookmarksPanel;\n","import BookmarksPanel from './BookmarksPanel';\n\nexport default BookmarksPanel;\n","const updateChildrenDisabledState = (parentLayer) => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (!newChildLayer.locked) {\n      newChildLayer.disabled = !newParentLayer.visible;\n      newChildLayer = updateChildrenDisabledState(newChildLayer);\n    }\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nconst updateChildrenVisibilityState = (parentLayer) => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (newParentLayer.visible) {\n      newChildLayer.visible = !!newChildLayer.prevVisibleState;\n    } else {\n      newChildLayer.visible = false;\n    }\n    newChildLayer = updateChildrenVisibilityState(newChildLayer);\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nexport function updateLayerVisibililty(layerToUpdate, newVisibililtyState) {\n  if (layerToUpdate.locked || layerToUpdate.disabled) {\n    return layerToUpdate;\n  }\n  let newLayer = { ...layerToUpdate };\n  newLayer.visible = newVisibililtyState;\n  newLayer.prevVisibleState = newLayer.visible;\n  if (newLayer.children && newLayer.children.length > 0) {\n    newLayer = updateChildrenVisibilityState(newLayer);\n    newLayer = updateChildrenDisabledState(newLayer);\n  }\n  return newLayer;\n}","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport { useID } from '../../hooks/useID';\nexport var Label = function (_a) {\n    var label = _a.label, optionalText = _a.optionalText, children = _a.children, className = _a.className, htmlFor = _a.htmlFor, props = __rest(_a, [\"label\", \"optionalText\", \"children\", \"className\", \"htmlFor\"]);\n    var childrenId = children === null || children === void 0 ? void 0 : children.props.id;\n    var id = useID(childrenId);\n    var labelClass = classnames('ui__base ui__label', { 'ui__label--disabled': children === null || children === void 0 ? void 0 : children.props.disabled, 'ui__label--attached': children }, className);\n    return (React.createElement(React.Fragment, null,\n        React.createElement(\"label\", __assign({}, props, { className: labelClass, htmlFor: htmlFor !== null && htmlFor !== void 0 ? htmlFor : id }),\n            label,\n            optionalText ? React.createElement(\"span\", { className: \"ui__label__optional\" }, optionalText) : undefined),\n        children ? cloneElement(children, { id: id }) : undefined));\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Tooltip from 'components/Tooltip';\nimport Choice from 'components/Choice';\nimport { useTranslation } from 'react-i18next';\nimport { updateLayerVisibililty } from './updateLayerVisibililty';\nimport { Label } from '@pdftron/webviewer-react-toolkit';\nimport DataElementWrapper from '../DataElementWrapper';\nimport './Layer.scss';\n\nconst propTypes = {\n  layer: PropTypes.object,\n  layerUpdated: PropTypes.func,\n};\nfunction Layer(props) {\n  const { layer, layerUpdated } = props;\n  const [isExpanded, setExpanded] = useState(false);\n  const [t] = useTranslation();\n\n  const onChange = (isVisible) => {\n    const newLayer = updateLayerVisibililty(layer, isVisible);\n    if (layerUpdated) {\n      layerUpdated(newLayer);\n    }\n  };\n\n  const toggleExpanded = () => {\n    setExpanded(!isExpanded);\n  };\n\n  if (!layer) {\n    return null;\n  }\n  const hasSubLayers = layer && layer.children && layer.children.length > 0;\n\n  let tooltipContent = '';\n  if (layer.locked) {\n    tooltipContent = t('message.lockedLayer');\n  } else if (layer.disabled) {\n    tooltipContent = t('message.layerVisibililtyNoChange');\n  }\n\n  return (\n    <DataElementWrapper className=\"Layer\" dataElement={`layer-${layer.id}-${layer.name}`}>\n      <div className=\"parent-layer\">\n        {hasSubLayers ? (\n          <div className=\"arrow\" onClick={toggleExpanded}>\n            { isExpanded ? <Icon glyph=\"ic_chevron_down_black_24px\" /> : <Icon glyph=\"ic_chevron_right_black_24px\" />}\n          </div>\n        ) : (\n          // create dummy icon to make aligning easier\n          <div> <Icon glyph=\"\" /> </div>\n        )}\n        <Tooltip content={tooltipContent} hideOnClick={false} forcePosition=\"bottomLeft\">\n          {/* this div is mainly to group the choice and lock icon so that tooltip will appear properly  over checkbox */}\n          {\n            !layer.isLabel ? (\n              <div className=\"content-container\">\n                <Choice\n                  id={`${layer.id}`}\n                  label={layer.name}\n                  onChange={() => onChange(!layer.visible)}\n                  checked={layer.visible}\n                  disabled={layer.locked || layer.disabled}\n                  center\n                />\n                { layer.locked && <Icon className=\"lock-icon\" glyph=\"icon-lock\" />}\n              </div>\n            ) : (\n              <div className=\"content-container\">\n                <Label label={layer.name}></Label>\n              </div>\n            )\n          }\n        </Tooltip>\n      </div>\n      {hasSubLayers && isExpanded && (\n        <div className=\"sub-layers\">\n          {layer.children.map((subLayer, i) => (\n            <Layer\n              key={subLayer.id}\n              layer={subLayer}\n              parentLayer={layer}\n              layerUpdated={(modifiedSubLayer) => {\n                // new references for redux state\n                const children = [...layer.children];\n                children[i] = modifiedSubLayer;\n                const newLayer = { ...layer };\n                newLayer.children = children;\n                layerUpdated(newLayer);\n              }}\n            />\n          ))}\n        </div>\n      )}\n    </DataElementWrapper>\n  );\n}\nLayer.propTypes = propTypes;\nexport default Layer;\n","import Layer from './Layer';\n\nexport default Layer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Layer from 'components/Layer';\n\nimport './LayersPanel.scss';\nimport DataElementWrapper from '../DataElementWrapper';\n\nconst propTypes = {\n  layers: PropTypes.arrayOf(PropTypes.object),\n  setLayers: PropTypes.func,\n};\n\nfunction LayersPanel(props) {\n  const { layers = [], setLayers } = props;\n\n  function onLayerUpdated(updatedLayer, index) {\n    // new references for redux state\n    const newLayers = [...layers];\n    newLayers[index] = updatedLayer;\n    if (setLayers) {\n      setLayers(newLayers);\n    }\n  }\n\n  return (\n    <DataElementWrapper className=\"Panel LayersPanel\" dataElement=\"layersPanel\">\n      {layers.map((layer, i) => (\n        <Layer\n          key={layer.id}\n          layer={layer}\n          layerUpdated={(updatedLayer) => onLayerUpdated(updatedLayer, i)}\n        />\n      ))}\n    </DataElementWrapper>\n  );\n}\n\nLayersPanel.propTypes = propTypes;\n\nexport default LayersPanel;\n","export async function toggleAnnotationsVisibility(layers, core) {\n  const layersMap = {};\n  layers.forEach((layer) => {\n    layersMap[layer.obj] = layer;\n  });\n\n  const annotationManager = core.getAnnotationManager();\n  const doc = await core.getDocument().getPDFDoc();\n  const rawAnnotationObjects = [];\n  let pageNum = 0;\n  const itr = await doc.getPageIterator();\n  for (itr; (await itr.hasNext()); (await itr.next())) {\n    pageNum += 1;\n    const page = await itr.current();\n    const numAnnots = await page.getNumAnnots();\n    for (let i = 0; i < numAnnots; ++i) {\n      const annot = await page.getAnnot(i);\n      if (!(await annot.isValid())) {\n        continue;\n      }\n      rawAnnotationObjects.push(annot);\n    }\n  }\n\n  rawAnnotationObjects.forEach(async (rawAnnotation) => {\n    const optionalContent = await rawAnnotation.getOptionalContent();\n    if (optionalContent) {\n      const optionalContentDictIterator = await optionalContent.getDictIterator();\n      const optionalContentGroup = await optionalContentDictIterator.value();\n      const optionalContentGroupID = optionalContentGroup.id;\n      const annotSDF = await rawAnnotation.getSDFObj();\n      const isNMKeyValid = await annotSDF.findObj('NM');\n      if (isNMKeyValid) {\n        const NMInfoDict = await annotSDF.get('NM');\n        const NMInfoObject = await NMInfoDict.value();\n        const idString = await NMInfoObject.getAsPDFText();\n        const annotation = annotationManager.getAnnotationById(idString);\n        // This condition is needed to handle the corener case where annotation is deleted but the doc isn't saved yet.\n        if (annotation) {\n          annotation.Hidden = !layersMap[optionalContentGroupID].visible;\n        }\n      } else {\n        // corner case where the raw annotation doesn't have id\n        const annotSDF = await rawAnnotation.getSDFObj();\n        const subType = await annotSDF.get('Subtype');\n        const subTypeObject = await subType.value();\n        const rawAnnotType = await subTypeObject.getName();\n        const rawAnnotPDFCoord = await rawAnnotation.getRect();\n        const page = await rawAnnotation.getPage();\n        const rawAnnotPageNumber = await page.getIndex();\n\n        const viewerCoordsX1Y1 = await core.getDocument().getViewerCoordinates(pageNum, rawAnnotPDFCoord.x1, rawAnnotPDFCoord.y1);\n        const viewerCoordsX2Y2 = await core.getDocument().getViewerCoordinates(pageNum, rawAnnotPDFCoord.x2, rawAnnotPDFCoord.y2);\n        const annotationsOnPage = annotationManager.getAnnotationsList().filter((annot) => annot.PageNumber === rawAnnotPageNumber);\n        annotationsOnPage.forEach((annotation) => {\n          const rect = annotation.getRect();\n          const rectFromRawAnnotation = new window.Core.Math.Rect(\n            Math.min(viewerCoordsX1Y1.x, viewerCoordsX2Y2.x),\n            Math.min(viewerCoordsX1Y1.y, viewerCoordsX2Y2.y),\n            Math.max(viewerCoordsX1Y1.x, viewerCoordsX2Y2.x),\n            Math.max(viewerCoordsX1Y1.y, viewerCoordsX2Y2.y),\n          );\n          const positionMatched = rect.equalTo(rectFromRawAnnotation);\n          const typeMatched = rawAnnotType.toLowerCase() === annotation.elementName;\n          if (positionMatched && typeMatched) {\n            const layer = layersMap[optionalContentGroupID] || layersMap[optionalContent.id];\n            annotation.Hidden = !layer?.visible;\n          }\n        });\n      }\n    }\n  });\n}","import React, { useEffect } from 'react';\nimport LayersPanel from './LayersPanel';\n\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { toggleAnnotationsVisibility } from './helper';\n\nfunction LayersPanelRedux(props) {\n  const dispatch = useDispatch();\n\n  const [\n    layers,\n  ] = useSelector((state) => [\n    selectors.getLayers(state),\n  ]);\n\n  function setLayers(updatedLayers) {\n    dispatch(actions.setLayers(updatedLayers));\n  }\n\n  useEffect(() => {\n    const documentViewer = core.getDocumentViewer();\n    const doc = core.getDocument();\n    if (doc) {\n      doc.setLayersArray(layers);\n      if (core.isFullPDFEnabled()) {\n        toggleAnnotationsVisibility(layers, core).then(() => {\n          documentViewer.refreshAll();\n          documentViewer.updateView();\n        });\n      } else {\n        documentViewer.refreshAll();\n        documentViewer.updateView();\n      }\n    }\n  }, [layers]);\n\n  const reduxProps = {\n    layers,\n    setLayers\n  };\n\n  return <LayersPanel {...props}{...reduxProps} />;\n}\n\nexport default LayersPanelRedux;","import LayersPanelRedux from './LayersPanelRedux';\n\nexport default LayersPanelRedux;\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getFileAttachments, getEmbeddedFileData } from 'helpers/getFileAttachments';\r\nimport Spinner from '../Spinner';\r\nimport { saveAs } from 'file-saver';\r\nimport Icon from 'components/Icon';\r\nimport core from 'core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport selectors from 'selectors';\r\nimport actions from 'actions';\r\nimport DataElements from 'constants/dataElement';\r\n\r\nimport './FileAttachmentPanel.scss';\r\n\r\nconst getActualFileName = (filename) => {\r\n  const fileNameRegex = /[^\\\\\\/]+$/g;\r\n  return filename.match(fileNameRegex)[0];\r\n};\r\n\r\nconst renderAttachment = (filename, onClickCallback, key, showFileIdProcessSpinner) => {\r\n  filename = getActualFileName(filename);\r\n  const fileExtension = filename.split('.').pop().toUpperCase();\r\n  if (showFileIdProcessSpinner === key) {\r\n    return (\r\n      <li onClick={onClickCallback} key={key}>\r\n        <div className='embedSpinner'>{`[${fileExtension}] ${filename}`}<Spinner height={15} width={15}/></div>\r\n      </li>\r\n    );\r\n  }\r\n  return (\r\n    <li onClick={onClickCallback} key={key}>\r\n      {`[${fileExtension}] ${filename}`}\r\n    </li>\r\n  );\r\n};\r\n\r\nconst initialFilesDefault = { embeddedFiles: [], fileAttachmentAnnotations: [] };\r\n\r\nconst FileAttachmentPanel = ({ initialFiles = initialFilesDefault }) => {\r\n  const [t] = useTranslation();\r\n  const dispatch = useDispatch();\r\n  const [fileAttachments, setFileAttachments] = useState(initialFiles);\r\n  const isMultiTab = useSelector(selectors.getIsMultiTab);\r\n  const tabManager = useSelector(selectors.getTabManager);\r\n  const [showFileIdProcessSpinner, setFileIdProcessSpinner] = useState(null);\r\n\r\n  useEffect(() => {\r\n    const updateFileAttachments = async () => {\r\n      const attachments = await getFileAttachments();\r\n      setFileAttachments(attachments);\r\n    };\r\n    core.addEventListener('annotationChanged', updateFileAttachments);\r\n    core.addEventListener('documentLoaded', updateFileAttachments);\r\n    updateFileAttachments();\r\n    return () => {\r\n      core.removeEventListener('annotationChanged', updateFileAttachments);\r\n      core.removeEventListener('documentLoaded', updateFileAttachments);\r\n    };\r\n  }, []);\r\n\r\n  if (\r\n    fileAttachments.embeddedFiles.length === 0 &&\r\n    Object.entries(fileAttachments.fileAttachmentAnnotations).length === 0\r\n  ) {\r\n    return (\r\n      <div className=\"no-attachment\">\r\n        <Icon className=\"empty-icon\" glyph=\"illustration - empty state - outlines\" />\r\n        <div className=\"msg\">{t('message.noAttachments')}</div>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  const attachmentPanelItemOnClick = async (fileAttachmentAnnot) => {\r\n    if (isMultiTab) {\r\n      dispatch(actions.openElement(DataElements.LOADING_MODAL));\r\n      setTimeout(async () => {\r\n        const blob = await fileAttachmentAnnot.getFileData();\r\n        const filename = getActualFileName(fileAttachmentAnnot.filename);\r\n        const newTabId = await tabManager.addTab(blob, { filename });\r\n        dispatch(actions.closeElement(DataElements.LOADING_MODAL));\r\n        dispatch(actions.closeElement(DataElements.LEFT_PANEL));\r\n        await tabManager.setActiveTab(newTabId);\r\n      }, 100);\r\n    } else {\r\n      return core.getAnnotationManager().trigger('annotationDoubleClicked', fileAttachmentAnnot);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"fileAttachmentPanel\">\r\n      <div className=\"section\">\r\n        {fileAttachments.embeddedFiles.length ? <p className=\"title\">{t('message.embeddedFiles')}</p> : null}\r\n        <ul className=\"downloadable\">\r\n          {fileAttachments.embeddedFiles.map((file, idx) => renderAttachment(\r\n            getActualFileName(file.filename),\r\n            () => {\r\n              setFileIdProcessSpinner(`embeddedFile_${idx}`);\r\n              getEmbeddedFileData(file.fileObject).then((blob) => {\r\n                saveAs(blob, getActualFileName(file.filename));\r\n              }).finally(() => {\r\n                setFileIdProcessSpinner(null);\r\n              });\r\n            },\r\n            `embeddedFile_${idx}`,\r\n            showFileIdProcessSpinner\r\n          )\r\n          )}\r\n        </ul>\r\n      </div>\r\n\r\n      {Object.entries(fileAttachments.fileAttachmentAnnotations).map(([pageNumber, fileAttachmentAnnotsPerPage]) => {\r\n        return (\r\n          <div key={pageNumber} className=\"section\">\r\n            <p className=\"title\">\r\n              {t('message.pageNum')}: {pageNumber}\r\n            </p>\r\n            <ul className=\"downloadable\">\r\n              {fileAttachmentAnnotsPerPage.map((fileAttachmentAnnot, idx) => renderAttachment(\r\n                getActualFileName(fileAttachmentAnnot.filename),\r\n                async () => {\r\n                  core.setCurrentPage(fileAttachmentAnnot['PageNumber']);\r\n                  core.selectAnnotation(fileAttachmentAnnot);\r\n                  await attachmentPanelItemOnClick(fileAttachmentAnnot);\r\n                },\r\n                `fileAttachmentAnnotation_${idx}`,\r\n              ),\r\n              )}\r\n            </ul>\r\n          </div>\r\n        );\r\n      })}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FileAttachmentPanel;\r\n","import FileAttachmentPanel from './FileAttachmentPanel';\r\n\r\nexport default FileAttachmentPanel;\r\n","import ResizeBar from './ResizeBar';\n\nexport default ResizeBar;\n","import React, { useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from 'components/Icon';\nimport fireEvent from 'helpers/fireEvent';\nimport selectors from 'selectors';\nimport Events from 'constants/events';\n\nimport './ResizeBar.scss';\n\nconst ResizeBar = ({ onResize, minWidth, leftDirection, dataElement }) => {\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n  const isMouseDownRef = useRef(false);\n\n  useEffect(() => {\n    // this listener is throttled because the notes panel listens to the panel width\n    // change in order to rerender to have the correct width and we don't want\n    // it to rerender too often\n\n    // Removed throttle for now. It was causing jitterness when resizing.\n    // Maybe throttle is necessary because other components listening to the width would re-render too often?\n    const dragMouseMove = ({ clientX }) => {\n      if (isMouseDownRef.current) {\n        const newWidth = Math.max(minWidth, Math.min(window.innerWidth, leftDirection ? window.innerWidth - clientX : clientX));\n        onResize(newWidth);\n        fireEvent(Events.PANEL_RESIZED, { element: dataElement, width: newWidth });\n      }\n    };\n\n    document.addEventListener('mousemove', dragMouseMove);\n    return () => document.removeEventListener('mousemove', dragMouseMove);\n  }, [leftDirection, minWidth, onResize]);\n\n  useEffect(() => {\n    const finishDrag = () => {\n      isMouseDownRef.current = false;\n    };\n\n    document.addEventListener('mouseup', finishDrag);\n    return () => document.removeEventListener('mouseup', finishDrag);\n  }, []);\n\n  return isDisabled ? null : (\n    <div\n      data-element={dataElement}\n      className=\"resize-bar\"\n      onMouseDown={() => {\n        isMouseDownRef.current = true;\n      }}\n    >\n      <Icon glyph=\"icon-detach-toolbar\" />\n    </div>\n  );\n};\n\nexport default ResizeBar;\n","import React from 'react';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\nimport DataElements from 'constants/dataElement';\n\nfunction LeftPanelPageTabsMoreSmall() {\n  return (\n    <div className={'dropdown-menu button-hover'}>\n      <ToggleElementButton\n        title=\"action.more\"\n        className={'dropdown-menu'}\n        element={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL}\n        dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER}\n        img=\"icon-tool-more\"\n      />\n      <div className={'indicator'} />\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsMoreSmall;\n","import React from 'react';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\nimport DataElements from 'constants/dataElement';\n\nfunction LeftPanelPageTabsRotateSmall() {\n  return (\n    <div className={'dropdown-menu button-hover'}>\n      <ToggleElementButton\n        title=\"action.rotate\"\n        element={DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP}\n        dataElement={DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER}\n        img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n      />\n      <div className={'indicator'} />\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsRotateSmall;\n","import React from 'react';\n\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\n\nfunction LeftPanelPageTabsInsertSmall() {\n  return (\n    <div className={'dropdown-menu'}>\n      <ToggleElementButton\n        title=\"action.PageInsertion\"\n        className={'dropdown-menu'}\n        element=\"thumbnailsControlInsertPopup\"\n        dataElement=\"thumbnailsControlInsertPopupTrigger\"\n        img=\"icon-header-page-manipulation-insert-above\"\n      />\n      <div className={'indicator'} />\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsInsertSmall;\n","import React from 'react';\nimport Button from 'components/Button';\n\nfunction CustomLeftPanelOperations({ pageNumbers, operations }) {\n  return (\n    <>\n      {operations.map((operation, index) => {\n        return (\n          <Button\n            key={index}\n            className={'button-hover'}\n            dataElement={operation.dataElement}\n            img={operation.img}\n            onClick={() => operation.onClick(pageNumbers)}\n            title={operation.title}\n          />);\n      })\n      }\n    </>\n  );\n}\n\nexport default CustomLeftPanelOperations;\n","import React from 'react';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\nimport LeftPanelPageTabsMoreSmall from '../LeftPanelPageTabsMoreSmall/LeftPanelPageTabsMoreSmall';\nimport LeftPanelPageTabsRotateSmall from '../LeftPanelPageTabsRotateSmall/LeftPanelPageTabsRotateSmall';\nimport LeftPanelPageTabsInsertSmall from '../LeftPanelPageTabsInsertSmall/LeftPanelPageTabsInsertSmall';\nimport CustomLeftPanelOperations from '../CustomLeftPanelOperations/CustomLeftPanelOperations';\n\nfunction InitialLeftPanelPageTabsSmall({ children, pageNumbers, multiPageManipulationControlsItems }) {\n  const childrenArray = React.Children.toArray(children);\n  if (!multiPageManipulationControlsItems) {\n    return childrenArray;\n  }\n  return multiPageManipulationControlsItems.map((item, index) => {\n    const { dataElement, type } = item;\n    let component = childrenArray.find((child) => child.props.dataElement === dataElement);\n    const key = dataElement || `${type}-${index}`;\n\n    if (!component) {\n      if (type === 'divider') {\n        component = <div className=\"divider\" />;\n      }\n\n      if (type === 'customPageOperation') {\n        component = <CustomLeftPanelOperations key={dataElement} pageNumbers={pageNumbers} {...item} />;\n      }\n    }\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n}\n\n\nfunction LeftPanelPageTabsSmall(props) {\n  const { pageNumbers, multiPageManipulationControlsItemsSmall } = props;\n  return (\n    <div className={'PageControlContainer root small'}>\n      <InitialLeftPanelPageTabsSmall pageNumbers={pageNumbers} multiPageManipulationControlsItems={multiPageManipulationControlsItemsSmall}>\n        <LeftPanelPageTabsRotateSmall dataElement=\"leftPanelPageTabsRotateSmall\" />\n        <LeftPanelPageTabsInsertSmall dataElement=\"leftPanelPageTabsInsertSmall\" />\n        <LeftPanelPageTabsMoreSmall dataElement=\"leftPanelPageTabsMoreSmall\" />\n      </InitialLeftPanelPageTabsSmall>\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsSmall;\n","import React from 'react';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\nimport DataElements from 'constants/dataElement';\n\nfunction LeftPanelPageTabsMore() {\n  return (\n    <div className={'dropdown-menu button-hover'}>\n      <ToggleElementButton\n        title=\"action.more\"\n        className={'dropdown-menu'}\n        element={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP}\n        dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER}\n        img=\"icon-tool-more\"\n      />\n      <div className={'indicator'} />\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsMore;\n","import React from 'react';\nimport Button from 'components/Button';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\n\nfunction LeftPanelPageTabsInsert({ onInsert }) {\n  return (\n    <>\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlInsert\"\n        img=\"icon-page-insertion-insert\"\n        onClick={onInsert}\n        title=\"action.insert\"\n      />\n    </>\n  );\n}\n\nexport default LeftPanelPageTabsInsert;\n","import React from 'react';\nimport Button from 'components/Button';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\n\nfunction LeftPanelPageTabsRotate({ onRotateClockwise, onRotateCounterClockwise }) {\n  return (\n    <>\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlRotateCounterClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n        onClick={onRotateCounterClockwise}\n        title=\"action.rotateCounterClockwise\"\n      />\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlRotateClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n        onClick={onRotateClockwise}\n        title=\"action.rotateClockwise\"\n      />\n    </>\n  );\n}\n\nexport default LeftPanelPageTabsRotate;\n","import React from 'react';\nimport Button from 'components/Button';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\n\nfunction LeftPanelPageTabsOperations({ onInsert, onReplace, onExtractPages, onDeletePages }) {\n  return (\n    <>\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlInsert\"\n        img=\"icon-page-insertion-insert\"\n        onClick={onInsert}\n        title=\"action.insert\"\n      />\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlReplace\"\n        img=\"icon-page-replacement\"\n        onClick={onReplace}\n        title=\"action.replace\"\n      />\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlExtract\"\n        img=\"icon-page-manipulation-extract\"\n        onClick={onExtractPages}\n        title=\"action.extract\"\n      />\n      <Button\n        className={'button-hover'}\n        dataElement=\"thumbnailsControlDelete\"\n        img=\"icon-delete-line\"\n        onClick={onDeletePages}\n        title=\"action.delete\"\n      />\n    </>\n  );\n}\n\nexport default LeftPanelPageTabsOperations;\n","import React from 'react';\n\nimport LeftPanelPageTabsMore from '../LeftPanelPageTabsMore/LeftPanelPageTabsMore';\nimport LeftPanelPageTabsInsert from '../LeftPanelPageTabsInsert/LeftPanelPageTabsInsert';\nimport LeftPanelPageTabsRotate from '../LeftPanelPageTabsRotate/LeftPanelPageTabsRotate';\nimport LeftPanelPageTabsOperations from '../LeftPanelPageTabsOperations/LeftPanelPageTabsOperations';\nimport CustomLeftPanelOperations from '../CustomLeftPanelOperations/CustomLeftPanelOperations';\n\n\nfunction InitialLeftPanelPageTabs({ children, pageNumbers, multiPageManipulationControlsItems }) {\n  const childrenArray = React.Children.toArray(children);\n  if (!multiPageManipulationControlsItems) {\n    return childrenArray;\n  }\n  return multiPageManipulationControlsItems.map((item, index) => {\n    const { dataElement, type } = item;\n    let component = childrenArray.find((child) => child.props.dataElement === dataElement);\n    const key = dataElement || `${type}-${index}`;\n\n    if (!component) {\n      if (type === 'divider') {\n        component = <div className=\"divider\" />;\n      }\n\n      if (type === 'customPageOperation') {\n        component = <CustomLeftPanelOperations key={dataElement} pageNumbers={pageNumbers} {...item} />;\n      }\n    }\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n}\n\n\nfunction LeftPanelPageTabs(props) {\n  const { pageNumbers, onRotateClockwise, onRotateCounterClockwise, onInsert, onReplace, onExtractPages, onDeletePages, multiPageManipulationControlsItems } = props;\n  return (\n    <div className={'PageControlContainer root'}>\n      <InitialLeftPanelPageTabs pageNumbers={pageNumbers} multiPageManipulationControlsItems={multiPageManipulationControlsItems} >\n        <LeftPanelPageTabsRotate onRotateClockwise={onRotateClockwise} onRotateCounterClockwise={onRotateCounterClockwise} dataElement=\"leftPanelPageTabsRotate\" />\n        <LeftPanelPageTabsInsert onInsert={onInsert} dataElement=\"leftPanelPageTabsInsert\" />\n        <LeftPanelPageTabsOperations onInsert={onInsert} onReplace={onReplace} onExtractPages={onExtractPages} onDeletePages={onDeletePages} dataElement=\"leftPanelPageTabsOperations\" />\n        <LeftPanelPageTabsMore dataElement=\"leftPanelPageTabsMore\" />\n      </InitialLeftPanelPageTabs>\n    </div>\n  );\n}\n\n\nexport default LeftPanelPageTabs;\n","import React from 'react';\nimport Button from 'components/Button';\nimport '../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss';\n\nfunction LeftPanelPageTabsMove({ moveToTop, moveToBottom }) {\n  return (\n    <>\n      <Button\n        className={'button-hover'}\n        dataElement=\"moveToTop\"\n        img=\"icon-page-move-up\"\n        onClick={moveToTop}\n        title=\"action.moveToTop\"\n      />\n      <Button\n        className={'button-hover'}\n        dataElement=\"moveToBottom\"\n        img=\"icon-page-move-down\"\n        onClick={moveToBottom}\n        title=\"action.moveToBottom\"\n      />\n    </>\n  );\n}\n\nexport default LeftPanelPageTabsMove;\n","import React from 'react';\n\nimport LeftPanelPageTabsInsert from '../LeftPanelPageTabsInsert/LeftPanelPageTabsInsert';\nimport LeftPanelPageTabsRotate from '../LeftPanelPageTabsRotate/LeftPanelPageTabsRotate';\nimport LeftPanelPageTabsOperations from '../LeftPanelPageTabsOperations/LeftPanelPageTabsOperations';\nimport CustomLeftPanelOperations from '../CustomLeftPanelOperations/CustomLeftPanelOperations';\nimport LeftPanelPageTabsMove from '../LeftPanelPageTabsMove/LeftPanelPageTabsMove';\n\n\nfunction InitialLeftPanelPageTabs({ children, pageNumbers, multiPageManipulationControlsItems }) {\n  const childrenArray = React.Children.toArray(children);\n  if (!multiPageManipulationControlsItems) {\n    return childrenArray;\n  }\n  return multiPageManipulationControlsItems.map((item, index) => {\n    const { dataElement, type } = item;\n    let component = childrenArray.find((child) => child.props.dataElement === dataElement);\n    const key = dataElement || `${type}-${index}`;\n\n    if (!component) {\n      if (type === 'divider') {\n        component = <div className=\"divider\" />;\n      }\n\n      if (type === 'customPageOperation') {\n        component = <CustomLeftPanelOperations key={dataElement} pageNumbers={pageNumbers} {...item} />;\n      }\n    }\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n}\n\n\nfunction LeftPanelPageTabsLarge(props) {\n  const { pageNumbers, onRotateClockwise, onRotateCounterClockwise, onInsert, onReplace, onExtractPages, onDeletePages, moveToTop, moveToBottom, multiPageManipulationControlsItems } = props;\n  return (\n    <div className={'PageControlContainer root'}>\n      <InitialLeftPanelPageTabs pageNumbers={pageNumbers} multiPageManipulationControlsItems={multiPageManipulationControlsItems} >\n        <LeftPanelPageTabsRotate onRotateClockwise={onRotateClockwise} onRotateCounterClockwise={onRotateCounterClockwise} dataElement=\"leftPanelPageTabsRotate\" />\n        <LeftPanelPageTabsInsert onInsert={onInsert} dataElement=\"leftPanelPageTabsInsert\" />\n        <LeftPanelPageTabsOperations onReplace={onReplace} onExtractPages={onExtractPages} onDeletePages={onDeletePages} dataElement=\"leftPanelPageTabsOperations\" />\n        <LeftPanelPageTabsMove moveToTop={moveToTop} moveToBottom={moveToBottom} dataElement=\"leftPanelPageTabsMove\" />\n      </InitialLeftPanelPageTabs>\n    </div>\n  );\n}\n\n\nexport default LeftPanelPageTabsLarge;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport {\n  deletePages,\n  extractPages,\n  noPagesSelectedWarning,\n  replace,\n  rotateClockwise,\n  rotateCounterClockwise,\n  movePagesToBottom,\n  movePagesToTop\n} from 'helpers/pageManipulationFunctions';\nimport LeftPanelPageTabsSmall from 'src/components/LeftPanelPageTabs/LeftPanelPageTabsSmall/LeftPanelPageTabsSmall';\nimport LeftPanelPageTabs from 'components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabs';\nimport { workerTypes } from 'constants/types';\nimport core from 'src/core';\nimport LeftPanelPageTabsRotate from 'components/LeftPanelPageTabs/LeftPanelPageTabsRotate/LeftPanelPageTabsRotate';\nimport LeftPanelPageTabsLarge from './LeftPanelPageTabsLarge/LeftPanelPageTabsLarge';\nimport DataElements from 'constants/dataElement';\n\nfunction LeftPanelPageTabsContainer() {\n  const dispatch = useDispatch();\n  const [selectedPageIndexes, leftPanelWidth, deleteModalEnabled, multiPageManipulationControlsItems, multiPageManipulationControlsSmall, multiPageManipulationControlsLarge] = useSelector((state) => [\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.getLeftPanelWidth(state),\n    selectors.pageDeletionConfirmationModalEnabled(state),\n    selectors.getMultiPageManipulationControlsItems(state),\n    selectors.getMultiPageManipulationControlsItemsSmall(state),\n    selectors.getMultiPageManipulationControlsItemsLarge(state),\n  ]);\n\n  const pageNumbers = selectedPageIndexes.map((index) => index + 1);\n\n  const openInsertPageModal = () => {\n    dispatch(actions.closeElement(DataElements.PAGE_MANIPULATION_OVERLAY));\n    dispatch(actions.openElement('insertPageModal'));\n  };\n\n  const onReplace = () => !noPagesSelectedWarning(pageNumbers, dispatch) && replace(dispatch);\n  const onExtractPages = () => !noPagesSelectedWarning(pageNumbers, dispatch) && extractPages(pageNumbers, dispatch);\n  const onDeletePages = () => !noPagesSelectedWarning(pageNumbers, dispatch) && deletePages(pageNumbers, dispatch, deleteModalEnabled);\n  const onRotateClockwise = () => !noPagesSelectedWarning(pageNumbers, dispatch) && rotateClockwise(pageNumbers);\n  const onRotateCounterClockwise = () => !noPagesSelectedWarning(pageNumbers, dispatch) && rotateCounterClockwise(pageNumbers);\n  const onInsert = () => !noPagesSelectedWarning(pageNumbers, dispatch) && openInsertPageModal();\n  const moveToTop = () => !noPagesSelectedWarning(pageNumbers, dispatch) && movePagesToTop(pageNumbers);\n  const moveToBottom = () => !noPagesSelectedWarning(pageNumbers, dispatch) && movePagesToBottom(pageNumbers);\n\n  const document = core.getDocument();\n  const documentType = document?.type;\n  const isXod = documentType === workerTypes.XOD;\n  const isOffice = documentType === workerTypes.OFFICE || documentType === workerTypes.LEGACY_OFFICE;\n\n  if (isXod || isOffice || document?.isWebViewerServerDocument()) {\n    return (\n      <LeftPanelPageTabsRotate onRotateClockwise={onRotateClockwise} onRotateCounterClockwise={onRotateCounterClockwise} />\n    );\n  }\n  // Breakpoint to convert to popups\n  const breakPoint = 360;\n  const isPanelSmall = leftPanelWidth < breakPoint;\n  const isPanelLarge = leftPanelWidth > 600;\n\n  if (isPanelSmall) {\n    return <LeftPanelPageTabsSmall\n      onReplace={onReplace}\n      onExtractPages={onExtractPages}\n      onDeletePages={onDeletePages}\n      onRotateCounterClockwise={onRotateCounterClockwise}\n      onRotateClockwise={onRotateClockwise}\n      onInsert={onInsert}\n      pageNumbers={pageNumbers}\n      multiPageManipulationControlsItemsSmall={multiPageManipulationControlsSmall}\n    />;\n  }\n\n  if (isPanelLarge) {\n    return <LeftPanelPageTabsLarge\n      onReplace={onReplace}\n      onExtractPages={onExtractPages}\n      onDeletePages={onDeletePages}\n      onRotateCounterClockwise={onRotateCounterClockwise}\n      onRotateClockwise={onRotateClockwise}\n      onInsert={onInsert}\n      moveToTop={moveToTop}\n      moveToBottom={moveToBottom}\n      pageNumbers={pageNumbers}\n      multiPageManipulationControlsItems={multiPageManipulationControlsLarge}\n    />;\n  }\n\n\n  return (\n    <LeftPanelPageTabs\n      onReplace={onReplace}\n      onExtractPages={onExtractPages}\n      onDeletePages={onDeletePages}\n      onRotateCounterClockwise={onRotateCounterClockwise}\n      onRotateClockwise={onRotateClockwise}\n      onInsert={onInsert}\n      pageNumbers={pageNumbers}\n      multiPageManipulationControlsItems={multiPageManipulationControlsItems}\n    />\n  );\n}\n\nexport default LeftPanelPageTabsContainer;\n","import LeftPanelPageTabsContainer from 'components/LeftPanelPageTabs/LeftPanelPageTabsContainer';\n\nexport default LeftPanelPageTabsContainer;","import React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport LeftPanelTabs from 'components/LeftPanelTabs';\nimport PortfolioPanel from 'components/PortfolioPanel';\nimport ThumbnailsPanel from 'components/ThumbnailsPanel';\nimport OutlinesPanel from 'components/OutlinesPanel';\nimport BookmarksPanel from 'components/BookmarksPanel';\nimport LayersPanel from 'components/LayersPanel';\nimport FileAttachmentPanel from 'components/FileAttachmentPanel';\nimport SignaturePanel from 'components/SignaturePanel';\nimport CustomElement from 'components/CustomElement';\nimport ResizeBar from 'components/ResizeBar';\nimport Icon from 'components/Icon';\nimport LazyLoadWrapper, { LazyLoadComponents } from 'components/LazyLoadWrapper';\nimport LeftPanelPageTabs from 'components/LeftPanelPageTabs';\n\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport { isIE } from 'helpers/device';\nimport DataElements from 'constants/dataElement';\n\nimport './LeftPanel.scss';\n\nconst LeftPanel = () => {\n  const isMobile = isMobileSize();\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  const [\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isOfficeEditorToolsHeaderOpen,\n    isOpen,\n    isDisabled,\n    activePanel,\n    customPanels,\n    currentWidth,\n    notesInLeftPanel,\n    isInDesktopOnlyMode,\n    isThumbnailSelectingPages,\n    bookmarks,\n    isBookmarkPanelEnabled,\n    isBookmarkIconShortcutVisible,\n    isMultiTabActive,\n    isLogoBarEnabled,\n    featureFlags,\n    topHeadersHeight,\n    bottomHeadersHeight,\n    portfolioFiles,\n  ] = useSelector(\n    (state) => [\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      selectors.isElementOpen(state, 'officeEditorToolsHeader'),\n      selectors.isElementOpen(state, DataElements.LEFT_PANEL),\n      selectors.isElementDisabled(state, DataElements.LEFT_PANEL),\n      selectors.getActiveLeftPanel(state),\n      selectors.getCustomPanels(state),\n      selectors.getLeftPanelWidth(state),\n      selectors.getNotesInLeftPanel(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.isThumbnailSelectingPages(state),\n      selectors.getBookmarks(state),\n      !selectors.isElementDisabled(state, DataElements.BOOKMARK_PANEL),\n      selectors.isBookmarkIconShortcutVisible(state),\n      selectors.getIsMultiTab(state),\n      !selectors.isElementDisabled(state, DataElements.LOGO_BAR),\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeadersHeight(state),\n      selectors.getBottomHeadersHeight(state),\n      selectors.getPortfolio(state),\n    ],\n    shallowEqual,\n  );\n\n  const minWidth = 264;\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  const onDrop = (e) => {\n    // this is mainly for the thumbnail panel, to prevent the broswer from loading a document that dropped in\n    e.preventDefault();\n  };\n\n  const onDragOver = (e) => {\n    // when dragging over the \"LeftPanel\", change the cursor to \"Move\" from \"Copy\"\n    e.preventDefault();\n  };\n\n  const getDisplay = (panel) => (panel === activePanel ? 'flex' : 'none');\n\n  let style = {};\n  if (isInDesktopOnlyMode || !isMobile) {\n    style = { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n  }\n\n  const isVisible = !(!isOpen || isDisabled);\n\n  useEffect(() => {\n    if (isBookmarkPanelEnabled) {\n      core.setBookmarkShortcutToggleOnFunction((pageIndex) => {\n        dispatch(actions.addBookmark(pageIndex, t('message.untitled')));\n      });\n      core.setBookmarkShortcutToggleOffFunction((pageIndex) => {\n        dispatch(actions.removeBookmark(pageIndex));\n      });\n      core.setUserBookmarks(Object.keys(bookmarks).map((pageIndex) => parseInt(pageIndex, 10)));\n    }\n  }, [isBookmarkPanelEnabled, bookmarks]);\n\n  useEffect(() => {\n    if (isBookmarkPanelEnabled && isBookmarkIconShortcutVisible) {\n      core.setBookmarkIconShortcutVisibility(true);\n    } else {\n      core.setBookmarkIconShortcutVisibility(false);\n    }\n  }, [isBookmarkPanelEnabled, isBookmarkIconShortcutVisible]);\n\n  // TODO: For whoever is refactoring the LeftPanel to make it generic, review if this is the best approach\n  // Once we move to the new UI we can remove the legacy stuff\n  const legacyToolsHeaderOpen = isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View';\n  const legacyAllHeadersHidden = !isHeaderOpen && !legacyToolsHeaderOpen;\n\n  const { customizableUI } = featureFlags;\n  const wrapperStyle = {\n    // prevent panel from appearing until scss is loaded\n    display: 'none',\n  };\n  // Calculating its height according to the existing horizontal modular headers\n  if (customizableUI) {\n    const horizontalHeadersHeight = topHeadersHeight + bottomHeadersHeight;\n    wrapperStyle['height'] = `calc(100% - ${horizontalHeadersHeight}px)`;\n  }\n\n  return (\n    <div\n      className={classNames({\n        Panel: true,\n        LeftPanel: true,\n        'closed': !isVisible,\n        'tools-header-open': legacyToolsHeaderOpen || isOfficeEditorToolsHeaderOpen,\n        'tools-header-and-header-hidden': legacyAllHeadersHidden,\n        'thumbnail-panel-active': activePanel === 'thumbnailsPanel',\n        'outlines-panel-active': activePanel === 'outlinesPanel',\n        'multi-tab-active': isMultiTabActive,\n        'logo-bar-enabled': isLogoBarEnabled,\n      })}\n      onDrop={onDrop}\n      onDragOver={onDragOver}\n      data-element={DataElements.LEFT_PANEL}\n      style={wrapperStyle}\n    >\n      <div\n        className=\"left-panel-container\"\n        style={style}\n      >\n        {!isInDesktopOnlyMode && isMobile &&\n          <div\n            className=\"close-container\"\n          >\n            <div\n              className=\"close-icon-container\"\n              onClick={() => {\n                dispatch(actions.closeElements(['leftPanel']));\n              }}\n            >\n              <Icon\n                glyph=\"ic_close_black_24px\"\n                className=\"close-icon\"\n              />\n            </div>\n          </div>}\n        <div className=\"left-panel-header\">\n          {isThumbnailSelectingPages ?\n            <LeftPanelPageTabs /> :\n            <LeftPanelTabs showPortfolio={portfolioFiles.length > 0} />}\n        </div>\n        {activePanel === DataElements.PORTFOLIO_PANEL\n          && core.isFullPDFEnabled()\n          && portfolioFiles.length > 0\n          && <PortfolioPanel />}\n        {activePanel === 'thumbnailsPanel' && <ThumbnailsPanel />}\n        {activePanel === 'outlinesPanel' && <OutlinesPanel />}\n        {activePanel === 'bookmarksPanel' && <BookmarksPanel />}\n        {activePanel === 'layersPanel' && <LayersPanel />}\n        {core.isFullPDFEnabled() && activePanel === 'signaturePanel' && <SignaturePanel />}\n        {activePanel === 'attachmentPanel' && <FileAttachmentPanel />}\n        {notesInLeftPanel && activePanel === 'notesPanel' &&\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.NotesPanel}\n            dataElement={DataElements.NOTES_PANEL}\n            currentLeftPanelWidth={currentWidth}\n          />}\n        {customPanels.map(({ panel }, index) => (\n          <CustomElement\n            key={panel.dataElement || index}\n            className={`Panel ${panel.dataElement}`}\n            display={getDisplay(panel.dataElement)}\n            dataElement={panel.dataElement}\n            render={panel.render}\n          />\n        ))}\n      </div>\n      {(isInDesktopOnlyMode || !isTabletAndMobile) &&\n        <ResizeBar\n          dataElement=\"leftPanelResizeBar\"\n          minWidth={minWidth}\n          onResize={(_width) => {\n            let maxAllowedWidth = window.innerWidth;\n            // there will be a scroll bar in IE, so we don't allow 100% page width\n            if (isIE) {\n              maxAllowedWidth -= 30;\n            }\n            dispatch(actions.setLeftPanelWidth(Math.min(_width, maxAllowedWidth)));\n          }}\n        />}\n    </div>\n  );\n};\n\nexport default LeftPanel;\n","import LeftPanel from './LeftPanel';\n\nexport default LeftPanel;","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport ResizeBar from 'components/ResizeBar';\nimport selectors from 'selectors';\nimport { isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport classNames from 'classnames';\nimport DataElements from 'constants/dataElement';\n\nimport './RightPanel.scss';\n\nconst RightPanel = ({ children, dataElement, onResize }) => {\n  const [\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isOfficeEditorToolsHeaderOpen,\n    isOpen,\n    isDisabled,\n    isInDesktopOnlyMode,\n    isMultiTabActive,\n    topHeaders,\n    featureFlags = {},\n    topHeadersHeight,\n    bottomHeadersHeight,\n    isLogoBarEnabled,\n  ] = useSelector(\n    (state) => [\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      selectors.isElementOpen(state, 'officeEditorToolsHeader'),\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getIsMultiTab(state),\n      selectors.getTopHeaders(state),\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeadersHeight(state),\n      selectors.getBottomHeadersHeight(state),\n      !selectors.isElementDisabled(state, DataElements.LOGO_BAR)\n    ],\n    shallowEqual,\n  );\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n  const isVisible = isOpen && !isDisabled;\n\n  // TODO: For whoever is refactoring the RightPanel to make it generic, review if this is the best approach\n  // Once we move to the new modular UI we can remove the legacy stuff\n  const legacyToolsHeaderOpen = isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View';\n  const legacyAllHeadersHidden = !isHeaderOpen && !legacyToolsHeaderOpen;\n  const { customizableUI } = featureFlags;\n  const style = {};\n  // Calculating its height according to the existing horizontal modular headers\n  if (customizableUI) {\n    const horizontalHeadersHeight = topHeadersHeight + bottomHeadersHeight;\n    style['height'] = `calc(100% - ${horizontalHeadersHeight}px)`;\n  }\n\n  return (\n    <div\n      className={classNames({\n        'right-panel': true,\n        'closed': !isVisible,\n        'tools-header-open': (customizableUI ? topHeaders.length === 2 : legacyToolsHeaderOpen) || isOfficeEditorToolsHeaderOpen,\n        'tools-header-and-header-hidden': customizableUI ? topHeaders.length === 0 : legacyAllHeadersHidden,\n        'multi-tab-active': isMultiTabActive,\n        'logo-bar-enabled': isLogoBarEnabled,\n      })}\n      style={style}\n    >\n      {(isInDesktopOnlyMode || !isTabletAndMobile) &&\n        <ResizeBar\n          dataElement={`${dataElement}ResizeBar`}\n          minWidth={293}\n          onResize={onResize}\n          leftDirection\n        />}\n      {children}\n    </div>\n  );\n};\n\nexport default RightPanel;\n","import RightPanel from './RightPanel';\n\nexport default RightPanel;","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\n\nimport getHashParameters from 'helpers/getHashParameters';\nimport loadDocument from 'helpers/loadDocument';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\nimport './FilePickerHandler.scss';\n\nconst FilePickerHandler = () => {\n  const [isDisabled, isMultiTab, TabManager] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, 'filePickerHandler'),\n      selectors.getIsMultiTab(state),\n      selectors.getTabManager(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  const openDocument = (e) => {\n    const file = e.target.files[0];\n    if (file) {\n      dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n      dispatch(actions.closeElement(DataElements.MENU_OVERLAY));\n      if (isMultiTab) {\n        return TabManager.addTab(file, { saveCurrentActiveTabState: true, load: true });\n      }\n      loadDocument(dispatch, file);\n    }\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n\n  return isDisabled ? null : (\n    <div className=\"FilePickerHandler\">\n      <input\n        id=\"file-picker\"\n        type=\"file\"\n        accept={acceptFormats.map(\n          (format) => `.${format}`,\n        ).join(', ')}\n        onChange={openDocument}\n      />\n    </div>\n  );\n};\n\nexport default FilePickerHandler;\n","import FilePickerHandler from './FilePickerHandler';\n\nexport default FilePickerHandler;\n","import CopyTextHandler from './CopyTextHandler';\n\nexport default CopyTextHandler;\n","import React from 'react';\nimport './CopyTextHandler.scss';\n\nconst CopyTextHandler = () => (\n  <div className=\"CopyTextHandler\">\n    <textarea id=\"copy-textarea\" tabIndex={-1} aria-hidden />\n  </div>\n);\n\nexport default CopyTextHandler;\n","import React, { useState, useEffect } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { isIOS } from 'helpers/device';\nimport selectors from 'selectors';\n\nimport './PrintHandler.scss';\n\nconst PrintHandler = () => {\n  const [isDisabled, isEmbedPrintSupported] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, 'printHandler'),\n      selectors.isEmbedPrintSupported(state),\n    ],\n    shallowEqual,\n  );\n  const [documentType, setDocumentType] = useState('');\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      const type = core.getDocument().getType();\n      setDocumentType(type);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => core.removeEventListener('documentLoaded', onDocumentLoaded);\n  });\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        PrintHandler,\n        'ios-print': isIOS,\n      })}\n    >\n      {isEmbedPrintSupported && documentType === workerTypes.PDF ? (\n        <iframe id=\"print-handler\" tabIndex={-1}></iframe>\n      ) : (\n        <div id=\"print-handler\"></div>\n      )}\n    </div>\n  );\n};\n\nexport default PrintHandler;\n","import PrintHandler from './PrintHandler';\n\nexport default PrintHandler;\n","import FontHandler from './FontHandler';\n\nexport default FontHandler;","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport webFonts from 'constants/webFonts';\n\nimport selectors from 'selectors';\n\n// this component is used to preload the font(s) that are used in Annotations and the SignatureModal(TextSignature)\n// if the font(s) isn't loaded in advanced, we will see the signature text filled with the sans-serif font\n// we could use <link rel=\"preload\" href=\"/path/some.woff2\" as=\"font\"> to preload a font but this hasn't been supported in all the browsers\nconst FontHandler = () => {\n  const signatureFonts = useSelector((state) => selectors.getSignatureFonts(state));\n  const isWebComponent = window.isApryseWebViewerWebComponent;\n\n  // load webfonts and if using web component load default font and signature fonts.\n  useEffect(() => {\n    const loadFont = (font, fontType, isWebFont = false, fileName = null, style = {}) => {\n      const fontTypes = {\n        ttf: 'truetype',\n        woff: 'woff',\n        woff2: 'woff2',\n      };\n      const fontName = font.replace(/\\s/g, '');\n      if (!fileName) {\n        fileName = fontName;\n      }\n      // eslint-disable-next-line no-undef, camelcase\n      const fontPath = `${isWebComponent ? __webpack_public_path__ : './'}assets/fonts/${isWebFont ? 'webfonts/' : ''}${fileName}.${fontType}`;\n      const fontFace = new FontFace(font, `url(${fontPath}) format(\"${fontTypes[fontType]}\")`, style);\n      fontFace.load().then(function(loadedFace) {\n        document.fonts.add(loadedFace);\n      });\n    };\n\n    if (isWebComponent) {\n      const defaultFonts = {\n        'Lato-Regular': {\n          'style': 'normal',\n          'weight': 'normal',\n        },\n        'Lato-Italic': {\n          'style': 'italic',\n          'weight': 'normal',\n        },\n        'Lato-Bold': {\n          'style': 'normal',\n          'weight': 'bold',\n        },\n        'Lato-BoldItalic': {\n          'style': 'italic',\n          'weight': 'bold',\n        },\n      };\n\n      Object.keys(defaultFonts).forEach((font) => {\n        loadFont('Lato', 'woff', false, font, defaultFonts[font]);\n      });\n\n      signatureFonts.forEach((font) => {\n        loadFont(font, 'woff');\n      });\n\n      loadFont('GreatVibes-Regular', 'woff2');\n    }\n\n    webFonts.forEach((font) => {\n      loadFont(font, 'ttf', true);\n    });\n  }, []);\n\n  return isWebComponent ? null : (\n    <div style={{ opacity: 0 }}>\n      {signatureFonts.map((font) => (\n        <span key={font} style={{ fontFamily: font }}></span>\n      ))}\n    </div>\n  );\n};\nexport default FontHandler;\n","var PUBLISH = 0;\nvar SUBSCRIBE = 1;\nvar RESET = 2;\nvar VALUE = 4;\n\n/**\r\n * Utils includes\r\n * - a handful of functional utilities inspired by or taken from the [Ramda library](https://ramdajs.com/);\r\n * - TypeScript crutches - the [[tup]] function.\r\n *\r\n * Use these for your convenience - they are here so that urx is zero-dependency package.\r\n *\r\n * @packageDocumentation\r\n */\n\n/**\r\n * Performs left to right composition of two functions.\r\n */\nfunction compose(a, b) {\n  return function (arg) {\n    return a(b(arg));\n  };\n}\n/**\r\n * Takes a value and applies a function to it.\r\n */\n\nfunction thrush(arg, proc) {\n  return proc(arg);\n}\n/**\r\n * Takes a 2 argument function and partially applies the first argument.\r\n */\n\nfunction curry2to1(proc, arg1) {\n  return function (arg2) {\n    return proc(arg1, arg2);\n  };\n}\n/**\r\n * Takes a 1 argument function and returns a function which when called, executes it with the provided argument.\r\n */\n\nfunction curry1to0(proc, arg) {\n  return function () {\n    return proc(arg);\n  };\n}\n/**\r\n * Returns a function which extracts the property from from the passed object.\r\n */\n\nfunction prop(property) {\n  return function (object) {\n    return object[property];\n  };\n}\n/**\r\n * Calls callback with the first argument, and returns it.\r\n */\n\nfunction tap(arg, proc) {\n  proc(arg);\n  return arg;\n}\n/**\r\n *  Utility function to help typescript figure out that what we pass is a tuple and not a generic array.\r\n *  Taken from (this StackOverflow tread)[https://stackoverflow.com/questions/49729550/implicitly-create-a-tuple-in-typescript/52445008#52445008]\r\n */\n\nfunction tup() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return args;\n}\n/**\r\n * Calls the passed function.\r\n */\n\nfunction call(proc) {\n  proc();\n}\n/**\r\n * returns a function which when called always returns the passed value\r\n */\n\nfunction always(value) {\n  return function () {\n    return value;\n  };\n}\n/**\r\n * returns a function which calls all passed functions in the passed order.\r\n * joinProc does not pass arguments or collect return values.\r\n */\n\nfunction joinProc() {\n  for (var _len2 = arguments.length, procs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    procs[_key2] = arguments[_key2];\n  }\n\n  return function () {\n    procs.map(call);\n  };\n}\nfunction noop() {}\n\n/**\r\n * urx Actions operate on streams - `publish` publishes data in a stream, and `subscribe` attaches a subscription to a stream.\r\n * @packageDocumentation\r\n */\n/**\r\n * Subscribes the specified [[Subscription]] to the updates from the Emitter.\r\n * The emitter calls the subscription with the new data each time new data is published into it.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n * subscribe(foo, (value) => console.log(value));\r\n * ```\r\n *\r\n * @returns an [[Unsubscribe]] handle  - calling it will unbind the subscription from the emitter.\r\n *```ts\r\n * const foo = stream<number>();\r\n * const unsub = subscribe(foo, (value) => console.log(value));\r\n * unsub();\r\n *```\r\n */\n\nfunction subscribe(emitter, subscription) {\n  return emitter(SUBSCRIBE, subscription);\n}\n/**\r\n * Publishes the value into the passed [[Publisher]].\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n * publish(foo, 42);\r\n * ```\r\n */\n\nfunction publish(publisher, value) {\n  publisher(PUBLISH, value);\n}\n/**\r\n * Clears all subscriptions from the [[Emitter]].\r\n * ```ts\r\n * const foo = stream<number>();\r\n * subscribe(foo, (value) => console.log(value));\r\n * reset(foo);\r\n * publish(foo, 42);\r\n * ```\r\n */\n\nfunction reset(emitter) {\n  emitter(RESET);\n}\n/**\r\n * Extracts the current value from a stateful stream. Use it only as an escape hatch, as it violates the concept of reactive programming.\r\n * ```ts\r\n * const foo = statefulStream(42);\r\n * console.log(getValue(foo));\r\n * ```\r\n */\n\nfunction getValue(depot) {\n  return depot(VALUE);\n}\n/**\r\n * Connects two streams - any value emitted from the emitter will be published in the publisher.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * const bar = stream<number>();\r\n * subscribe(bar, (value) => console.log(`Bar emitted ${value}`));\r\n *\r\n * connect(foo, bar);\r\n * publish(foo);\r\n * ```\r\n * @returns an [[Unsubscribe]] handle which will disconnect the two streams.\r\n */\n\nfunction connect(emitter, publisher) {\n  return subscribe(emitter, curry2to1(publisher, PUBLISH));\n}\n/**\r\n * Executes the passed subscription at most once, for the next emit from the emitter.\r\n * ```ts\r\n * const foo = stream<number>()\r\n * handleNext(foo, value => console.log(value)) // called once, with 42\r\n * publish(foo, 42)\r\n * publish(foo, 43)\r\n * ```\r\n * @returns an [[Unsubscribe]] handle to unbind the subscription if necessary.\r\n */\n\nfunction handleNext(emitter, subscription) {\n  var unsub = emitter(SUBSCRIBE, function (value) {\n    unsub();\n    subscription(value);\n  });\n  return unsub;\n}\n\n/**\r\n * Streams are the basic building blocks of a reactive system. Think of them as the system permanent \"data tubes\".\r\n *\r\n * A stream acts as both an [[Emitter]] and [[Publisher]]. Each stream can have multiple {@link Subscription | Subscriptions}.\r\n *\r\n * urx streams are either **stateless** or **stateful**.\r\n * Stateless streams emit data to existing subscriptions when published, without keeping track of it.\r\n * Stateful streams remember the last published value and immediately publish it to new subscriptions.\r\n *\r\n * ```ts\r\n * import { stream, statefulStream, publish, subscribe } from \"@virtuoso.dev/urx\";\r\n *\r\n * // foo is a stateless stream\r\n * const foo = stream<number>();\r\n *\r\n * publish(foo, 42);\r\n * // this subsription will not be called...\r\n * subscribe(foo, (value) => console.log(value));\r\n * // it will only catch published values after it\r\n * publish(foo, 43);\r\n *\r\n * // stateful streams always start with an initial value\r\n * const bar = statefulStream(42);\r\n *\r\n * // subscribing to a stateful stream\r\n * // immediately calls the subscription with the current value\r\n * subscribe(bar, (value) => console.log(value));\r\n *\r\n * // subsequent publishing works just like stateless streams\r\n * publish(bar, 43);\r\n * ```\r\n * @packageDocumentation\r\n */\n/**\r\n * Constructs a new stateless stream.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * ```\r\n * @typeParam T the type of values to publish in the stream.\r\n * @returns a [[Stream]]\r\n */\n\nfunction stream() {\n  var subscriptions = [];\n  return function (action, arg) {\n    switch (action) {\n      case RESET:\n        subscriptions.splice(0, subscriptions.length);\n        return;\n\n      case SUBSCRIBE:\n        subscriptions.push(arg);\n        return function () {\n          var indexOf = subscriptions.indexOf(arg);\n\n          if (indexOf > -1) {\n            subscriptions.splice(indexOf, 1);\n          }\n        };\n\n      case PUBLISH:\n        subscriptions.slice().forEach(function (subscription) {\n          subscription(arg);\n        });\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * Constructs a new stateful stream.\r\n * ```ts\r\n * const foo = statefulStream(42);\r\n * ```\r\n * @param initial the initial value in the stream.\r\n * @typeParam T the type of values to publish in the stream. If omitted, the function infers it from the initial value.\r\n * @returns a [[StatefulStream]]\r\n */\n\nfunction statefulStream(initial) {\n  var value = initial;\n  var innerSubject = stream();\n  return function (action, arg) {\n    switch (action) {\n      case SUBSCRIBE:\n        var subscription = arg;\n        subscription(value);\n        break;\n\n      case PUBLISH:\n        value = arg;\n        break;\n\n      case VALUE:\n        return value;\n    }\n\n    return innerSubject(action, arg);\n  };\n}\n/**\r\n * Event handlers are special emitters which can have **at most one active subscription**.\r\n * Subscribing to an event handler unsubscribes the previous subscription, if present.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * const fooEvent = eventHandler(foo);\r\n *\r\n * // will be called once with 42\r\n * subscribe(fooEvent, (value) => console.log(`Sub 1 ${value}`));\r\n * publish(foo, 42);\r\n *\r\n * // unsubscribes sub 1\r\n * subscribe(fooEvent, (value) => console.log(`Sub 2 ${value}`));\r\n * publish(foo, 43);\r\n * ```\r\n * @param emitter the source emitter.\r\n * @returns the single-subscription emitter.\r\n */\n\nfunction eventHandler(emitter) {\n  var unsub;\n  var currentSubscription;\n\n  var cleanup = function cleanup() {\n    return unsub && unsub();\n  };\n\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        if (subscription) {\n          if (currentSubscription === subscription) {\n            return;\n          }\n\n          cleanup();\n          currentSubscription = subscription;\n          unsub = subscribe(emitter, subscription);\n          return unsub;\n        } else {\n          cleanup();\n          return noop;\n        }\n\n      case RESET:\n        cleanup();\n        currentSubscription = null;\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * Creates and connects a \"junction\" stream to the specified emitter. Often used with [[pipe]], to avoid the multiple evaluation of operator sets.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n *\r\n * const fooX2 = pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * );\r\n *\r\n * subscribe(fooX2, (value) => console.log(value));\r\n * subscribe(fooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42); // executes the map operator twice for each subscription.\r\n *\r\n * const sharedFooX2 = streamFromEmitter(pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`shared multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * ));\r\n *\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42);\r\n *```\r\n * @returns the resulting stream.\r\n */\n\nfunction streamFromEmitter(emitter) {\n  return tap(stream(), function (stream) {\n    return connect(emitter, stream);\n  });\n}\n/**\r\n * Creates and connects a \"junction\" stateful stream to the specified emitter. Often used with [[pipe]], to avoid the multiple evaluation of operator sets.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n *\r\n * const fooX2 = pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * );\r\n *\r\n * subscribe(fooX2, (value) => console.log(value));\r\n * subscribe(fooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42); // executes the map operator twice for each subscription.\r\n *\r\n * const sharedFooX2 = statefulStreamFromEmitter(pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`shared multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * ), 42);\r\n *\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42);\r\n *```\r\n * @param initial the initial value in the stream.\r\n * @returns the resulting stateful stream.\r\n */\n\nfunction statefulStreamFromEmitter(emitter, initial) {\n  return tap(statefulStream(initial), function (stream) {\n    return connect(emitter, stream);\n  });\n}\n\n/**\r\n *\r\n * Stream values can be transformed and controlled by {@link pipe | **piping**} through **operators**.\r\n * urx includes several operators like [[map]], [[filter]], [[scan]], and [[throttleTime]].\r\n * The [[withLatestFrom]] operator allows the combination of values from other streams.\r\n *\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * // create an emitter that first adds 2 to the passed value, then multiplies it by * 2\r\n * const bar = pipe(foo, map(value => value + 2), map(value => value * 2))\r\n * subscribe(bar, value => console.log(value))\r\n * publish(foo, 2) // outputs 8\r\n * ```\r\n *\r\n * ### Implementing Custom Operators\r\n * To implement your own operators, implement the [[Operator]] interface.\r\n * @packageDocumentation\r\n */\n/** @internal */\n\nfunction combineOperators() {\n  for (var _len = arguments.length, operators = new Array(_len), _key = 0; _key < _len; _key++) {\n    operators[_key] = arguments[_key];\n  }\n\n  return function (subscriber) {\n    return operators.reduceRight(thrush, subscriber);\n  };\n}\n\nfunction pipe(source) {\n  for (var _len2 = arguments.length, operators = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    operators[_key2 - 1] = arguments[_key2];\n  }\n\n  // prettier-ignore\n  var project = combineOperators.apply(void 0, operators);\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        return subscribe(source, project(subscription));\n\n      case RESET:\n        reset(source);\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * The default [[Comparator]] for [[distinctUntilChanged]] and [[duc]].\r\n */\n\nfunction defaultComparator(previous, next) {\n  return previous === next;\n}\n/**\r\n * Filters out identical values. Pass an optional [[Comparator]] if you need to filter non-primitive values.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, distinctUntilChanged()),\r\n *  console.log\r\n * ) // will be called only once\r\n *\r\n * publish(foo, 42)\r\n * publish(foo, 42)\r\n * ```\r\n */\n\nfunction distinctUntilChanged(comparator) {\n  if (comparator === void 0) {\n    comparator = defaultComparator;\n  }\n\n  var current;\n  return function (done) {\n    return function (next) {\n      if (!comparator(current, next)) {\n        current = next;\n        done(next);\n      }\n    };\n  };\n}\n/**\r\n * Filters out values for which the predicator does not return `true`-ish.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, filter(value => value % 2 === 0)),\r\n *  console.log\r\n * ) // will be called only with even values\r\n *\r\n * publish(foo, 2)\r\n * publish(foo, 3)\r\n * publish(foo, 4)\r\n * publish(foo, 5)\r\n * ```\r\n */\n\nfunction filter(predicate) {\n  return function (done) {\n    return function (value) {\n      predicate(value) && done(value);\n    };\n  };\n}\n/**\r\n * Maps values using the provided project function.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, map(value => value * 2)),\r\n *  console.log\r\n * ) // 4, 6\r\n *\r\n * publish(foo, 2)\r\n * publish(foo, 3)\r\n * ```\r\n */\n\nfunction map(project) {\n  return function (done) {\n    return compose(done, project);\n  };\n}\n/**\r\n * Maps values to the hard-coded value.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, mapTo(3)),\r\n *  console.log\r\n * ) // 3, 3\r\n *\r\n * publish(foo, 1)\r\n * publish(foo, 2)\r\n * ```\r\n */\n\nfunction mapTo(value) {\n  return function (done) {\n    return function () {\n      return done(value);\n    };\n  };\n}\n/**\r\n * Works like Array#reduce.\r\n * Applies an accumulator function on the emitter, and outputs intermediate result. Starts with the initial value.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, scan((acc, value) => acc + value, 2),\r\n *  console.log\r\n * ) // 3, 5\r\n *\r\n * publish(foo, 1)\r\n * publish(foo, 2)\r\n * ```\r\n */\n\nfunction scan(scanner, initial) {\n  return function (done) {\n    return function (value) {\n      return done(initial = scanner(initial, value));\n    };\n  };\n}\n/**\r\n * Skips the specified amount of values from the emitter.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, skip(2)),\r\n *  console.log\r\n * ) // 3, 4\r\n *\r\n * publish(foo, 1) // skipped\r\n * publish(foo, 2) // skipped\r\n * publish(foo, 3)\r\n * publish(foo, 4)\r\n * ```\r\n */\n\nfunction skip(times) {\n  return function (done) {\n    return function (value) {\n      times > 0 ? times-- : done(value);\n    };\n  };\n}\n/**\r\n * Throttles flowing values at the provided interval in milliseconds.\r\n * [Throttle VS Debounce in SO](https://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function).\r\n *\r\n * ```ts\r\n *  const foo = stream<number>()\r\n *  publish(foo, 1)\r\n *\r\n *  setTimeout(() => publish(foo, 2), 20)\r\n *  setTimeout(() => publish(foo, 3), 20)\r\n *\r\n *  subscribe(pipe(foo, throttleTime(50)), val => {\r\n *    console.log(value); // 3\r\n *  })\r\n * ```\r\n */\n\nfunction throttleTime(interval) {\n  var currentValue;\n  var timeout;\n  return function (done) {\n    return function (value) {\n      currentValue = value;\n\n      if (timeout) {\n        return;\n      }\n\n      timeout = setTimeout(function () {\n        timeout = undefined;\n        done(currentValue);\n      }, interval);\n    };\n  };\n}\n/**\r\n * Debounces flowing values at the provided interval in milliseconds.\r\n * [Throttle VS Debounce in SO](https://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function).\r\n *\r\n * ```ts\r\n *  const foo = stream<number>()\r\n *  publish(foo, 1)\r\n *\r\n *  setTimeout(() => publish(foo, 2), 20)\r\n *  setTimeout(() => publish(foo, 3), 20)\r\n *\r\n *  subscribe(pipe(foo, debounceTime(50)), val => {\r\n *    console.log(value); // 3\r\n *  })\r\n * ```\r\n */\n\nfunction debounceTime(interval) {\n  var currentValue;\n  var timeout;\n  return function (done) {\n    return function (value) {\n      currentValue = value;\n\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n\n      timeout = setTimeout(function () {\n        done(currentValue);\n      }, interval);\n    };\n  };\n}\nfunction withLatestFrom() {\n  for (var _len3 = arguments.length, sources = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    sources[_key3] = arguments[_key3];\n  }\n\n  var values = new Array(sources.length);\n  var called = 0;\n  var pendingCall = null;\n  var allCalled = Math.pow(2, sources.length) - 1;\n  sources.forEach(function (source, index) {\n    var bit = Math.pow(2, index);\n    subscribe(source, function (value) {\n      var prevCalled = called;\n      called = called | bit;\n      values[index] = value;\n\n      if (prevCalled !== allCalled && called === allCalled && pendingCall) {\n        pendingCall();\n        pendingCall = null;\n      }\n    });\n  });\n  return function (done) {\n    return function (value) {\n      var call = function call() {\n        return done([value].concat(values));\n      };\n\n      if (called === allCalled) {\n        call();\n      } else {\n        pendingCall = call;\n      }\n    };\n  };\n}\n\n/**\r\n * Transformers change and combine streams, similar to operators.\r\n * urx comes with two combinators - [[combineLatest]] and [[merge]], and one convenience filter - [[duc]].\r\n *\r\n * @packageDocumentation\r\n */\n/**\r\n * Merges one or more emitters from the same type into a new Emitter which emits values from any of the source emitters.\r\n * ```ts\r\n * const foo = stream<number>()\r\n * const bar = stream<number>()\r\n *\r\n * subscribe(merge(foo, bar), (value) => console.log(value)) // 42, 43\r\n *\r\n * publish(foo, 42)\r\n * publish(bar, 43)\r\n * ```\r\n */\n\nfunction merge() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        return joinProc.apply(void 0, sources.map(function (source) {\n          return subscribe(source, subscription);\n        }));\n\n      case RESET:\n        // do nothing, we are stateless\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * A convenience wrapper that emits only the distinct values from the passed Emitter. Wraps [[pipe]] and [[distinctUntilChanged]].\r\n *\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * // this line...\r\n * const a = duc(foo)\r\n *\r\n * // is equivalent to this\r\n * const b = pipe(distinctUntilChanged(foo))\r\n * ```\r\n *\r\n * @param source The source emitter.\r\n * @param comparator optional custom comparison function for the two values.\r\n *\r\n * @typeParam T the type of the value emitted by the source.\r\n *\r\n * @returns the resulting emitter.\r\n */\n\nfunction duc(source, comparator) {\n  if (comparator === void 0) {\n    comparator = defaultComparator;\n  }\n\n  return pipe(source, distinctUntilChanged(comparator));\n}\nfunction combineLatest() {\n  var innerSubject = stream();\n\n  for (var _len2 = arguments.length, emitters = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    emitters[_key2] = arguments[_key2];\n  }\n\n  var values = new Array(emitters.length);\n  var called = 0;\n  var allCalled = Math.pow(2, emitters.length) - 1;\n  emitters.forEach(function (source, index) {\n    var bit = Math.pow(2, index);\n    subscribe(source, function (value) {\n      values[index] = value;\n      called = called | bit;\n\n      if (called === allCalled) {\n        publish(innerSubject, values);\n      }\n    });\n  });\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        if (called === allCalled) {\n          subscription(values);\n        }\n\n        return subscribe(innerSubject, subscription);\n\n      case RESET:\n        return reset(innerSubject);\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n\n/**\r\n * `system` defines a specification of a system - its constructor, dependencies and if it should act as a singleton in a system dependency tree.\r\n * When called, system returns a [[SystemSpec]], which is then initialized along with its dependencies by passing it to [[init]].\r\n *\r\n * ```ts\r\n * @import { subscribe, publish, system, init, tup, connect, map, pipe } from 'urx'\r\n *\r\n * // a simple system with two streams\r\n * const sys1 = system(() => {\r\n *  const a = stream<number>()\r\n *  const b = stream<number>()\r\n *\r\n *  connect(pipe(a, map(value => value * 2)), b)\r\n *  return { a, b }\r\n * })\r\n *\r\n * // a second system which depends on the streams from the first one\r\n * const sys2 = system(([ {a, b} ]) => {\r\n *  const c = stream<number>()\r\n *  connect(pipe(b, map(value => value * 2)), c)\r\n *  // re-export the `a` stream, keep `b` internal\r\n *  return { a, c }\r\n * }, tup(sys1))\r\n *\r\n * // init will recursively initialize sys2 dependencies, in this case sys1\r\n * const { a, c } = init(sys2)\r\n * subscribe(c, c => console.log(`Value multiplied by 4`, c))\r\n * publish(a, 2)\r\n * ```\r\n *\r\n * #### Singletons in Dependency Tree\r\n *\r\n * By default, systems will be initialized only once if encountered multiple times in the dependency tree.\r\n * In the below dependency system tree, systems `b` and `c` will receive the same stream instances from system `a` when system `d` is initialized.\r\n * ```txt\r\n *   a\r\n *  / \\\r\n * b   c\r\n *  \\ /\r\n *   d\r\n * ```\r\n * If `a` gets `{singleton: false}` as a last argument, `init` creates two separate instances - one for `b` and one for `c`.\r\n *\r\n * @param constructor the system constructor function. Initialize and connect the streams in its body.\r\n *\r\n * @param dependencies the system dependencies, which the constructor will receive as arguments.\r\n * Use the [[tup]] utility **For TypeScript type inference to work correctly**.\r\n * ```ts\r\n * const sys3 = system(() => { ... }, tup(sys2, sys1))\r\n * ```\r\n * @param __namedParameters Options\r\n * @param singleton determines if the system will act as a singleton in a system dependency tree. `true` by default.\r\n */\nfunction system(constructor, dependencies, _temp) {\n  if (dependencies === void 0) {\n    dependencies = [];\n  }\n\n  var _ref = _temp === void 0 ? {\n    singleton: true\n  } : _temp,\n      singleton = _ref.singleton;\n\n  return {\n    id: id(),\n    constructor: constructor,\n    dependencies: dependencies,\n    singleton: singleton\n  };\n}\n/** @internal */\n\nvar id = function id() {\n  return Symbol();\n};\n/**\r\n * Initializes a [[SystemSpec]] by recursively initializing its dependencies.\r\n *\r\n * ```ts\r\n * // a simple system with two streams\r\n * const sys1 = system(() => {\r\n *  const a = stream<number>()\r\n *  const b = stream<number>()\r\n *\r\n *  connect(pipe(a, map(value => value * 2)), b)\r\n *  return { a, b }\r\n * })\r\n *\r\n * const { a, b } = init(sys1)\r\n * subscribe(b, b => console.log(b))\r\n * publish(a, 2)\r\n * ```\r\n *\r\n * @returns the [[System]] constructed by the spec constructor.\r\n * @param systemSpec the system spec to initialize.\r\n */\n\n\nfunction init(systemSpec) {\n  var singletons = new Map();\n\n  var _init = function _init(_ref2) {\n    var id = _ref2.id,\n        constructor = _ref2.constructor,\n        dependencies = _ref2.dependencies,\n        singleton = _ref2.singleton;\n\n    if (singleton && singletons.has(id)) {\n      return singletons.get(id);\n    }\n\n    var system = constructor(dependencies.map(function (e) {\n      return _init(e);\n    }));\n\n    if (singleton) {\n      singletons.set(id, system);\n    }\n\n    return system;\n  };\n\n  return _init(systemSpec);\n}\n\nexport { always, call, combineLatest, compose, connect, curry1to0, curry2to1, debounceTime, defaultComparator, distinctUntilChanged, duc, eventHandler, filter, getValue, handleNext, init, joinProc, map, mapTo, merge, noop, pipe, prop, publish, reset, scan, skip, statefulStream, statefulStreamFromEmitter, stream, streamFromEmitter, subscribe, system, tap, throttleTime, thrush, tup, withLatestFrom };\n//# sourceMappingURL=urx.esm.js.map\n","import { createContext, forwardRef, useState, useImperativeHandle, createElement, useLayoutEffect, useEffect, useCallback, useContext } from 'react';\nimport { tap, init, curry1to0, subscribe, reset, always, publish, eventHandler, curry2to1, getValue } from '@virtuoso.dev/urx';\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 _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (it) return (it = it.call(o)).next.bind(it);\n\n  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n    if (it) o = it;\n    var i = 0;\n    return function () {\n      if (i >= o.length) return {\n        done: true\n      };\n      return {\n        done: false,\n        value: o[i++]\n      };\n    };\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\nvar _excluded = [\"children\"];\n/** @internal */\n\nfunction omit(keys, obj) {\n  var result = {};\n  var index = {};\n  var idx = 0;\n  var len = keys.length;\n\n  while (idx < len) {\n    index[keys[idx]] = 1;\n    idx += 1;\n  }\n\n  for (var prop in obj) {\n    if (!index.hasOwnProperty(prop)) {\n      result[prop] = obj[prop];\n    }\n  }\n\n  return result;\n}\n\nvar useIsomorphicLayoutEffect = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n/**\r\n * Converts a system spec to React component by mapping the system streams to component properties, events and methods. Returns hooks for querying and modifying\r\n * the system streams from the component's child components.\r\n * @param systemSpec The return value from a [[system]] call.\r\n * @param map The streams to props / events / methods mapping Check [[SystemPropsMap]] for more details.\r\n * @param Root The optional React component to render. By default, the resulting component renders nothing, acting as a logical wrapper for its children.\r\n * @returns an object containing the following:\r\n *  - `Component`: the React component.\r\n *  - `useEmitterValue`: a hook that lets child components use values emitted from the specified output stream.\r\n *  - `useEmitter`: a hook that calls the provided callback whenever the specified stream emits a value.\r\n *  - `usePublisher`: a hook which lets child components publish values to the specified stream.\r\n *  <hr />\r\n */\n\nfunction systemToComponent(systemSpec, map, Root) {\n  var requiredPropNames = Object.keys(map.required || {});\n  var optionalPropNames = Object.keys(map.optional || {});\n  var methodNames = Object.keys(map.methods || {});\n  var eventNames = Object.keys(map.events || {});\n  var Context = createContext({});\n\n  function applyPropsToSystem(system, props) {\n    if (system['propsReady']) {\n      publish(system['propsReady'], false);\n    }\n\n    for (var _iterator = _createForOfIteratorHelperLoose(requiredPropNames), _step; !(_step = _iterator()).done;) {\n      var requiredPropName = _step.value;\n      var stream = system[map.required[requiredPropName]];\n      publish(stream, props[requiredPropName]);\n    }\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(optionalPropNames), _step2; !(_step2 = _iterator2()).done;) {\n      var optionalPropName = _step2.value;\n\n      if (optionalPropName in props) {\n        var _stream = system[map.optional[optionalPropName]];\n        publish(_stream, props[optionalPropName]);\n      }\n    }\n\n    if (system['propsReady']) {\n      publish(system['propsReady'], true);\n    }\n  }\n\n  function buildMethods(system) {\n    return methodNames.reduce(function (acc, methodName) {\n\n      acc[methodName] = function (value) {\n        var stream = system[map.methods[methodName]];\n        publish(stream, value);\n      };\n\n      return acc;\n    }, {});\n  }\n\n  function buildEventHandlers(system) {\n    return eventNames.reduce(function (handlers, eventName) {\n      handlers[eventName] = eventHandler(system[map.events[eventName]]);\n      return handlers;\n    }, {});\n  }\n  /**\r\n   * A React component generated from an urx system\r\n   */\n\n\n  var Component = forwardRef(function (propsWithChildren, ref) {\n    var children = propsWithChildren.children,\n        props = _objectWithoutPropertiesLoose(propsWithChildren, _excluded);\n\n    var _useState = useState(function () {\n      return tap(init(systemSpec), function (system) {\n        return applyPropsToSystem(system, props);\n      });\n    }),\n        system = _useState[0];\n\n    var _useState2 = useState(curry1to0(buildEventHandlers, system)),\n        handlers = _useState2[0];\n\n    useIsomorphicLayoutEffect(function () {\n      for (var _iterator3 = _createForOfIteratorHelperLoose(eventNames), _step3; !(_step3 = _iterator3()).done;) {\n        var eventName = _step3.value;\n\n        if (eventName in props) {\n          subscribe(handlers[eventName], props[eventName]);\n        }\n      }\n\n      return function () {\n        Object.values(handlers).map(reset);\n      };\n    }, [props, handlers, system]);\n    useIsomorphicLayoutEffect(function () {\n      applyPropsToSystem(system, props);\n    });\n    useImperativeHandle(ref, always(buildMethods(system)));\n    return createElement(Context.Provider, {\n      value: system\n    }, Root ? createElement(Root, omit([].concat(requiredPropNames, optionalPropNames, eventNames), props), children) : children);\n  });\n\n  var usePublisher = function usePublisher(key) {\n    return useCallback(curry2to1(publish, useContext(Context)[key]), [key]);\n  };\n  /**\r\n   * Returns the value emitted from the stream.\r\n   */\n\n\n  var useEmitterValue = function useEmitterValue(key) {\n    var context = useContext(Context);\n    var source = context[key];\n\n    var _useState3 = useState(curry1to0(getValue, source)),\n        value = _useState3[0],\n        setValue = _useState3[1];\n\n    useIsomorphicLayoutEffect(function () {\n      return subscribe(source, function (next) {\n        if (next !== value) {\n          setValue(always(next));\n        }\n      });\n    }, [source, value]);\n    return value;\n  };\n\n  var useEmitter = function useEmitter(key, callback) {\n    var context = useContext(Context);\n    var source = context[key];\n    useIsomorphicLayoutEffect(function () {\n      return subscribe(source, callback);\n    }, [callback, source]);\n  };\n\n  return {\n    Component: Component,\n    usePublisher: usePublisher,\n    useEmitterValue: useEmitterValue,\n    useEmitter: useEmitter\n  };\n}\n\nexport { systemToComponent };\n//# sourceMappingURL=react-urx.esm.js.map\n","import{systemToComponent as t}from\"@virtuoso.dev/react-urx\";import*as e from\"@virtuoso.dev/urx\";import{getValue as n,tup as o,system as r,stream as i,streamFromEmitter as a,pipe as l,map as s,connect as u,prop as c,combineLatest as m,filter as d,distinctUntilChanged as f,statefulStream as p,noop as h,subscribe as g,publish as v,statefulStreamFromEmitter as S,withLatestFrom as I,compose as C}from\"@virtuoso.dev/urx\";import*as T from\"react\";import{useLayoutEffect as w,useEffect as x,useRef as y,useCallback as b,createElement as E}from\"react\";function H(){return H=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},H.apply(this,arguments)}function R(t,e){if(null==t)return{};var n,o,r={},i=Object.keys(t);for(o=0;o<i.length;o++)e.indexOf(n=i[o])>=0||(r[n]=t[n]);return r}function L(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function k(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if(\"string\"==typeof t)return L(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var o=0;return function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}}}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 z,B,F=\"undefined\"!=typeof document?w:x;!function(t){t[t.DEBUG=0]=\"DEBUG\",t[t.INFO=1]=\"INFO\",t[t.WARN=2]=\"WARN\",t[t.ERROR=3]=\"ERROR\"}(B||(B={}));var P=((z={})[B.DEBUG]=\"debug\",z[B.INFO]=\"log\",z[B.WARN]=\"warn\",z[B.ERROR]=\"error\",z),O=e.system(function(){var t=e.statefulStream(B.ERROR);return{log:e.statefulStream(function(n,o,r){var i;void 0===r&&(r=B.INFO),r>=(null!=(i=(\"undefined\"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL)?i:e.getValue(t))&&console[P[r]](\"%creact-virtuoso: %c%s %o\",\"color: #0253b3; font-weight: bold\",\"color: initial\",n,o)}),logLevel:t}},[],{singleton:!0});function M(t,e){void 0===e&&(e=!0);var n=y(null),o=function(t){};if(\"undefined\"!=typeof ResizeObserver){var r=new ResizeObserver(function(e){var n=e[0].target;null!==n.offsetParent&&t(n)});o=function(t){t&&e?(r.observe(t),n.current=t):(n.current&&r.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:o}}function V(t,e){return void 0===e&&(e=!0),M(t,e).callbackRef}function U(t,e,n,o,r,i){return M(function(n){for(var a=function(t,e,n,o){var r=t.length;if(0===r)return null;for(var i=[],a=0;a<r;a++){var l=t.item(a);if(l&&void 0!==l.dataset.index){var s=parseInt(l.dataset.index),u=parseFloat(l.dataset.knownSize),c=e(l,\"offsetHeight\");if(0===c&&o(\"Zero-sized element, this should not happen\",{child:l},B.ERROR),c!==u){var m=i[i.length-1];0===i.length||m.size!==c||m.endIndex!==s-1?i.push({startIndex:s,endIndex:s,size:c}):i[i.length-1].endIndex++}}}return i}(n.children,e,0,r),l=n.parentElement;!l.dataset.virtuosoScroller;)l=l.parentElement;var s=i?i.scrollTop:\"window\"===l.firstElementChild.dataset.viewportType?window.pageYOffset||document.documentElement.scrollTop:l.scrollTop;o({scrollTop:Math.max(s,0),scrollHeight:(null!=i?i:l).scrollHeight,viewportHeight:(null!=i?i:l).offsetHeight}),null!==a&&t(a)},n)}function A(t,e){return Math.round(t.getBoundingClientRect()[e])}function W(t,n,o,r,i){void 0===r&&(r=e.noop);var a=y(null),l=y(null),s=y(null),u=b(function(e){var o=e.target,r=o===window||o===document?window.pageYOffset||document.documentElement.scrollTop:o.scrollTop,i=o===window?document.documentElement.scrollHeight:o.scrollHeight,a=o===window?window.innerHeight:o.offsetHeight;t({scrollTop:Math.max(r,0),scrollHeight:i,viewportHeight:a}),null!==l.current&&(r===l.current||r<=0||r===o.scrollHeight-A(o,\"height\"))&&(l.current=null,n(!0),s.current&&(clearTimeout(s.current),s.current=null))},[t,n]);return x(function(){var t=i||a.current;return r(i||a.current),u({target:t}),t.addEventListener(\"scroll\",u,{passive:!0}),function(){r(null),t.removeEventListener(\"scroll\",u)}},[a,u,o,r,i]),{scrollerRef:a,scrollByCallback:function(t){a.current.scrollBy(t)},scrollToCallback:function(e){var o=a.current;if(o&&(!(\"offsetHeight\"in o)||0!==o.offsetHeight)){var r,i,u,c=\"smooth\"===e.behavior;if(o===window?(i=Math.max(A(document.documentElement,\"height\"),document.documentElement.scrollHeight),r=window.innerHeight,u=document.documentElement.scrollTop):(i=o.scrollHeight,r=A(o,\"height\"),u=o.scrollTop),e.top=Math.ceil(Math.max(Math.min(i-r,e.top),0)),Math.abs(r-i)<1.01||e.top===u)return t({scrollTop:u,scrollHeight:i,viewportHeight:r}),void(c&&n(!0));c?(l.current=e.top,s.current&&clearTimeout(s.current),s.current=setTimeout(function(){s.current=null,l.current=null,n(!0)},1e3)):l.current=null,o.scrollTo(e)}}}}var N=e.system(function(){var t=e.stream(),n=e.stream(),o=e.statefulStream(0),r=e.stream(),i=e.statefulStream(0),a=e.stream(),l=e.stream(),s=e.statefulStream(0),u=e.statefulStream(0),c=e.stream(),m=e.stream(),d=e.statefulStream(!1),f=e.statefulStream(!1);return e.connect(e.pipe(t,e.map(function(t){return t.scrollTop})),n),e.connect(e.pipe(t,e.map(function(t){return t.scrollHeight})),l),e.connect(n,i),{scrollContainerState:t,scrollTop:n,viewportHeight:a,headerHeight:s,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:r,react18ConcurrentRendering:f,scrollTo:c,scrollBy:m,statefulScrollTop:i,deviation:o,scrollingInProgress:d}},[],{singleton:!0}),D={lvl:0};function G(t,e,n,o,r){return void 0===o&&(o=D),void 0===r&&(r=D),{k:t,v:e,lvl:n,l:o,r:r}}function _(t){return t===D}function j(){return D}function K(t,e){if(_(t))return D;var n=t.k,o=t.l,r=t.r;if(e===n){if(_(o))return r;if(_(r))return o;var i=$(o);return et(X(t,{k:i[0],v:i[1],l:Q(o)}))}return et(X(t,e<n?{l:K(o,e)}:{r:K(r,e)}))}function Y(t,e,n){if(void 0===n&&(n=\"k\"),_(t))return[-Infinity,void 0];if(t[n]===e)return[t.k,t.v];if(t[n]<e){var o=Y(t.r,e,n);return-Infinity===o[0]?[t.k,t.v]:o}return Y(t.l,e,n)}function Z(t,e,n){return _(t)?G(e,n,1):e===t.k?X(t,{k:e,v:n}):function(t){return rt(it(t))}(X(t,e<t.k?{l:Z(t.l,e,n)}:{r:Z(t.r,e,n)}))}function q(t,e,n){if(_(t))return[];var o=t.k,r=t.v,i=t.r,a=[];return o>e&&(a=a.concat(q(t.l,e,n))),o>=e&&o<=n&&a.push({k:o,v:r}),o<=n&&(a=a.concat(q(i,e,n))),a}function J(t){return _(t)?[]:[].concat(J(t.l),[{k:t.k,v:t.v}],J(t.r))}function $(t){return _(t.r)?[t.k,t.v]:$(t.r)}function Q(t){return _(t.r)?t.l:et(X(t,{r:Q(t.r)}))}function X(t,e){return G(void 0!==e.k?e.k:t.k,void 0!==e.v?e.v:t.v,void 0!==e.lvl?e.lvl:t.lvl,void 0!==e.l?e.l:t.l,void 0!==e.r?e.r:t.r)}function tt(t){return _(t)||t.lvl>t.r.lvl}function et(t){var e=t.l,n=t.r,o=t.lvl;if(n.lvl>=o-1&&e.lvl>=o-1)return t;if(o>n.lvl+1){if(tt(e))return it(X(t,{lvl:o-1}));if(_(e)||_(e.r))throw new Error(\"Unexpected empty nodes\");return X(e.r,{l:X(e,{r:e.r.l}),r:X(t,{l:e.r.r,lvl:o-1}),lvl:o})}if(tt(t))return rt(X(t,{lvl:o-1}));if(_(n)||_(n.l))throw new Error(\"Unexpected empty nodes\");var r=n.l,i=tt(r)?n.lvl-1:n.lvl;return X(r,{l:X(t,{r:r.l,lvl:o-1}),r:rt(X(n,{l:r.r,lvl:i})),lvl:r.lvl+1})}function nt(t,e,n){return _(t)?[]:ot(q(t,Y(t,e)[0],n),function(t){return{index:t.k,value:t.v}})}function ot(t,e){var n=t.length;if(0===n)return[];for(var o=e(t[0]),r=o.index,i=o.value,a=[],l=1;l<n;l++){var s=e(t[l]),u=s.index,c=s.value;a.push({start:r,end:u-1,value:i}),r=u,i=c}return a.push({start:r,end:Infinity,value:i}),a}function rt(t){var e=t.r,n=t.lvl;return _(e)||_(e.r)||e.lvl!==n||e.r.lvl!==n?t:X(e,{l:X(t,{r:e.l}),lvl:n+1})}function it(t){var e=t.l;return _(e)||e.lvl!==t.lvl?t:X(e,{r:X(t,{l:e.r})})}function at(t,e,n,o){void 0===o&&(o=0);for(var r=t.length-1;o<=r;){var i=Math.floor((o+r)/2),a=n(t[i],e);if(0===a)return i;if(-1===a){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error(\"Failed binary finding record in array - \"+t.join(\",\")+\", searched for \"+e)}function lt(t,e,n){return t[at(t,e,n)]}function st(t){var e=t.size,n=t.startIndex,o=t.endIndex;return function(t){return t.start===n&&(t.end===o||Infinity===t.end)&&t.value===e}}function ut(t,e){var n=t.index;return e===n?0:e<n?-1:1}function ct(t,e){var n=t.offset;return e===n?0:e<n?-1:1}function mt(t){return{index:t.index,value:t}}function dt(t,e,n){var o=t,r=0,i=0,a=0,l=0;if(0!==e){a=o[l=at(o,e-1,ut)].offset;var s=Y(n,e-1);r=s[0],i=s[1],o.length&&o[l].size===Y(n,e)[1]&&(l-=1),o=o.slice(0,l+1)}else o=[];for(var u,c=k(nt(n,e,Infinity));!(u=c()).done;){var m=u.value,d=m.start,f=m.value,p=(d-r)*i+a;o.push({offset:p,size:f,index:d}),r=d,a=p,i=f}return{offsetTree:o,lastIndex:r,lastOffset:a,lastSize:i}}function ft(t,e){var n=e[0],o=e[1];n.length>0&&(0,e[2])(\"received item sizes\",n,B.DEBUG);var r=t.sizeTree,i=r,a=0;if(o.length>0&&_(r)&&2===n.length){var l=n[0].size,s=n[1].size;i=o.reduce(function(t,e){return Z(Z(t,e,l),e+1,s)},i)}else{var u=function(t,e){for(var n,o=_(t)?0:Infinity,r=k(e);!(n=r()).done;){var i=n.value,a=i.size,l=i.startIndex,s=i.endIndex;if(o=Math.min(o,l),_(t))t=Z(t,0,a);else{var u=nt(t,l-1,s+1);if(!u.some(st(i))){for(var c,m=!1,d=!1,f=k(u);!(c=f()).done;){var p=c.value,h=p.start,g=p.end,v=p.value;m?(s>=h||a===v)&&(t=K(t,h)):(d=v!==a,m=!0),g>s&&s>=h&&v!==a&&(t=Z(t,s+1,v))}d&&(t=Z(t,l,a))}}}return[t,o]}(i,n);i=u[0],a=u[1]}if(i===r)return t;var c=dt(t.offsetTree,a,i),m=c.offsetTree;return{sizeTree:i,offsetTree:m,lastIndex:c.lastIndex,lastOffset:c.lastOffset,lastSize:c.lastSize,groupOffsetTree:o.reduce(function(t,e){return Z(t,e,pt(e,m))},j()),groupIndices:o}}function pt(t,e){if(0===e.length)return 0;var n=lt(e,t,ut);return n.size*(t-n.index)+n.offset}function ht(t,e){if(!gt(e))return t;for(var n=0;e.groupIndices[n]<=t+n;)n++;return t+n}function gt(t){return!_(t.groupOffsetTree)}var vt={offsetHeight:\"height\",offsetWidth:\"width\"},St=e.system(function(t){var n=t[0].log,o=e.stream(),r=e.stream(),i=e.statefulStreamFromEmitter(r,0),a=e.stream(),l=e.stream(),s=e.statefulStream(0),u=e.statefulStream([]),c=e.statefulStream(void 0),m=e.statefulStream(void 0),d=e.statefulStream(function(t,e){return A(t,vt[e])}),f=e.statefulStream(void 0),p={offsetTree:[],sizeTree:j(),groupOffsetTree:j(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},h=e.statefulStreamFromEmitter(e.pipe(o,e.withLatestFrom(u,n),e.scan(ft,p),e.distinctUntilChanged()),p);e.connect(e.pipe(u,e.filter(function(t){return t.length>0}),e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1],o=e.reduce(function(t,e,o){return Z(t,e,pt(e,n.offsetTree)||o)},j());return H({},n,{groupIndices:e,groupOffsetTree:o})})),h),e.connect(e.pipe(r,e.withLatestFrom(h),e.filter(function(t){return t[0]<t[1].lastIndex}),e.map(function(t){var e=t[1];return[{startIndex:t[0],endIndex:e.lastIndex,size:e.lastSize}]})),o),e.connect(c,m);var g=e.statefulStreamFromEmitter(e.pipe(c,e.map(function(t){return void 0===t})),!0);e.connect(e.pipe(m,e.filter(function(t){return void 0!==t&&_(e.getValue(h).sizeTree)}),e.map(function(t){return[{startIndex:0,endIndex:0,size:t}]})),o);var v=e.streamFromEmitter(e.pipe(o,e.withLatestFrom(h),e.scan(function(t,e){var n=e[1];return{changed:n!==t.sizes,sizes:n}},{changed:!1,sizes:p}),e.map(function(t){return t.changed})));e.subscribe(e.pipe(s,e.scan(function(t,e){return{diff:t.prev-e,prev:e}},{diff:0,prev:0}),e.map(function(t){return t.diff})),function(t){t>0?e.publish(a,t):t<0&&e.publish(l,t)}),e.subscribe(e.pipe(s,e.withLatestFrom(n)),function(t){t[0]<0&&(0,t[1])(\"`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value\",{firstItemIndex:s},B.ERROR)});var S=e.streamFromEmitter(a);e.connect(e.pipe(a,e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1];if(n.groupIndices.length>0)throw new Error(\"Virtuoso: prepending items does not work with groups\");return J(n.sizeTree).reduce(function(t,n){var o=n.k,r=n.v;return{ranges:[].concat(t.ranges,[{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}]),prevIndex:o+e,prevSize:r}},{ranges:[],prevIndex:0,prevSize:n.lastSize}).ranges})),o);var I=e.streamFromEmitter(e.pipe(l,e.withLatestFrom(h),e.map(function(t){return pt(-t[0],t[1].offsetTree)})));return e.connect(e.pipe(l,e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1];if(n.groupIndices.length>0)throw new Error(\"Virtuoso: shifting items does not work with groups\");var o=J(n.sizeTree).reduce(function(t,n){var o=n.v;return Z(t,Math.max(0,n.k+e),o)},j());return H({},n,{sizeTree:o},dt(n.offsetTree,0,o))})),h),{data:f,totalCount:r,sizeRanges:o,groupIndices:u,defaultItemSize:m,fixedItemSize:c,unshiftWith:a,shiftWith:l,shiftWithOffset:I,beforeUnshiftWith:S,firstItemIndex:s,sizes:h,listRefresh:v,statefulTotalCount:i,trackItemSizes:g,itemSize:d}},e.tup(O),{singleton:!0}),It=\"undefined\"!=typeof document&&\"scrollBehavior\"in document.documentElement.style;function Ct(t){var e=\"number\"==typeof t?{index:t}:t;return e.align||(e.align=\"start\"),e.behavior&&It||(e.behavior=\"auto\"),e.offset||(e.offset=0),e}var Tt=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=n.listRefresh,a=t[1],l=a.scrollingInProgress,s=a.viewportHeight,u=a.scrollTo,c=a.smoothScrollTargetReached,m=a.headerHeight,d=a.footerHeight,f=t[2].log,p=e.stream(),h=e.statefulStream(0),g=null,v=null,S=null;function I(){g&&(g(),g=null),S&&(S(),S=null),v&&(clearTimeout(v),v=null),e.publish(l,!1)}return e.connect(e.pipe(p,e.withLatestFrom(o,s,r,h,m,d,f),e.map(function(t){var n=t[0],o=t[1],r=t[2],a=t[3],s=t[4],u=t[5],m=t[6],d=t[7],f=Ct(n),h=f.align,C=f.behavior,T=f.offset,w=a-1,x=f.index;\"LAST\"===x&&(x=w),x=ht(x,o);var y=pt(x=Math.max(0,x,Math.min(w,x)),o.offsetTree)+u;\"end\"===h?(y=y-r+Y(o.sizeTree,x)[1],x===w&&(y+=m)):\"center\"===h?y=y-r/2+Y(o.sizeTree,x)[1]/2:y-=s,T&&(y+=T);var b=function(t){I(),t?(d(\"retrying to scroll to\",{location:n},B.DEBUG),e.publish(p,n)):d(\"list did not change, scroll successful\",{},B.DEBUG)};if(I(),\"smooth\"===C){var E=!1;S=e.subscribe(i,function(t){E=E||t}),g=e.handleNext(c,function(){b(E)})}else g=e.handleNext(e.pipe(i,function(t){var e=setTimeout(function(){t(!1)},50);return function(n){n&&(t(!0),clearTimeout(e))}}),b);return v=setTimeout(function(){I()},1200),e.publish(l,!0),d(\"scrolling from index to\",{index:x,top:y,behavior:C},B.DEBUG),{top:y,behavior:C}})),u),{scrollToIndex:p,topListHeight:h}},e.tup(St,N,O),{singleton:!0}),wt=\"up\",xt={atBottom:!1,notAtBottomBecause:\"NOT_SHOWING_LAST_ITEM\",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},yt=e.system(function(t){var n=t[0],o=n.scrollContainerState,r=n.scrollTop,i=n.viewportHeight,a=n.headerHeight,l=n.footerHeight,s=n.scrollBy,u=e.statefulStream(!1),c=e.statefulStream(!0),m=e.stream(),d=e.stream(),f=e.statefulStream(4),p=e.statefulStream(0),h=e.streamFromEmitter(e.pipe(e.merge(e.pipe(e.duc(r),e.skip(1),e.mapTo(!0)),e.pipe(e.duc(r),e.skip(1),e.mapTo(!1),e.debounceTime(100))),e.distinctUntilChanged())),g=e.statefulStreamFromEmitter(e.pipe(e.merge(e.pipe(s,e.mapTo(!0)),e.pipe(s,e.mapTo(!1),e.debounceTime(200))),e.distinctUntilChanged()),!1);e.connect(e.pipe(e.combineLatest(e.duc(r),e.duc(p)),e.map(function(t){return t[0]<=t[1]}),e.distinctUntilChanged()),c),e.connect(e.pipe(c,e.throttleTime(50)),d);var v=e.streamFromEmitter(e.pipe(e.combineLatest(o,e.duc(i),e.duc(a),e.duc(l),e.duc(f)),e.scan(function(t,e){var n,o,r=e[0],i=r.scrollTop,a=r.scrollHeight,l=e[1],s={viewportHeight:l,scrollTop:i,scrollHeight:a};return i+l-a>-e[4]?(i>t.state.scrollTop?(n=\"SCROLLED_DOWN\",o=t.state.scrollTop-i):(n=\"SIZE_DECREASED\",o=t.state.scrollTop-i||t.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:n,scrollTopDelta:o}):{atBottom:!1,notAtBottomBecause:s.scrollHeight>t.state.scrollHeight?\"SIZE_INCREASED\":l<t.state.viewportHeight?\"VIEWPORT_HEIGHT_DECREASING\":i<t.state.scrollTop?\"SCROLLING_UPWARDS\":\"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM\",state:s}},xt),e.distinctUntilChanged(function(t,e){return t&&t.atBottom===e.atBottom}))),S=e.statefulStreamFromEmitter(e.pipe(o,e.scan(function(t,e){var n=e.scrollTop,o=e.scrollHeight;return t.scrollHeight!==o?t.scrollTop!==n&&n===o-e.viewportHeight?{scrollHeight:o,scrollTop:n,jump:t.scrollTop-n,changed:!0}:{scrollHeight:o,scrollTop:n,jump:0,changed:!0}:{scrollTop:n,scrollHeight:o,jump:0,changed:!1}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),e.filter(function(t){return t.changed}),e.map(function(t){return t.jump})),0);e.connect(e.pipe(v,e.map(function(t){return t.atBottom})),u),e.connect(e.pipe(u,e.throttleTime(50)),m);var I=e.statefulStream(\"down\");e.connect(e.pipe(o,e.map(function(t){return t.scrollTop}),e.distinctUntilChanged(),e.scan(function(t,n){return e.getValue(g)?{direction:t.direction,prevScrollTop:n}:{direction:n<t.prevScrollTop?wt:\"down\",prevScrollTop:n}},{direction:\"down\",prevScrollTop:0}),e.map(function(t){return t.direction})),I),e.connect(e.pipe(o,e.throttleTime(50),e.mapTo(\"none\")),I);var C=e.statefulStream(0);return e.connect(e.pipe(h,e.filter(function(t){return!t}),e.mapTo(0)),C),e.connect(e.pipe(r,e.throttleTime(100),e.withLatestFrom(h),e.filter(function(t){return!!t[1]}),e.scan(function(t,e){return[t[1],e[0]]},[0,0]),e.map(function(t){return t[1]-t[0]})),C),{isScrolling:h,isAtTop:c,isAtBottom:u,atBottomState:v,atTopStateChange:d,atBottomStateChange:m,scrollDirection:I,atBottomThreshold:f,atTopThreshold:p,scrollVelocity:C,lastJumpDueToItemResize:S}},e.tup(N)),bt=e.system(function(t){var o=t[0].log,r=e.statefulStream(!1),i=e.streamFromEmitter(e.pipe(r,e.filter(function(t){return t}),e.distinctUntilChanged()));return e.subscribe(r,function(t){t&&n(o)(\"props updated\",{},B.DEBUG)}),{propsReady:r,didMount:i}},o(O),{singleton:!0}),Et=e.system(function(t){var n=t[0],o=n.sizes,r=n.listRefresh,i=n.defaultItemSize,a=t[1].scrollTop,l=t[2].scrollToIndex,s=t[3].didMount,u=e.statefulStream(!0),c=e.statefulStream(0);return e.connect(e.pipe(s,e.withLatestFrom(c),e.filter(function(t){return!!t[1]}),e.mapTo(!1)),u),e.subscribe(e.pipe(e.combineLatest(r,s),e.withLatestFrom(u,o,i),e.filter(function(t){var e=t[1],n=t[3];return t[0][1]&&(!_(t[2].sizeTree)||void 0!==n)&&!e}),e.withLatestFrom(c)),function(t){var n=t[1];setTimeout(function(){e.handleNext(a,function(){e.publish(u,!0)}),e.publish(l,n)})}),{scrolledToInitialItem:u,initialTopMostItemIndex:c}},e.tup(St,N,Tt,bt),{singleton:!0});function Ht(t){return!!t&&(\"smooth\"===t?\"smooth\":\"auto\")}var Rt=e.system(function(t){var n=t[0],o=n.totalCount,r=n.listRefresh,i=t[1],a=i.isAtBottom,l=i.atBottomState,s=t[2].scrollToIndex,u=t[3].scrolledToInitialItem,c=t[4],m=c.propsReady,d=c.didMount,f=t[5].log,p=t[6].scrollingInProgress,h=e.statefulStream(!1),g=null;function v(t){e.publish(s,{index:\"LAST\",align:\"end\",behavior:t})}return e.subscribe(e.pipe(e.combineLatest(e.pipe(e.duc(o),e.skip(1)),d),e.withLatestFrom(e.duc(h),a,u,p),e.map(function(t){var e=t[0],n=e[0],o=e[1]&&t[3],r=\"auto\";return o&&(r=function(t,e){return\"function\"==typeof t?Ht(t(e)):e&&Ht(t)}(t[1],t[2]||t[4]),o=o&&!!r),{totalCount:n,shouldFollow:o,followOutputBehavior:r}}),e.filter(function(t){return t.shouldFollow})),function(t){var n=t.totalCount,o=t.followOutputBehavior;g&&(g(),g=null),g=e.handleNext(r,function(){e.getValue(f)(\"following output to \",{totalCount:n},B.DEBUG),v(o),g=null})}),e.subscribe(e.pipe(e.combineLatest(e.duc(h),o,m),e.filter(function(t){return t[0]&&t[2]}),e.scan(function(t,e){var n=e[1];return{refreshed:t.value===n,value:n}},{refreshed:!1,value:0}),e.filter(function(t){return t.refreshed}),e.withLatestFrom(h,o)),function(t){var n=t[1],o=e.handleNext(l,function(t){!n||t.atBottom||\"SIZE_INCREASED\"!==t.notAtBottomBecause||g||(e.getValue(f)(\"scrolling to bottom due to increased size\",{},B.DEBUG),v(\"auto\"))});setTimeout(o,100)}),e.subscribe(e.combineLatest(e.duc(h),l),function(t){var e=t[1];t[0]&&!e.atBottom&&\"VIEWPORT_HEIGHT_DECREASING\"===e.notAtBottomBecause&&v(\"auto\")}),{followOutput:h}},e.tup(St,yt,Tt,Et,bt,O,N));function Lt(t){return t.reduce(function(t,e){return t.groupIndices.push(t.totalCount),t.totalCount+=e+1,t},{totalCount:0,groupIndices:[]})}var kt=r(function(t){var e=t[0],n=e.totalCount,o=e.groupIndices,r=e.sizes,p=t[1],h=p.scrollTop,g=p.headerHeight,v=i(),S=i(),I=a(l(v,s(Lt)));return u(l(I,s(c(\"totalCount\"))),n),u(l(I,s(c(\"groupIndices\"))),o),u(l(m(h,r,g),d(function(t){return gt(t[1])}),s(function(t){return Y(t[1].groupOffsetTree,Math.max(t[0]-t[2],0),\"v\")[0]}),f(),s(function(t){return[t]})),S),{groupCounts:v,topItemsIndexes:S}},o(St,N));function zt(t,e){return!(!t||t[0]!==e[0]||t[1]!==e[1])}function Bt(t,e){return!(!t||t.startIndex!==e.startIndex||t.endIndex!==e.endIndex)}function Ft(t,e,n){return\"number\"==typeof t?n===wt&&\"top\"===e||\"down\"===n&&\"bottom\"===e?t:0:n===wt?\"top\"===e?t.main:t.reverse:\"bottom\"===e?t.main:t.reverse}function Pt(t,e){return\"number\"==typeof t?t:t[e]||0}var Ot=e.system(function(t){var n=t[0],o=n.scrollTop,r=n.viewportHeight,i=n.deviation,a=n.headerHeight,l=e.stream(),s=e.statefulStream(0),u=e.statefulStream(0),c=e.statefulStream(0),m=e.statefulStream(0),d=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(e.duc(o),e.duc(r),e.duc(a),e.duc(l,zt),e.duc(m),e.duc(s),e.duc(u),e.duc(i),e.duc(c)),e.map(function(t){var e=t[0],n=t[1],o=t[2],r=t[3],i=r[0],a=r[1],l=t[4],s=t[6],u=t[7],c=t[8],m=e-u,d=t[5]+s,f=Math.max(o-m,0),p=\"none\",h=Pt(c,\"top\"),g=Pt(c,\"bottom\");return i-=u,a+=o+s,(i+=o+s)>e+d-h&&(p=wt),(a-=u)<e-f+n+g&&(p=\"down\"),\"none\"!==p?[Math.max(m-o-Ft(l,\"top\",p)-h,0),m-f-s+n+Ft(l,\"bottom\",p)+g]:null}),e.filter(function(t){return null!=t}),e.distinctUntilChanged(zt)),[0,0]);return{listBoundary:l,overscan:m,topListHeight:s,fixedHeaderHeight:u,increaseViewportBy:c,visibleRange:d}},e.tup(N),{singleton:!0}),Mt={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0};function Vt(t,e,n){if(0===t.length)return[];if(!gt(e))return t.map(function(t){return H({},t,{index:t.index+n,originalIndex:t.index})});for(var o,r=[],i=nt(e.groupOffsetTree,t[0].index,t[t.length-1].index),a=void 0,l=0,s=k(t);!(o=s()).done;){var u=o.value;(!a||a.end<u.index)&&(a=i.shift(),l=e.groupIndices.indexOf(a.start)),r.push(H({},u.index===a.start?{type:\"group\",index:l}:{index:u.index-(l+1)+n,groupIndex:l},{size:u.size,offset:u.offset,originalIndex:u.index,data:u.data}))}return r}function Ut(t,e,n,o,r){var i=0,a=0;if(t.length>0){i=t[0].offset;var l=t[t.length-1];a=l.offset+l.size}var s=i,u=o.lastOffset+(n-o.lastIndex)*o.lastSize-a;return{items:Vt(t,o,r),topItems:Vt(e,o,r),topListHeight:e.reduce(function(t,e){return e.size+t},0),offsetTop:i,offsetBottom:u,top:s,bottom:a,totalCount:n}}var At,Wt,Nt,Dt=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=n.data,a=n.firstItemIndex,l=t[1],s=t[2],u=s.visibleRange,c=s.listBoundary,m=s.topListHeight,d=t[3],f=d.scrolledToInitialItem,p=d.initialTopMostItemIndex,h=t[4].topListHeight,g=t[5],v=t[6].didMount,S=e.statefulStream([]),I=e.stream();e.connect(l.topItemsIndexes,S);var C=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(v,e.duc(u),e.duc(r),e.duc(o),e.duc(p),f,e.duc(S),e.duc(a),i),e.filter(function(t){return t[0]}),e.map(function(t){var n=t[1],o=n[0],r=n[1],i=t[2],a=t[4],l=t[5],s=t[6],u=t[7],c=t[8],m=t[3],d=m.sizeTree,f=m.offsetTree;if(0===i||0===o&&0===r)return Mt;if(_(d))return Ut(function(t,e,n){if(gt(e)){var o=ht(t,e);return[{index:Y(e.groupOffsetTree,o)[0],size:0,offset:0},{index:o,size:0,offset:0,data:n&&n[0]}]}return[{index:t,size:0,offset:0,data:n&&n[0]}]}(function(t,e){return\"number\"==typeof t?t:\"LAST\"===t.index?e-1:t.index}(a,i),m,c),[],i,m,u);var p=[];if(s.length>0)for(var h,g=s[0],v=s[s.length-1],S=0,I=k(nt(d,g,v));!(h=I()).done;)for(var C=h.value,T=C.value,w=Math.max(C.start,g),x=Math.min(C.end,v),y=w;y<=x;y++)p.push({index:y,size:T,offset:S,data:c&&c[y]}),S+=T;if(!l)return Ut([],p,i,m,u);var b=s.length>0?s[s.length-1]+1:0,E=function(t,e,n,o){return void 0===o&&(o=0),o>0&&(e=Math.max(e,lt(t,o,ut).offset)),ot((i=n,l=at(r=t,e,a=ct),s=at(r,i,a,l),r.slice(l,s+1)),mt);var r,i,a,l,s}(f,o,r,b);if(0===E.length)return null;var H=i-1;return Ut(e.tap([],function(t){for(var e,n=k(E);!(e=n()).done;){var i=e.value,a=i.value,l=a.offset,s=i.start,u=a.size;a.offset<o&&(l+=((s+=Math.floor((o-a.offset)/u))-i.start)*u),s<b&&(l+=(b-s)*u,s=b);for(var m=Math.min(i.end,H),d=s;d<=m&&!(l>=r);d++)t.push({index:d,size:u,offset:l,data:c&&c[d]}),l+=u}}),p,i,m,u)}),e.filter(function(t){return null!==t}),e.distinctUntilChanged()),Mt);return e.connect(e.pipe(i,e.filter(function(t){return void 0!==t}),e.map(function(t){return t.length})),r),e.connect(e.pipe(C,e.map(e.prop(\"topListHeight\"))),h),e.connect(h,m),e.connect(e.pipe(C,e.map(function(t){return[t.top,t.bottom]})),c),e.connect(e.pipe(C,e.map(function(t){return t.items})),I),H({listState:C,topItemsIndexes:S,endReached:e.streamFromEmitter(e.pipe(C,e.filter(function(t){return t.items.length>0}),e.withLatestFrom(r,i),e.filter(function(t){var e=t[0].items;return e[e.length-1].originalIndex===t[1]-1}),e.map(function(t){return[t[1]-1,t[2]]}),e.distinctUntilChanged(zt),e.map(function(t){return t[0]}))),startReached:e.streamFromEmitter(e.pipe(C,e.throttleTime(200),e.filter(function(t){var e=t.items;return e.length>0&&e[0].originalIndex===t.topItems.length}),e.map(function(t){return t.items[0].index}),e.distinctUntilChanged())),rangeChanged:e.streamFromEmitter(e.pipe(C,e.filter(function(t){return t.items.length>0}),e.map(function(t){var e=t.items;return{startIndex:e[0].index,endIndex:e[e.length-1].index}}),e.distinctUntilChanged(Bt))),itemsRendered:I},g)},e.tup(St,kt,Ot,Et,Tt,yt,bt),{singleton:!0}),Gt=e.system(function(t){var n=t[0],o=n.sizes,r=n.firstItemIndex,i=n.data,a=t[1].listState,l=t[2].didMount,s=e.statefulStream(0);return e.connect(e.pipe(l,e.withLatestFrom(s),e.filter(function(t){return 0!==t[1]}),e.withLatestFrom(o,r,i),e.map(function(t){var e=t[0][1],n=t[1],o=t[2],r=t[3],i=void 0===r?[]:r,a=0;if(n.groupIndices.length>0)for(var l,s=k(n.groupIndices);!((l=s()).done||l.value-a>=e);)a++;var u=e+a;return Ut(Array.from({length:u}).map(function(t,e){return{index:e,size:0,offset:0,data:i[e]}}),[],u,n,o)})),a),{initialItemCount:s}},e.tup(St,Dt,bt),{singleton:!0}),_t=e.system(function(t){var n=t[0].scrollVelocity,o=e.statefulStream(!1),r=e.stream(),i=e.statefulStream(!1);return e.connect(e.pipe(n,e.withLatestFrom(i,o,r),e.filter(function(t){return!!t[1]}),e.map(function(t){var e=t[0],n=t[1],o=t[2],r=t[3],i=n.enter;if(o){if((0,n.exit)(e,r))return!1}else if(i(e,r))return!0;return o}),e.distinctUntilChanged()),o),e.subscribe(e.pipe(e.combineLatest(o,n,r),e.withLatestFrom(i)),function(t){var e=t[0],n=t[1];return e[0]&&n&&n.change&&n.change(e[1],e[2])}),{isSeeking:o,scrollSeekConfiguration:i,scrollVelocity:n,scrollSeekRangeChanged:r}},e.tup(yt),{singleton:!0}),jt=r(function(t){var e=t[0].topItemsIndexes,n=p(0);return u(l(n,d(function(t){return t>0}),s(function(t){return Array.from({length:t}).map(function(t,e){return e})})),e),{topItemCount:n}},o(Dt)),Kt=e.system(function(t){var n=t[0],o=n.footerHeight,r=n.headerHeight,i=t[1].listState,a=e.stream(),l=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(o,r,i),e.map(function(t){var e=t[2];return t[0]+t[1]+e.offsetBottom+e.bottom})),0);return e.connect(e.duc(l),a),{totalListHeight:l,totalListHeightChanged:a}},e.tup(N,Dt),{singleton:!0}),Yt=e.system(function(t){var n=t[0],o=n.scrollBy,r=n.scrollTop,i=n.deviation,a=n.scrollingInProgress,l=t[1],s=l.isScrolling,u=l.isAtBottom,c=l.atBottomState,m=l.scrollDirection,d=t[3],f=d.beforeUnshiftWith,p=d.shiftWithOffset,h=d.sizes,g=t[4].log,v=e.streamFromEmitter(e.pipe(t[2].listState,e.withLatestFrom(l.lastJumpDueToItemResize),e.scan(function(t,e){var n=t[1],o=e[0],r=o.items,i=o.totalCount,a=o.bottom+o.offsetBottom,l=0;return t[2]===i&&n.length>0&&r.length>0&&(0===r[0].originalIndex&&0===n[0].originalIndex||0!=(l=a-t[3])&&(l+=e[1])),[l,r,i,a]},[0,[],0,0]),e.filter(function(t){return 0!==t[0]}),e.withLatestFrom(r,m,a,g,u,c),e.filter(function(t){return!t[3]&&0!==t[1]&&t[2]===wt}),e.map(function(t){var e=t[0][0];return(0,t[4])(\"Upward scrolling compensation\",{amount:e},B.DEBUG),e})));return e.connect(e.pipe(v,e.withLatestFrom(i),e.map(function(t){return t[1]-t[0]})),i),e.subscribe(e.pipe(e.combineLatest(e.statefulStreamFromEmitter(s,!1),i),e.filter(function(t){return!t[0]&&0!==t[1]}),e.map(function(t){return t[1]}),e.throttleTime(1)),function(t){t>0?(e.publish(o,{top:-t,behavior:\"auto\"}),e.publish(i,0)):(e.publish(i,0),e.publish(o,{top:-t,behavior:\"auto\"}))}),e.connect(e.pipe(p,e.map(function(t){return{top:-t}})),o),e.connect(e.pipe(f,e.withLatestFrom(h),e.map(function(t){return t[0]*t[1].lastSize})),v),{deviation:i}},e.tup(N,yt,Dt,St,O)),Zt=e.system(function(t){var n=t[0].totalListHeight,o=t[1].didMount,r=t[2].scrollTo,i=e.statefulStream(0);return e.subscribe(e.pipe(o,e.withLatestFrom(i),e.filter(function(t){return 0!==t[1]}),e.map(function(t){return{top:t[1]}})),function(t){e.handleNext(e.pipe(n,e.filter(function(t){return 0!==t})),function(){setTimeout(function(){e.publish(r,t)})})}),{initialScrollTop:i}},e.tup(Kt,bt,N),{singleton:!0}),qt=e.system(function(t){var n=t[0].viewportHeight,o=t[1].totalListHeight,r=e.statefulStream(!1);return{alignToBottom:r,paddingTopAddition:e.statefulStreamFromEmitter(e.pipe(e.combineLatest(r,n,o),e.filter(function(t){return t[0]}),e.map(function(t){return Math.max(0,t[1]-t[2])}),e.distinctUntilChanged()),0)}},e.tup(N,Kt),{singleton:!0}),Jt=e.system(function(t){var n=t[0],o=n.scrollTo,r=n.scrollContainerState,i=e.stream(),a=e.stream(),l=e.stream(),s=e.statefulStream(!1),u=e.statefulStream(void 0);return e.connect(e.pipe(e.combineLatest(i,a),e.map(function(t){var e=t[0],n=e.viewportHeight,o=e.scrollHeight;return{scrollTop:Math.max(0,e.scrollTop-t[1].offsetTop),scrollHeight:o,viewportHeight:n}})),r),e.connect(e.pipe(o,e.withLatestFrom(a),e.map(function(t){var e=t[0];return H({},e,{top:e.top+t[1].offsetTop})})),l),{useWindowScroll:s,customScrollParent:u,windowScrollContainerState:i,windowViewportRect:a,windowScrollTo:l}},e.tup(N)),$t=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=t[1],a=i.scrollTop,l=i.viewportHeight,s=i.headerHeight,u=i.scrollingInProgress,c=t[2].scrollToIndex,m=e.stream();return e.connect(e.pipe(m,e.withLatestFrom(o,l,r,s,a),e.map(function(t){var n=t[0],o=n.index,r=n.behavior,i=void 0===r?\"auto\":r,a=n.done,l=t[1],s=t[2],c=t[4],m=t[5],d=t[3]-1,f=null;o=ht(o,l);var p=pt(o=Math.max(0,o,Math.min(d,o)),l.offsetTree)+c;return p<m?f={index:o,behavior:i,align:\"start\"}:p+Y(l.sizeTree,o)[1]>m+s&&(f={index:o,behavior:i,align:\"end\"}),f?a&&e.handleNext(e.pipe(u,e.skip(1),e.filter(function(t){return!1===t})),a):a&&a(),f}),e.filter(function(t){return null!==t})),c),{scrollIntoView:m}},e.tup(St,N,Tt,Dt,O),{singleton:!0}),Qt=[\"listState\",\"topItemsIndexes\"],Xt=e.system(function(t){return H({},t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},e.tup(Ot,Gt,bt,_t,Kt,Zt,qt,Jt,$t)),te=e.system(function(t){var n=t[0],o=n.totalCount,r=n.sizeRanges,i=n.fixedItemSize,a=n.defaultItemSize,l=n.trackItemSizes,s=n.itemSize,u=n.data,c=n.firstItemIndex,m=n.groupIndices,d=n.statefulTotalCount,f=t[1],p=f.initialTopMostItemIndex,h=f.scrolledToInitialItem,g=t[2],v=t[3],S=t[4],I=S.listState,C=S.topItemsIndexes,T=R(S,Qt),w=t[5].scrollToIndex,x=t[7].topItemCount,y=t[8].groupCounts,b=t[9],E=t[10];return e.connect(T.rangeChanged,b.scrollSeekRangeChanged),e.connect(e.pipe(b.windowViewportRect,e.map(e.prop(\"visibleHeight\"))),g.viewportHeight),H({totalCount:o,data:u,firstItemIndex:c,sizeRanges:r,initialTopMostItemIndex:p,scrolledToInitialItem:h,topItemsIndexes:C,topItemCount:x,groupCounts:y,fixedItemHeight:i,defaultItemHeight:a},v,{statefulTotalCount:d,listState:I,scrollToIndex:w,trackItemSizes:l,itemSize:s,groupIndices:m},T,b,g,E)},e.tup(St,Et,N,Rt,Dt,Tt,Yt,jt,kt,Xt,O)),ee=(At=function(){if(\"undefined\"==typeof document)return\"sticky\";var t=document.createElement(\"div\");return t.style.position=\"-webkit-sticky\",\"-webkit-sticky\"===t.style.position?\"-webkit-sticky\":\"sticky\"},Nt=!1,function(){return Nt||(Nt=!0,Wt=At()),Wt});function ne(t,e){var n=y(null),o=b(function(o){if(null!==o){var r,i,a=o.getBoundingClientRect(),l=a.width;if(e){var s=e.getBoundingClientRect(),u=a.top-s.top;r=s.height-Math.max(0,u),i=u+e.scrollTop}else r=window.innerHeight-Math.max(0,a.top),i=a.top+window.pageYOffset;n.current={offsetTop:i,visibleHeight:r,visibleWidth:l},t(n.current)}},[t,e]),r=M(o),i=r.callbackRef,a=r.ref,l=b(function(){o(a.current)},[o,a]);return x(function(){if(e){e.addEventListener(\"scroll\",l);var t=new ResizeObserver(l);return t.observe(e),function(){e.removeEventListener(\"scroll\",l),t.unobserve(e)}}return window.addEventListener(\"scroll\",l),window.addEventListener(\"resize\",l),function(){window.removeEventListener(\"scroll\",l),window.removeEventListener(\"resize\",l)}},[l,e]),i}var oe=[\"placeholder\"],re=[\"style\",\"children\"],ie=[\"style\",\"children\"];function ae(t){return t}var le=r(function(){var t=p(function(t){return\"Item \"+t}),e=p(null),n=p(function(t){return\"Group \"+t}),o=p({}),r=p(ae),i=p(\"div\"),a=p(h),u=function(t,e){return void 0===e&&(e=null),S(l(o,s(function(e){return e[t]}),f()),e)};return{context:e,itemContent:t,groupContent:n,components:o,computeItemKey:r,headerFooterTag:i,scrollerRef:a,FooterComponent:u(\"Footer\"),HeaderComponent:u(\"Header\"),TopItemListComponent:u(\"TopItemList\"),ListComponent:u(\"List\",\"div\"),ItemComponent:u(\"Item\",\"div\"),GroupComponent:u(\"Group\",\"div\"),ScrollerComponent:u(\"Scroller\",\"div\"),EmptyPlaceholder:u(\"EmptyPlaceholder\"),ScrollSeekPlaceholder:u(\"ScrollSeekPlaceholder\")}});function se(t,e){var n=i();return g(n,function(){return console.warn(\"react-virtuoso: You are using a deprecated property. \"+e,\"color: red;\",\"color: inherit;\",\"color: blue;\")}),u(n,t),n}var ue=r(function(t){var e=t[0],o=t[1],r={item:se(o.itemContent,\"Rename the %citem%c prop to %citemContent.\"),group:se(o.groupContent,\"Rename the %cgroup%c prop to %cgroupContent.\"),topItems:se(e.topItemCount,\"Rename the %ctopItems%c prop to %ctopItemCount.\"),itemHeight:se(e.fixedItemHeight,\"Rename the %citemHeight%c prop to %cfixedItemHeight.\"),scrollingStateChange:se(e.isScrolling,\"Rename the %cscrollingStateChange%c prop to %cisScrolling.\"),adjustForPrependedItems:i(),maxHeightCacheSize:i(),footer:i(),header:i(),HeaderContainer:i(),FooterContainer:i(),ItemContainer:i(),ScrollContainer:i(),GroupContainer:i(),ListContainer:i(),emptyComponent:i(),scrollSeek:i()};function a(t,e,n){u(l(t,I(o.components),s(function(t){var o,r=t[0],i=t[1];return console.warn(\"react-virtuoso: \"+n+\" property is deprecated. Pass components.\"+e+\" instead.\"),H({},i,((o={})[e]=r,o))})),o.components)}return g(r.adjustForPrependedItems,function(){console.warn(\"react-virtuoso: adjustForPrependedItems is no longer supported. Use the firstItemIndex property instead - https://virtuoso.dev/prepend-items.\",\"color: red;\",\"color: inherit;\",\"color: blue;\")}),g(r.maxHeightCacheSize,function(){console.warn(\"react-virtuoso: maxHeightCacheSize is no longer necessary. Setting it has no effect - remove it from your code.\")}),g(r.HeaderContainer,function(){console.warn(\"react-virtuoso: HeaderContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the header component and pass components.Header to change its contents.\")}),g(r.FooterContainer,function(){console.warn(\"react-virtuoso: FooterContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the footer component and pass components.Footer to change its contents.\")}),g(r.scrollSeek,function(t){var r=t.placeholder,i=R(t,oe);console.warn(\"react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead.\"),v(o.components,H({},n(o.components),{ScrollSeekPlaceholder:r})),v(e.scrollSeekConfiguration,i)}),a(r.footer,\"Footer\",\"footer\"),a(r.header,\"Header\",\"header\"),a(r.ItemContainer,\"Item\",\"ItemContainer\"),a(r.ListContainer,\"List\",\"ListContainer\"),a(r.ScrollContainer,\"Scroller\",\"ScrollContainer\"),a(r.emptyComponent,\"EmptyPlaceholder\",\"emptyComponent\"),a(r.GroupContainer,\"Group\",\"GroupContainer\"),H({},e,o,r)},o(te,le)),ce=function(t){return T.createElement(\"div\",{style:{height:t.height}})},me={position:ee(),zIndex:1,overflowAnchor:\"none\"},de={overflowAnchor:\"none\"},fe=T.memo(function(t){var e=t.showTopList,n=void 0!==e&&e,o=Re(\"listState\"),r=He(\"sizeRanges\"),i=Re(\"useWindowScroll\"),a=Re(\"customScrollParent\"),l=He(\"windowScrollContainerState\"),s=He(\"scrollContainerState\"),u=a||i?l:s,c=Re(\"itemContent\"),m=Re(\"context\"),d=Re(\"groupContent\"),f=Re(\"trackItemSizes\"),p=Re(\"itemSize\"),g=Re(\"log\"),v=U(r,p,f,n?h:u,g,a),S=v.callbackRef,I=v.ref,C=T.useState(0),w=C[0],x=C[1];Le(\"deviation\",function(t){w!==t&&(I.current.style.marginTop=t+\"px\",x(t))});var y=Re(\"EmptyPlaceholder\"),b=Re(\"ScrollSeekPlaceholder\")||ce,R=Re(\"ListComponent\"),L=Re(\"ItemComponent\"),k=Re(\"GroupComponent\"),z=Re(\"computeItemKey\"),B=Re(\"isSeeking\"),F=Re(\"groupIndices\").length>0,P=Re(\"paddingTopAddition\"),O=Re(\"firstItemIndex\"),M=Re(\"statefulTotalCount\"),V=n?{}:{boxSizing:\"border-box\",paddingTop:o.offsetTop+P,paddingBottom:o.offsetBottom,marginTop:w};return!n&&0===M&&y?E(y,ve(y,m)):E(R,H({},ve(R,m),{ref:S,style:V,\"data-test-id\":n?\"virtuoso-top-item-list\":\"virtuoso-item-list\"}),(n?o.topItems:o.items).map(function(t){var e=t.originalIndex,n=z(e+O,t.data,m);return B?E(b,H({},ve(b,m),{key:n,index:t.index,height:t.size,type:t.type||\"item\"},\"group\"===t.type?{}:{groupIndex:t.groupIndex})):\"group\"===t.type?E(k,H({},ve(k,m),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,style:me}),d(t.index)):E(L,H({},ve(L,m),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,\"data-item-group-index\":t.groupIndex,style:de}),F?c(t.index,t.groupIndex,t.data,m):c(t.index,t.data,m))}))}),pe={height:\"100%\",outline:\"none\",overflowY:\"auto\",position:\"relative\",WebkitOverflowScrolling:\"touch\"},he={width:\"100%\",height:\"100%\",position:\"absolute\",top:0},ge={width:\"100%\",position:ee(),top:0};function ve(t,e){if(\"string\"!=typeof t)return{context:e}}var Se=T.memo(function(){var t=Re(\"HeaderComponent\"),e=He(\"headerHeight\"),n=Re(\"headerFooterTag\"),o=V(function(t){return e(A(t,\"height\"))}),r=Re(\"context\");return t?E(n,{ref:o},E(t,ve(t,r))):null}),Ie=T.memo(function(){var t=Re(\"FooterComponent\"),e=He(\"footerHeight\"),n=Re(\"headerFooterTag\"),o=V(function(t){return e(A(t,\"height\"))}),r=Re(\"context\");return t?E(n,{ref:o},E(t,ve(t,r))):null});function Ce(t){var e=t.usePublisher,n=t.useEmitter,o=t.useEmitterValue;return T.memo(function(t){var r=t.style,i=t.children,a=R(t,re),l=e(\"scrollContainerState\"),s=o(\"ScrollerComponent\"),u=e(\"smoothScrollTargetReached\"),c=o(\"scrollerRef\"),m=o(\"context\"),d=W(l,u,s,c),f=d.scrollerRef,p=d.scrollByCallback;return n(\"scrollTo\",d.scrollToCallback),n(\"scrollBy\",p),E(s,H({ref:f,style:H({},pe,r),\"data-test-id\":\"virtuoso-scroller\",\"data-virtuoso-scroller\":!0,tabIndex:0},a,ve(s,m)),i)})}function Te(t){var e=t.usePublisher,n=t.useEmitter,o=t.useEmitterValue;return T.memo(function(t){var r=t.style,i=t.children,a=R(t,ie),l=e(\"windowScrollContainerState\"),s=o(\"ScrollerComponent\"),u=e(\"smoothScrollTargetReached\"),c=o(\"totalListHeight\"),m=o(\"deviation\"),d=o(\"customScrollParent\"),f=o(\"context\"),p=W(l,u,s,h,d),g=p.scrollerRef,v=p.scrollByCallback,S=p.scrollToCallback;return F(function(){return g.current=d||window,function(){g.current=null}},[g,d]),n(\"windowScrollTo\",S),n(\"scrollBy\",v),E(s,H({style:H({position:\"relative\"},r,0!==c?{height:c+m}:{}),\"data-virtuoso-scroller\":!0},a,ve(s,f)),i)})}var we=function(t){var e=t.children,n=He(\"viewportHeight\"),o=V(C(n,function(t){return A(t,\"height\")}));return T.createElement(\"div\",{style:he,ref:o,\"data-viewport-type\":\"element\"},e)},xe=function(t){var e=t.children,n=ne(He(\"windowViewportRect\"),Re(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he,\"data-viewport-type\":\"window\"},e)},ye=function(t){var e=t.children,n=Re(\"TopItemListComponent\"),o=Re(\"headerHeight\"),r=H({},ge,{marginTop:o+\"px\"}),i=Re(\"context\");return E(n||\"div\",{style:r,context:i},e)},be=t(ue,{required:{},optional:{context:\"context\",followOutput:\"followOutput\",firstItemIndex:\"firstItemIndex\",itemContent:\"itemContent\",groupContent:\"groupContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",topItemCount:\"topItemCount\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",groupCounts:\"groupCounts\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",headerFooterTag:\"headerFooterTag\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",react18ConcurrentRendering:\"react18ConcurrentRendering\",item:\"item\",group:\"group\",topItems:\"topItems\",itemHeight:\"itemHeight\",scrollingStateChange:\"scrollingStateChange\",maxHeightCacheSize:\"maxHeightCacheSize\",footer:\"footer\",header:\"header\",ItemContainer:\"ItemContainer\",ScrollContainer:\"ScrollContainer\",ListContainer:\"ListContainer\",GroupContainer:\"GroupContainer\",emptyComponent:\"emptyComponent\",HeaderContainer:\"HeaderContainer\",FooterContainer:\"FooterContainer\",scrollSeek:\"scrollSeek\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",adjustForPrependedItems:\"adjustForPrependedItems\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},T.memo(function(t){var e=Re(\"useWindowScroll\"),n=Re(\"topItemsIndexes\").length>0,o=Re(\"customScrollParent\"),r=o||e?xe:we;return T.createElement(o||e?ze:ke,H({},t),T.createElement(r,null,T.createElement(Se,null),T.createElement(fe,null),T.createElement(Ie,null)),n&&T.createElement(ye,null,T.createElement(fe,{showTopList:!0})))})),Ee=be.Component,He=be.usePublisher,Re=be.useEmitterValue,Le=be.useEmitter,ke=Ce({usePublisher:He,useEmitterValue:Re,useEmitter:Le}),ze=Te({usePublisher:He,useEmitterValue:Re,useEmitter:Le}),Be={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Fe={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Pe=Math.round,Oe=Math.ceil,Me=Math.floor,Ve=Math.min,Ue=Math.max;function Ae(t,e){return Array.from({length:e-t+1}).map(function(e,n){return{index:n+t}})}var We=e.system(function(t){var n=t[0],o=n.overscan,r=n.visibleRange,i=n.listBoundary,a=t[1],l=a.scrollTop,s=a.viewportHeight,u=a.scrollBy,c=a.scrollTo,m=a.smoothScrollTargetReached,d=a.scrollContainerState,f=t[2],p=t[3],h=t[4],g=h.propsReady,v=h.didMount,S=t[5],I=S.windowViewportRect,C=S.windowScrollTo,T=S.useWindowScroll,w=S.customScrollParent,x=S.windowScrollContainerState,y=e.statefulStream(0),b=e.statefulStream(0),E=e.statefulStream(Be),R=e.statefulStream({height:0,width:0}),L=e.statefulStream({height:0,width:0}),k=e.stream(),z=e.stream(),B=e.statefulStream(0);e.connect(e.pipe(v,e.withLatestFrom(b),e.filter(function(t){return 0!==t[1]}),e.map(function(t){return{items:Ae(0,t[1]-1),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0}})),E),e.connect(e.pipe(e.combineLatest(e.duc(y),r,e.duc(L,function(t,e){return t&&t.width===e.width&&t.height===e.height})),e.withLatestFrom(R),e.map(function(t){var e=t[0],n=e[0],o=e[1],r=o[0],i=o[1],a=e[2],l=t[1],s=a.height,u=a.width,c=l.width;if(0===n||0===c)return Be;if(0===u)return Fe;var m=Ge(c,u),d=m*Me(r/s),f=m*Oe(i/s)-1;f=Ve(n-1,f);var p=Ae(d=Ve(f,Ue(0,d)),f),h=Ne(l,a,p),g=h.top,v=h.bottom;return{items:p,offsetTop:g,offsetBottom:Oe(n/m)*s-v,top:g,bottom:v,itemHeight:s,itemWidth:u}})),E),e.connect(e.pipe(R,e.map(function(t){return t.height})),s),e.connect(e.pipe(e.combineLatest(R,L,E),e.map(function(t){var e=Ne(t[0],t[1],t[2].items);return[e.top,e.bottom]}),e.distinctUntilChanged(zt)),i);var F=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){return t.items.length>0}),e.withLatestFrom(y),e.filter(function(t){var e=t[0].items;return e[e.length-1].index===t[1]-1}),e.map(function(t){return t[1]-1}),e.distinctUntilChanged())),P=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){var e=t.items;return e.length>0&&0===e[0].index}),e.mapTo(0),e.distinctUntilChanged())),O=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){return t.items.length>0}),e.map(function(t){var e=t.items;return{startIndex:e[0].index,endIndex:e[e.length-1].index}}),e.distinctUntilChanged(Bt)));e.connect(O,p.scrollSeekRangeChanged),e.connect(e.pipe(k,e.withLatestFrom(R,L,y),e.map(function(t){var e=t[1],n=t[2],o=t[3],r=Ct(t[0]),i=r.align,a=r.behavior,l=r.offset,s=r.index;\"LAST\"===s&&(s=o-1);var u=De(e,n,s=Ue(0,s,Ve(o-1,s)));return\"end\"===i?u=Pe(u-e.height+n.height):\"center\"===i&&(u=Pe(u-e.height/2+n.height/2)),l&&(u+=l),{top:u,behavior:a}})),c);var M=e.statefulStreamFromEmitter(e.pipe(E,e.map(function(t){return t.offsetBottom+t.bottom})),0);return e.connect(e.pipe(I,e.map(function(t){return{width:t.visibleWidth,height:t.visibleHeight}})),R),H({totalCount:y,viewportDimensions:R,itemDimensions:L,scrollTop:l,scrollHeight:z,overscan:o,scrollBy:u,scrollTo:c,scrollToIndex:k,smoothScrollTargetReached:m,windowViewportRect:I,windowScrollTo:C,useWindowScroll:T,customScrollParent:w,windowScrollContainerState:x,deviation:B,scrollContainerState:d,initialItemCount:b},p,{gridState:E,totalListHeight:M},f,{startReached:P,endReached:F,rangeChanged:O,propsReady:g})},e.tup(Ot,N,yt,_t,bt,Jt));function Ne(t,e,n){var o=e.height;return void 0===o||0===n.length?{top:0,bottom:0}:{top:De(t,e,n[0].index),bottom:De(t,e,n[n.length-1].index)+o}}function De(t,e,n){var o=Ge(t.width,e.width);return Me(n/o)*e.height}function Ge(t,e){return Ue(1,Me(t/e))}var _e=[\"placeholder\"],je=e.system(function(){var t=e.statefulStream(function(t){return\"Item \"+t}),n=e.statefulStream({}),o=e.statefulStream(null),r=e.statefulStream(\"virtuoso-grid-item\"),i=e.statefulStream(\"virtuoso-grid-list\"),a=e.statefulStream(ae),l=e.statefulStream(e.noop),s=function(t,o){return void 0===o&&(o=null),e.statefulStreamFromEmitter(e.pipe(n,e.map(function(e){return e[t]}),e.distinctUntilChanged()),o)};return{context:o,itemContent:t,components:n,computeItemKey:a,itemClassName:r,listClassName:i,scrollerRef:l,ListComponent:s(\"List\",\"div\"),ItemComponent:s(\"Item\",\"div\"),ScrollerComponent:s(\"Scroller\",\"div\"),ScrollSeekPlaceholder:s(\"ScrollSeekPlaceholder\",\"div\")}}),Ke=e.system(function(t){var n=t[0],o=t[1],r={item:se(o.itemContent,\"Rename the %citem%c prop to %citemContent.\"),ItemContainer:e.stream(),ScrollContainer:e.stream(),ListContainer:e.stream(),emptyComponent:e.stream(),scrollSeek:e.stream()};function i(t,n,r){e.connect(e.pipe(t,e.withLatestFrom(o.components),e.map(function(t){var e,o=t[0],i=t[1];return console.warn(\"react-virtuoso: \"+r+\" property is deprecated. Pass components.\"+n+\" instead.\"),H({},i,((e={})[n]=o,e))})),o.components)}return e.subscribe(r.scrollSeek,function(t){var r=t.placeholder,i=R(t,_e);console.warn(\"react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead.\"),e.publish(o.components,H({},e.getValue(o.components),{ScrollSeekPlaceholder:r})),e.publish(n.scrollSeekConfiguration,i)}),i(r.ItemContainer,\"Item\",\"ItemContainer\"),i(r.ListContainer,\"List\",\"ListContainer\"),i(r.ScrollContainer,\"Scroller\",\"ScrollContainer\"),H({},n,o,r)},e.tup(We,je)),Ye=T.memo(function(){var t=Xe(\"gridState\"),e=Xe(\"listClassName\"),n=Xe(\"itemClassName\"),o=Xe(\"itemContent\"),r=Xe(\"computeItemKey\"),i=Xe(\"isSeeking\"),a=Qe(\"scrollHeight\"),l=Xe(\"ItemComponent\"),s=Xe(\"ListComponent\"),u=Xe(\"ScrollSeekPlaceholder\"),c=Xe(\"context\"),m=Qe(\"itemDimensions\"),d=V(function(t){a(t.parentElement.parentElement.scrollHeight);var e=t.firstChild;e&&m(e.getBoundingClientRect())});return E(s,H({ref:d,className:e},ve(s,c),{style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom}}),t.items.map(function(e){var a=r(e.index);return i?E(u,H({key:a},ve(u,c),{index:e.index,height:t.itemHeight,width:t.itemWidth})):E(l,H({},ve(l,c),{className:n,\"data-index\":e.index,key:a}),o(e.index,c))}))}),Ze=function(t){var e=t.children,n=Qe(\"viewportDimensions\"),o=V(function(t){n(t.getBoundingClientRect())});return T.createElement(\"div\",{style:he,ref:o},e)},qe=function(t){var e=t.children,n=ne(Qe(\"windowViewportRect\"),Xe(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he},e)},Je=t(Ke,{optional:{totalCount:\"totalCount\",overscan:\"overscan\",itemContent:\"itemContent\",components:\"components\",computeItemKey:\"computeItemKey\",initialItemCount:\"initialItemCount\",scrollSeekConfiguration:\"scrollSeekConfiguration\",listClassName:\"listClassName\",itemClassName:\"itemClassName\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",item:\"item\",ItemContainer:\"ItemContainer\",ScrollContainer:\"ScrollContainer\",ListContainer:\"ListContainer\",scrollSeek:\"scrollSeek\"},methods:{scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",scrollToIndex:\"scrollToIndex\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\"}},T.memo(function(t){var e=H({},t),n=Xe(\"useWindowScroll\"),o=Xe(\"customScrollParent\"),r=o||n?qe:Ze;return T.createElement(o||n?nn:en,H({},e),T.createElement(r,null,T.createElement(Ye,null)))})),$e=Je.Component,Qe=Je.usePublisher,Xe=Je.useEmitterValue,tn=Je.useEmitter,en=Ce({usePublisher:Qe,useEmitterValue:Xe,useEmitter:tn}),nn=Te({usePublisher:Qe,useEmitterValue:Xe,useEmitter:tn}),on=r(function(){var t=p(function(t){return T.createElement(\"td\",null,\"Item $\",t)}),e=p(null),n=p(null),o=p({}),r=p(ae),i=p(h),a=function(t,e){return void 0===e&&(e=null),S(l(o,s(function(e){return e[t]}),f()),e)};return{context:e,itemContent:t,fixedHeaderContent:n,components:o,computeItemKey:r,scrollerRef:i,TableComponent:a(\"Table\",\"table\"),TableHeadComponent:a(\"TableHead\",\"thead\"),TableBodyComponent:a(\"TableBody\",\"tbody\"),TableRowComponent:a(\"TableRow\",\"tr\"),ScrollerComponent:a(\"Scroller\",\"div\"),EmptyPlaceholder:a(\"EmptyPlaceholder\"),ScrollSeekPlaceholder:a(\"ScrollSeekPlaceholder\"),FillerRow:a(\"FillerRow\")}}),rn=r(function(t){return H({},t[0],t[1])},o(te,on)),an=function(t){return T.createElement(\"tr\",null,T.createElement(\"td\",{style:{height:t.height}}))},ln=function(t){return T.createElement(\"tr\",null,T.createElement(\"td\",{style:{height:t.height,padding:0,border:0}}))},sn=T.memo(function(){var t=pn(\"listState\"),e=fn(\"sizeRanges\"),n=pn(\"useWindowScroll\"),o=pn(\"customScrollParent\"),r=fn(\"windowScrollContainerState\"),i=fn(\"scrollContainerState\"),a=o||n?r:i,l=pn(\"itemContent\"),s=pn(\"trackItemSizes\"),u=U(e,pn(\"itemSize\"),s,a,pn(\"log\"),o),c=u.callbackRef,m=u.ref,d=T.useState(0),f=d[0],p=d[1];hn(\"deviation\",function(t){f!==t&&(m.current.style.marginTop=t+\"px\",p(t))});var h=pn(\"EmptyPlaceholder\"),g=pn(\"ScrollSeekPlaceholder\")||an,v=pn(\"FillerRow\")||ln,S=pn(\"TableBodyComponent\"),I=pn(\"TableRowComponent\"),C=pn(\"computeItemKey\"),w=pn(\"isSeeking\"),x=pn(\"paddingTopAddition\"),y=pn(\"firstItemIndex\"),b=pn(\"statefulTotalCount\"),R=pn(\"context\");if(0===b&&h)return E(h,ve(h,R));var L=t.offsetTop+x+f,k=t.offsetBottom,z=L>0?T.createElement(v,{height:L,key:\"padding-top\"}):null,B=k>0?T.createElement(v,{height:k,key:\"padding-bottom\"}):null,F=t.items.map(function(t){var e=t.originalIndex,n=C(e+y,t.data,R);return w?E(g,H({},ve(g,R),{key:n,index:t.index,height:t.size,type:t.type||\"item\"})):E(I,H({},ve(I,R),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,style:{overflowAnchor:\"none\"}}),l(t.index,t.data,R))});return E(S,H({ref:c,\"data-test-id\":\"virtuoso-item-list\"},ve(S,R)),[z].concat(F,[B]))}),un=function(t){var e=t.children,n=fn(\"viewportHeight\"),o=V(C(n,function(t){return A(t,\"height\")}));return T.createElement(\"div\",{style:he,ref:o,\"data-viewport-type\":\"element\"},e)},cn=function(t){var e=t.children,n=ne(fn(\"windowViewportRect\"),pn(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he,\"data-viewport-type\":\"window\"},e)},mn=t(rn,{required:{},optional:{context:\"context\",followOutput:\"followOutput\",firstItemIndex:\"firstItemIndex\",itemContent:\"itemContent\",fixedHeaderContent:\"fixedHeaderContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",topItemCount:\"topItemCount\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",groupCounts:\"groupCounts\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",react18ConcurrentRendering:\"react18ConcurrentRendering\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},T.memo(function(t){var e=pn(\"useWindowScroll\"),n=pn(\"customScrollParent\"),o=fn(\"fixedHeaderHeight\"),r=pn(\"fixedHeaderContent\"),i=pn(\"context\"),a=V(C(o,function(t){return A(t,\"height\")})),l=n||e?vn:gn,s=n||e?cn:un,u=pn(\"TableComponent\"),c=pn(\"TableHeadComponent\"),m=r?T.createElement(c,H({key:\"TableHead\",style:{zIndex:1,position:\"sticky\",top:0},ref:a},ve(c,i)),r()):null;return T.createElement(l,H({},t),T.createElement(s,null,T.createElement(u,H({style:{borderSpacing:0}},ve(u,i)),[m,T.createElement(sn,{key:\"TableBody\"})])))})),dn=mn.Component,fn=mn.usePublisher,pn=mn.useEmitterValue,hn=mn.useEmitter,gn=Ce({usePublisher:fn,useEmitterValue:pn,useEmitter:hn}),vn=Te({usePublisher:fn,useEmitterValue:pn,useEmitter:hn}),Sn=Ee,In=Ee,Cn=dn,Tn=$e;export{In as GroupedVirtuoso,B as LogLevel,Cn as TableVirtuoso,Sn as Virtuoso,Tn as VirtuosoGrid};\n//# sourceMappingURL=index.m.js.map\n","import React, { useState, useEffect } from 'react';\nimport core from 'core';\n\n\nconst RedactionPanelContext = React.createContext();\n\nconst RedactionPanelProvider = ({ children }) => {\n  const [selectedRedactionItemId, setSelectedRedactionItemId] = useState(null);\n  const [isRedactionSearchActive, setIsRedactionSearchActive] = useState(false);\n  const [activeSearchResultIndex, setActiveSearchResultIndex] = useState(-1);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (action === 'selected') {\n        const redactionAnnotations = annotations.filter((annotation) => annotation.Subject === 'Redact');\n        // If multiple ones selected, we only use the first one\n        const selectedAnnotationId = redactionAnnotations.length > 0 ? redactionAnnotations[0].Id : null;\n        setSelectedRedactionItemId(selectedAnnotationId);\n      } else {\n        setSelectedRedactionItemId(null);\n      }\n    };\n\n    const activeSearchResultChanged = (newActiveSearchResult) => {\n      if (!newActiveSearchResult) {\n        return;\n      }\n      const coreSearchResults = core.getPageSearchResults() || [];\n      const newActiveSearchResultIndex = coreSearchResults.findIndex((searchResult) => {\n        return core.isSearchResultEqual(searchResult, newActiveSearchResult);\n      });\n      setActiveSearchResultIndex(newActiveSearchResultIndex);\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    core.addEventListener('activeSearchResultChanged', activeSearchResultChanged);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n      core.removeEventListener('activeSearchResultChanged', activeSearchResultChanged);\n    };\n  }, []);\n\n  const value = {\n    selectedRedactionItemId,\n    setSelectedRedactionItemId,\n    isRedactionSearchActive,\n    setIsRedactionSearchActive,\n    activeSearchResultIndex\n  };\n\n  return <RedactionPanelContext.Provider value={value}>{children}</RedactionPanelContext.Provider>;\n};\n\nexport { RedactionPanelProvider, RedactionPanelContext };\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport NoteTextPreview from '../NoteTextPreview/NoteTextPreview';\n\nconst RedactionTextPreviewContainer = (props) => {\n  const [redactionPanelWidth] = useSelector(\n    (state) => [\n      selectors.getRedactionPanelWidth(state),\n    ],\n    shallowEqual,\n  );\n\n  return (\n    <NoteTextPreview {...props} panelWidth={redactionPanelWidth} comment />\n  );\n};\n\nexport default RedactionTextPreviewContainer;","import RedactionTextPreview from './RedactionTextPreviewContainer';\n\nexport default RedactionTextPreview;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'src/components/Icon';\nimport getLatestActivityDate from 'helpers/getLatestActivityDate';\nimport dayjs from 'dayjs';\nimport Button from 'components/Button';\nimport './RedactionItem.scss';\nimport RedactionTextPreview from 'components/RedactionTextPreview';\nimport classNames from 'classnames';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\nconst RedactionItem = (props) => {\n  const {\n    iconColor,\n    annotation,\n    author,\n    dateFormat,\n    language,\n    onRedactionItemDelete,\n    onRedactionItemSelection,\n    textPreview,\n    isSelected,\n    timezone,\n  } = props;\n  const { t } = useTranslation();\n\n  let date = getLatestActivityDate(annotation);\n\n  if (timezone) {\n    const datetimeStr = date.toLocaleString('en-US', { timeZone: timezone });\n    date = new Date(datetimeStr);\n  }\n\n  const formattedDate = date ? dayjs(date).locale(language).format(dateFormat) : t('option.notesPanel.noteContent.noDate');\n  const dateAndAuthor = `${author} - ${formattedDate}`;\n  const className = classNames('redaction-item', { 'redaction-item-selected': isSelected });\n  const {\n    label,\n    icon = 'icon-form-field-text', // Default icon if none provided\n    redactionType\n  } = annotation;\n\n  let redactionPreview;\n\n  if (redactionType === redactionTypeMap['TEXT']) {\n    redactionPreview = (\n      <RedactionTextPreview linesToBreak={2}>\n        {textPreview}\n      </RedactionTextPreview>);\n  } else if (\n    redactionType === redactionTypeMap['FULL_PAGE']\n    || redactionType === redactionTypeMap['FULL_VIDEO_FRAME']\n    || redactionType === redactionTypeMap['REGION']\n    || redactionType === redactionTypeMap['AUDIO_REDACTION']\n    || redactionType === redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO']\n  ) {\n    redactionPreview = t(label);\n  } else {\n    redactionPreview = annotation.getContents();\n  }\n\n  const onKeyUp = (event) => {\n    if (event.key === 'Enter') {\n      onRedactionItemSelection();\n    }\n  };\n\n  return (\n    <div role=\"listitem\" className={className} onClick={onRedactionItemSelection} onKeyUp={onKeyUp} tabIndex={0}>\n      <div className=\"redaction-icon-container\">\n        <Icon glyph={icon} color={iconColor} />\n      </div>\n      <div className=\"redaction-item-info\">\n        <div className=\"redaction-item-preview\">\n          {redactionPreview}\n        </div>\n        {\n          annotation.OverlayText ?\n            <div className=\"redaction-item-label-text\">\n              {t('option.stylePopup.labelText')}: {annotation.OverlayText}\n            </div> : null\n        }\n        <div className=\"redaction-item-date-author\">\n          {dateAndAuthor}\n        </div>\n      </div>\n      <Button\n        style={{ marginLeft: 'auto' }}\n        img={'icon-close'}\n        onClick={onRedactionItemDelete}\n        ariaLabel={t('action.delete')}\n      />\n    </div>\n  );\n};\n\nexport default React.memo(RedactionItem);","import React, { useCallback, useContext } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport RedactionItem from './RedactionItem';\nimport core from 'core';\nimport { RedactionPanelContext } from '../../RedactionPanel/RedactionPanelContext';\n\nconst RedactionItemContainer = (props) => {\n  const { annotation } = props;\n\n  const { selectedRedactionItemId, setSelectedRedactionItemId } = useContext(RedactionPanelContext);\n\n  const [\n    dateFormat,\n    language,\n    customNoteSelectionFunction,\n    timezone,\n  ] = useSelector(\n    (state) => [\n      selectors.getNoteDateFormat(state),\n      selectors.getCurrentLanguage(state),\n      selectors.getCustomNoteSelectionFunction(state),\n      selectors.getTimezone(state)\n    ],\n    shallowEqual,\n  );\n\n  const textPreview = annotation.getCustomData('trn-annot-preview');\n  const iconColor = annotation.StrokeColor.toString();\n  const author = core.getDisplayAuthor(annotation['Author']);\n\n  const onRedactionItemSelection = useCallback(() => {\n    customNoteSelectionFunction && customNoteSelectionFunction(annotation);\n    core.deselectAllAnnotations();\n    core.selectAnnotation(annotation);\n    core.jumpToAnnotation(annotation);\n    setSelectedRedactionItemId(annotation.Id);\n  }, [annotation]);\n\n  const onRedactionItemDelete = useCallback(() => {\n    core.deleteAnnotations([annotation]);\n  }, [annotation]);\n\n  return (\n    <RedactionItem\n      dateFormat={dateFormat}\n      language={language}\n      timezone={timezone}\n      author={author}\n      annotation={annotation}\n      iconColor={iconColor}\n      textPreview={textPreview}\n      onRedactionItemDelete={onRedactionItemDelete}\n      onRedactionItemSelection={onRedactionItemSelection}\n      isSelected={selectedRedactionItemId === annotation.Id}\n    />\n  );\n};\n\nexport default RedactionItemContainer;","import RedactionItem from './RedactionItemContainer';\n\nexport default RedactionItem;","import React, { useState } from 'react';\nimport Button from 'components/Button';\nimport { useTranslation } from 'react-i18next';\nimport './CollapsiblePanelGroup.scss';\n\nconst CollapsiblePanelGroup = (props) => {\n  const {\n    header,\n    children,\n    className,\n    role,\n    style,\n  } = props;\n\n  const [isExpanded, setIsExpanded] = useState(true);\n  const { t } = useTranslation();\n\n  return (\n    <div className={className} role={role} style={style}>\n      <div className=\"collapsible-page-group-header\">\n        {header()}\n        <Button\n          title={isExpanded ? t('redactionPanel.collapse') : t('redactionPanel.expand')}\n          img={isExpanded ? 'icon-chevron-up' : 'icon-chevron-down'}\n          className=\"expand-arrow\"\n          onClick={() => setIsExpanded(!isExpanded)}\n        />\n      </div>\n      {isExpanded && children}\n    </div>\n  );\n};\n\nexport default CollapsiblePanelGroup;","import CollapsiblePanelGroup from './CollapsiblePanelGroup';\n\nexport default CollapsiblePanelGroup;","import React from 'react';\nimport RedactionItem from './RedactionItem';\nimport CollapsiblePanelGroup from 'components/CollapsiblePanelGroup';\nimport { useTranslation } from 'react-i18next';\n\nimport './RedactionPageGroup.scss';\n\nconst RedactionPageGroup = (props) => {\n  const {\n    pageNumber,\n    redactionItems,\n  } = props;\n\n  const { t } = useTranslation();\n\n  const header = () => {\n    return (\n      <div className=\"redaction-page-group-number\">\n        {t('option.shared.page')} {pageNumber}\n      </div>\n    );\n  };\n\n  return (\n    <CollapsiblePanelGroup\n      className=\"redaction-page-group\"\n      header={header}\n    >\n      <div role=\"list\" className=\"redaction-items\">\n        {redactionItems.map((redactionItem) => (\n          <RedactionItem\n            annotation={redactionItem}\n            key={`${redactionItem.Id}-${pageNumber}`}\n          />\n        ))}\n      </div>\n    </CollapsiblePanelGroup>\n  );\n};\n\nexport default RedactionPageGroup;","import React from 'react';\nimport RedactionPageGroup from './RedactionPageGroup';\nimport { getSortStrategies } from 'constants/sortStrategies';\n\nconst RedactionPageGroupContainer = (props) => {\n  // Putting this in the container in case we want to allow users to change sort strategies\n  // which are stored in the application state\n  const { redactionItems } = props;\n  // Sorting strategies can be applied to any list of annotations\n  const sortedRedactionItems = getSortStrategies()['position'].getSortedNotes(redactionItems);\n  return (\n    <RedactionPageGroup\n      redactionItems={sortedRedactionItems}\n      {...props}\n    />\n  );\n};\n\nexport default RedactionPageGroupContainer;","import RedactionPageGroup from './RedactionPageGroupContainer';\n\nexport default RedactionPageGroup;","import React, { useEffect, useState, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { Virtuoso } from 'react-virtuoso';\nimport { RedactionPanelContext } from './RedactionPanelContext';\nimport { mapAnnotationToRedactionType } from 'constants/redactionTypes';\n\nimport './RedactionPanel.scss';\nimport RedactionPageGroup from '../RedactionPageGroup';\n\nconst RedactionPanel = (props) => {\n  const {\n    redactionAnnotations,\n    applyAllRedactions,\n    deleteAllRedactionAnnotations,\n    redactionTypesDictionary,\n  } = props;\n\n  const { t } = useTranslation();\n  const [redactionPageMap, setRedactionPageMap] = useState({});\n  const [redactionPageNumbers, setRedactionPageNumbers] = useState([]);\n  // The following prop is needed only for the tests to actually render a list of results\n  // it only is ever injected in the tests\n  const { isTestMode } = useContext(RedactionPanelContext);\n\n  useEffect(() => {\n    const redactionPageMap = {};\n    redactionAnnotations.forEach((annotation) => {\n      const redactionType = mapAnnotationToRedactionType(annotation);\n      const { label, icon } = redactionTypesDictionary[redactionType];\n      annotation.label = label;\n      annotation.icon = icon;\n      annotation.redactionType = redactionType;\n\n      const pageNumber = annotation.PageNumber;\n      if (redactionPageMap[pageNumber] === undefined) {\n        redactionPageMap[pageNumber] = [annotation];\n      } else {\n        redactionPageMap[pageNumber] = [annotation, ...redactionPageMap[pageNumber]];\n      }\n    });\n\n    setRedactionPageMap(redactionPageMap);\n    setRedactionPageNumbers(Object.keys(redactionPageMap));\n  }, [redactionAnnotations]);\n\n  const renderRedactionPageGroups = () => {\n    // Needed for the tests to actually render a list of results\n    // Not needed for the actual app; if we set it it kills performance when there are a lot of annotations\n    const testModeProps = isTestMode ? { initialItemCount: redactionPageNumbers.length } : {};\n    return (\n      <div className=\"redaction-group-container\" role=\"list\">\n        <Virtuoso\n          data={redactionPageNumbers}\n          itemContent={(index, pageNumber) => {\n            return (\n              <RedactionPageGroup\n                key={index}\n                pageNumber={pageNumber}\n                redactionItems={redactionPageMap[pageNumber]}\n              />);\n          }}\n          {...testModeProps}\n        />\n      </div>\n    );\n  };\n\n  const noRedactionAnnotations = (\n    <div className=\"no-marked-redactions\">\n      <div>\n        <Icon className=\"empty-icon\" glyph=\"icon-no-marked-redactions\" />\n      </div>\n      <div className=\"msg\">{t('redactionPanel.noMarkedRedactions')}</div>\n    </div>\n  );\n\n  const redactAllButtonClassName = classNames('redact-all-marked', { disabled: redactionAnnotations.length === 0 });\n  const clearAllButtonClassName = classNames('clear-all-marked', { disabled: redactionAnnotations.length === 0 });\n\n  return (\n    <>\n      <div className=\"marked-redaction-counter\">\n        <span>{t('redactionPanel.redactionCounter')}</span> {`(${redactionAnnotations.length})`}\n      </div>\n      {redactionPageNumbers.length > 0 ? renderRedactionPageGroups() : noRedactionAnnotations}\n      <div className=\"redaction-panel-controls\">\n        <button\n          disabled={redactionAnnotations.length === 0}\n          className={clearAllButtonClassName}\n          onClick={deleteAllRedactionAnnotations}\n          aria-label={t('redactionPanel.clearMarked')}\n        >\n          {t('redactionPanel.clearMarked')}\n        </button>\n        <button\n          disabled={redactionAnnotations.length === 0}\n          className={redactAllButtonClassName}\n          onClick={applyAllRedactions}\n          aria-label={t('redactionPanel.redactAllMarked')}\n        >\n          {t('redactionPanel.redactAllMarked')}\n        </button>\n      </div>\n    </>\n  );\n};\n\nexport default RedactionPanel;","import useOnRedactionAnnotationChanged from './useOnRedactionAnnotationChanged';\n\nexport default useOnRedactionAnnotationChanged;","import { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport core from 'core';\n\nexport default function useOnRedactionAnnotationChanged() {\n  const [redactionAnnotationsList, setRedactionAnnotationsList] = useState([]);\n  const dispatch = useDispatch();\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [\n    isNotesPanelOpen,\n    isSearchPanelOpen,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.isElementOpen(state, 'searchPanel'),\n    ]\n  );\n\n  useEffect(() => {\n    const setRedactionAnnotations = () => {\n      const redactionAnnotations = core.getAnnotationsList().filter((annotation) => annotation instanceof window.Core.Annotations.RedactionAnnotation);\n      const mediaAnnotationTypes = [\n        redactionTypeMap['FULL_VIDEO_FRAME'],\n        redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO'],\n        redactionTypeMap['AUDIO_REDACTION'],\n      ];\n      setRedactionAnnotationsList(redactionAnnotations);\n\n      const nonMediaRedactionAnnotations = redactionAnnotations.filter((annotation) => !mediaAnnotationTypes.includes(annotation.redactionType));\n\n      if (nonMediaRedactionAnnotations.length > 0 && !isMobile) {\n        // Initially the state will be undefined, so we cast to boolean and negate it\n        const isNotesPanelClosed = !isNotesPanelOpen;\n        const isSearchPanelClosed = !isSearchPanelOpen;\n\n        if (isNotesPanelClosed && isSearchPanelClosed) {\n          dispatch(actions.openElement('redactionPanel'));\n        }\n      }\n    };\n\n    const onDocumentLoaded = () => {\n      setRedactionAnnotationsList([]);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('annotationChanged', setRedactionAnnotations);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('annotationChanged', setRedactionAnnotations);\n    };\n  }, [isNotesPanelOpen, isSearchPanelOpen]);\n\n  return redactionAnnotationsList;\n}","import React from 'react';\nimport CreatableSelect from 'react-select/creatable';\nimport ReactSelectWebComponentProvider from '../ReactSelectWebComponentProvider';\n\nconst CreatableMultiSelect = (props) => {\n  return (\n    <ReactSelectWebComponentProvider>\n      <CreatableSelect isMulti {...props} />\n    </ReactSelectWebComponentProvider>\n  );\n};\n\nexport default CreatableMultiSelect;","import CreatableMultiSelect from './CreatableMultiSelect';\n\nexport default CreatableMultiSelect;","import React from 'react';\nimport { components } from 'react-select';\nimport Icon from 'components/Icon';\nimport CreatableMultiSelect from 'components/CreatableMultiSelect';\nimport { useTranslation } from 'react-i18next';\n\nconst getStyles = (isDarkMode) => ({\n  groupHeading: (base) => ({\n    ...base,\n    textTransform: 'none',\n    fontSize: '10px',\n    color: isDarkMode ? '#FFFFFF' : '#485056',\n    paddingBottom: '8px',\n    paddingLeft: '8px',\n    paddingTop: '10px',\n  }),\n  group: (base) => ({\n    ...base,\n    padding: '0px',\n  }),\n  menu: (base) => ({\n    ...base,\n    padding: '0px 0px 0px 0px',\n  }),\n  menuList: (base) => ({\n    ...base,\n    padding: '0px',\n    backgroundColor: isDarkMode ? '#000000' : '#FFFFFF',\n  }),\n  multiValue: (base) => ({\n    ...base,\n    backgroundColor: isDarkMode ? '#192530' : '#E7EDF3',\n\n    padding: '2px 8px',\n    fontSize: '13px',\n    borderRadius: '4px',\n  }),\n  option: (base, state) => ({\n    ...base,\n    height: '28px',\n    display: 'flex',\n    fontSize: '13px',\n    padding: '6px 8px',\n    '&:hover': {\n      backgroundColor: isDarkMode ? '#192530' : '#E7EDF3',\n    },\n    backgroundColor: state.isFocused ? (isDarkMode ? '#192530' : '#E7EDF3') : 'transparent',\n  }),\n  valueContainer: (base) => ({\n    ...base,\n    padding: '1px',\n    maxHeight: '70px',\n    overflowY: 'scroll',\n  }),\n  control: (base) => ({\n    ...base,\n    backgroundColor: isDarkMode ? '#21242A' : '#FFFFFF',\n    minHeight: '29px',\n    borderColor: isDarkMode ? '#485056' : '#CFD4DA',\n    '&:hover': {\n      borderColor: isDarkMode ? '#485056' : '#CFD4DA',\n    },\n  }),\n  placeholder: (base) => ({\n    ...base,\n    fontSize: '13px',\n    color: isDarkMode ? '#868E96' : '#ADB5BD',\n    paddingLeft: '4px',\n  }),\n  input: (base) => ({\n    ...base,\n    fontSize: '13px',\n    color: isDarkMode ? '#FFFFFF' : '#485056',\n    paddingLeft: '3px',\n  }),\n});\n\nconst RedactionOption = (props) => {\n  const { data } = props;\n  const { t } = useTranslation();\n  return (\n    <components.Option {...props}>\n      {data.icon && <Icon glyph={data.icon} />}\n      {t(data.label)}\n    </components.Option>\n  );\n};\n\nconst MultiValueLabel = ({ data }) => {\n  const { t } = useTranslation();\n\n  return (\n    <div style={{ display: 'flex', height: '18px' }}>\n      {data.icon && <Icon glyph={data.icon} />}\n      {t(data.label)}\n    </div>\n  );\n};\n\nconst RedactionSearchMultiSelect = (props) => {\n  const { t } = useTranslation();\n  const { activeTheme, redactionSearchOptions } = props;\n\n  const redactionGroup = [\n    {\n      label: t('redactionPanel.search.pattern'),\n      options: redactionSearchOptions,\n    },\n  ];\n\n  const isDarkMode = activeTheme === 'dark';\n  const styles = getStyles(isDarkMode);\n\n  return (\n    <CreatableMultiSelect\n      options={redactionGroup}\n      styles={styles}\n      components={{ Option: RedactionOption, MultiValueLabel, IndicatorsContainer: () => null }}\n      placeholder={t('redactionPanel.redactionSearchPlaceholder')}\n      formatCreateLabel={(value) => `${t('component.searchPanel')} ${value}`}\n      {...props}\n    />\n  );\n};\n\nexport default RedactionSearchMultiSelect;\n","import RedactionSearchMultiSelect from './RedactionSearchMultiSelect';\n\nexport default RedactionSearchMultiSelect;","import React from 'react';\nimport DataElementWrapper from '../DataElementWrapper';\nimport RedactionSearchMultiSelect from './RedactionSearchMultiSelect';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport './RedactionSearchOverlay.scss';\n\nconst buildSearchOptions = (searchTerms) => {\n  const options = {\n    textSearch: [],\n    caseSensitive: true,\n  };\n\n  if (!searchTerms) {\n    return options;\n  }\n\n  searchTerms.forEach((searchTerm) => {\n    const { type } = searchTerm;\n    if (type === redactionTypeMap['TEXT']) {\n      options.textSearch.push(searchTerm.label);\n    } else {\n      options[type] = true;\n    }\n    if (searchTerm.regex) {\n      options.caseSensitive = options.caseSensitive && !searchTerm.regex.ignoreCase;\n    }\n  });\n\n  return options;\n};\n\nconst RedactionSearchOverlay = (props) => {\n  const {\n    setIsRedactionSearchActive,\n    searchTerms,\n    setSearchTerms,\n    executeRedactionSearch,\n    activeTheme,\n    redactionSearchOptions,\n  } = props;\n\n  const handleChange = (updatedSearchTerms) => {\n    setSearchTerms(updatedSearchTerms);\n    const options = buildSearchOptions(updatedSearchTerms);\n    executeRedactionSearch(options);\n  };\n\n  const handleCreate = (newValue) => {\n    const textTerm = {\n      label: newValue,\n      value: newValue,\n      type: redactionTypeMap['TEXT']\n    };\n    // Initially search terms are null so we safeguard against this\n    const nonNullSearchTerms = searchTerms || [];\n    const updatedSearchTerms = [...nonNullSearchTerms, textTerm];\n    setSearchTerms(updatedSearchTerms);\n    const options = buildSearchOptions(updatedSearchTerms);\n    options.caseSensitive = false;\n    executeRedactionSearch(options);\n  };\n\n  const textInputOnKeyUp = (event) => {\n    if (event.key === 'Enter') {\n      const options = buildSearchOptions(searchTerms);\n      executeRedactionSearch(options);\n    }\n  };\n  return (\n    <DataElementWrapper\n      className=\"RedactionSearchOverlay\"\n      dataElement=\"redactionSearchOverlay\"\n      onKeyUp={textInputOnKeyUp}\n    >\n      <RedactionSearchMultiSelect\n        onFocus={() => setIsRedactionSearchActive(true)}\n        value={searchTerms}\n        onCreateOption={handleCreate}\n        onChange={handleChange}\n        activeTheme={activeTheme}\n        redactionSearchOptions={redactionSearchOptions}\n      />\n\n    </DataElementWrapper>\n\n  );\n};\n\nexport default RedactionSearchOverlay;","import searchTextFullFactory from '../apis/searchTextFull';\nimport selectors from 'selectors';\nimport core from 'core';\n\n\nfunction multiSearch(store) {\n  return function multiSearch(searchTerms) {\n    const { getState } = store;\n    const state = getState();\n    const redactionSearchPatterns = selectors.getRedactionSearchPatterns(state);\n    // collect all regexes into an array\n    const searchOptionsMap = Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { regex, type } = redactionSearchPatterns[key];\n      map[type] = regex;\n      return map;\n    }, {});\n\n\n    const options = {\n      regex: true,\n      caseSensitive: searchTerms.caseSensitive,\n    };\n\n    const { textSearch } = searchTerms;\n    const searchArray = [...textSearch];\n\n    // Now we can map type to regex\n    Object.keys(searchTerms).forEach((searchType) => {\n      const searchRegex = searchOptionsMap[searchType];\n      if (searchRegex) {\n        searchArray.push(searchRegex.source);\n      }\n    });\n\n    const searchString = searchArray.join('|');\n\n    // If search string is empty we return and clear searches or we send the search logic\n    // into an infinte loop\n    if (searchString === '') {\n      core.clearSearchResults();\n      return;\n    }\n\n    const searchTextFull = searchTextFullFactory();\n    searchTextFull(searchString, options);\n  };\n}\n\nexport default multiSearch;","import React, { useContext } from 'react';\nimport { useStore, useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\n\nimport RedactionSearchOverlay from './RedactionSearchOverlay';\nimport { RedactionPanelContext } from '../RedactionPanel/RedactionPanelContext';\nimport multiSearchFactory from '../../helpers/multiSearch';\n\n\nfunction executeRedactionSearch(options, store) {\n  const multiSearch = multiSearchFactory(store);\n  multiSearch(options);\n}\n\nconst RedactionSearchOverlayContainer = (props) => {\n  const { setIsRedactionSearchActive } = useContext(RedactionPanelContext);\n  const store = useStore();\n  const activeTheme = useSelector((state) => selectors.getActiveTheme(state));\n  const redactionSearchPatterns = useSelector((state) => selectors.getRedactionSearchPatterns(state), shallowEqual);\n  const redactionSearchOptions = Object.values(redactionSearchPatterns).map((pattern) => ({\n    ...pattern,\n    value: pattern.type,\n  }));\n\n  return (\n    <RedactionSearchOverlay\n      setIsRedactionSearchActive={setIsRedactionSearchActive}\n      executeRedactionSearch={(options = {}) => executeRedactionSearch(options, store)}\n      activeTheme={activeTheme}\n      redactionSearchOptions={redactionSearchOptions}\n      {...props}\n    />);\n};\n\nexport default RedactionSearchOverlayContainer;","import RedactionSearchOverlay from './RedactionSearchOverlayContainer';\n\nexport default RedactionSearchOverlay;","import React from 'react';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport Icon from 'components/Icon';\nimport './RedactionSearchResult.scss';\nimport classNames from 'classnames';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\n// Alternatively wrap this in useCallback and declare inside component\nconst displayRedactionSearchResult = (props) => {\n  const { ambientStr, resultStrStart, resultStrEnd, resultStr, type } = props;\n  if (type === redactionTypeMap['TEXT']) {\n    const searchValue = ambientStr === '' ? resultStr : ambientStr.slice(resultStrStart, resultStrEnd);\n    const textBeforeSearchValue = ambientStr.slice(0, resultStrStart);\n    const textAfterSearchValue = ambientStr.slice(resultStrEnd);\n    return (\n      <>\n        {textBeforeSearchValue}\n        <span className=\"search-value\">{searchValue}</span>\n        {textAfterSearchValue}\n      </>\n    );\n  }\n  return resultStr;\n};\n\nconst RedactionSearchResult = (props) => {\n  const {\n    isChecked,\n    onChange,\n    onClickResult,\n    isActive,\n    icon,\n  } = props;\n\n  const displayResult = displayRedactionSearchResult(props);\n  const searchResultClassname = classNames('redaction-search-result', { active: isActive });\n\n  return (\n    <div className={searchResultClassname} role=\"listitem\" onClick={onClickResult}>\n      <div style={{ paddingRight: '14px' }}>\n        <Choice\n          checked={isChecked}\n          onChange={onChange}\n        />\n      </div>\n      <div style={{ paddingRight: '14px' }}>\n        <Icon glyph={icon} />\n      </div>\n      <div className=\"redaction-search-result-info\">\n        {displayResult}\n      </div>\n    </div >\n  );\n};\n\nexport default React.memo(RedactionSearchResult);","import RedactionSearchResult from './RedactionSearchResultContainer';\n\nexport default RedactionSearchResult;","import React, { useCallback, useContext } from 'react';\nimport RedactionSearchResult from './RedactionSearchResult';\nimport { RedactionPanelContext } from 'components/RedactionPanel/RedactionPanelContext';\nimport core from 'core';\n\nconst RedactionSearchResultContainer = (props) => {\n  const {\n    searchResult,\n    checked,\n    checkResult,\n  } = props;\n\n  const { activeSearchResultIndex } = useContext(RedactionPanelContext);\n\n  const { ambientStr, resultStrStart, resultStrEnd, resultStr, icon, index, type } = searchResult;\n\n  const onChange = useCallback((event) => {\n    checkResult(event, index);\n  }, [index, checkResult]);\n\n  const onClickResult = useCallback(() => {\n    core.setActiveSearchResult(searchResult);\n  }, [searchResult]);\n\n  return (\n    <RedactionSearchResult\n      ambientStr={ambientStr}\n      resultStrStart={resultStrStart}\n      resultStrEnd={resultStrEnd}\n      resultStr={resultStr}\n      icon={icon}\n      type={type}\n      isChecked={checked}\n      onChange={onChange}\n      onClickResult={onClickResult}\n      isActive={activeSearchResultIndex === index}\n    />\n  );\n};\n\nexport default RedactionSearchResultContainer;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport RedactionSearchResult from './RedactionSearchResult';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport { useTranslation } from 'react-i18next';\nimport CollapsiblePanelGroup from 'components/CollapsiblePanelGroup';\nimport './RedactionSearchResultGroup.scss';\n\nconst RedactionSearchResultGroup = (props) => {\n  const {\n    pageNumber,\n    searchResults,\n    selectedSearchResultIndexes,\n    setSelectedSearchResultIndexes,\n  } = props;\n\n  const { t } = useTranslation();\n  const groupResultIndexes = searchResults.map((result) => result.index);\n  const [allItemsChecked, setAllItemsChecked] = useState(false);\n\n  useEffect(() => {\n    const allResultsSelected = groupResultIndexes.reduce((allSelected, currentIndex) => {\n      return selectedSearchResultIndexes[currentIndex] && allSelected;\n    }, true);\n\n    setAllItemsChecked(allResultsSelected);\n  }, [selectedSearchResultIndexes, groupResultIndexes]);\n\n  const checkAllResults = useCallback((event) => {\n    const checked = event.target.checked;\n    groupResultIndexes.forEach((resultIndex) => {\n      selectedSearchResultIndexes[resultIndex] = checked;\n    });\n    setAllItemsChecked(checked);\n    setSelectedSearchResultIndexes({ ...selectedSearchResultIndexes });\n  }, [selectedSearchResultIndexes, groupResultIndexes]);\n\n  const checkResult = useCallback((event, index) => {\n    const checked = event.target.checked;\n    selectedSearchResultIndexes[index] = checked;\n    setSelectedSearchResultIndexes({ ...selectedSearchResultIndexes });\n  }, [selectedSearchResultIndexes]);\n\n  const header = () => {\n    return (\n      <Choice\n        checked={allItemsChecked}\n        onChange={checkAllResults}\n        label={`${t('option.shared.page')} ${pageNumber}`}\n        className=\"redaction-search-results-page-number\"\n      />\n    );\n  };\n\n  const style = {\n    paddingLeft: '12px',\n    paddingRight: '12px',\n    paddingTop: '8px',\n    paddingBottom: '4px',\n  };\n\n  return (\n    <CollapsiblePanelGroup header={header} role=\"row\" style={style}>\n      <div role=\"list\">\n        {searchResults.map((searchResult, index) => (\n          <RedactionSearchResult\n            checked={selectedSearchResultIndexes[searchResult.index]}\n            checkResult={checkResult}\n            searchResult={searchResult}\n            key={`${index}-${pageNumber}`}\n          />)\n        )}\n      </div>\n    </CollapsiblePanelGroup>\n  );\n};\n\nexport default RedactionSearchResultGroup;","import RedactionSearchResultGroup from './RedactionSearchResultGroup';\n\nexport default RedactionSearchResultGroup;","export default {\n  SEARCH_NOT_INITIATED: 'SEARCH_NOT_INITIATED',\n  SEARCH_IN_PROGRESS: 'SEARCH_IN_PROGRESS',\n  SEARCH_DONE: 'SEARCH_DONE',\n};","import React, { useState, useEffect, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport RedactionSearchResultGroup from 'components/RedactionSearchResultGroup';\nimport Spinner from 'components/Spinner';\nimport './RedactionSearchResults.scss';\nimport classNames from 'classnames';\nimport { Virtuoso } from 'react-virtuoso';\nimport SearchStatus from 'constants/searchStatus';\nimport { RedactionPanelContext } from '../RedactionPanel/RedactionPanelContext';\n\nfunction RedactionSearchResults(props) {\n  const {\n    redactionSearchResults,\n    searchStatus,\n    onCancelSearch,\n    isProcessingRedactionResults,\n    markSelectedResultsForRedaction,\n    redactSelectedResults,\n  } = props;\n\n  const { t } = useTranslation();\n  const [redactionSearchResultPageMap, setRedactionSearchResultPageMap] = useState({});\n  const [selectedSearchResultIndexesMap, setSelectedSearchResultIndexesMap] = useState({});\n  const [selectedIndexes, setSelectedIndexes] = useState([]);\n  // The following prop is needed only for the tests to actually render a list of results\n  // it only is ever injected in the tests\n  const { isTestMode } = useContext(RedactionPanelContext);\n\n\n  useEffect(() => {\n    const redactionSearchResultPageMap = {};\n    redactionSearchResults.forEach((result, index) => {\n      const pageNumber = result.pageNum;\n      result.index = index;\n      if (redactionSearchResultPageMap[pageNumber] === undefined) {\n        redactionSearchResultPageMap[pageNumber] = [result];\n      } else {\n        redactionSearchResultPageMap[pageNumber] = [...redactionSearchResultPageMap[pageNumber], result];\n      }\n    });\n\n    setRedactionSearchResultPageMap(redactionSearchResultPageMap);\n\n    const selectedIndexesMap = {};\n    redactionSearchResults.forEach((value, index) => {\n      selectedIndexesMap[index] = false;\n    });\n    setSelectedSearchResultIndexesMap(selectedIndexesMap);\n  }, [redactionSearchResults]);\n\n\n  useEffect(() => {\n    const selectedIndexes = redactionSearchResults.filter((redactionSearchResult, index) => {\n      return selectedSearchResultIndexesMap[index];\n    });\n\n    setSelectedIndexes(selectedIndexes);\n  }, [selectedSearchResultIndexesMap]);\n\n\n  const renderSearchResults = () => {\n    const resultGroupPageNumbers = Object.keys(redactionSearchResultPageMap);\n    if (resultGroupPageNumbers.length > 0) {\n      // Needed for the tests to actually render a list of results\n      const testModeProps = isTestMode ? { initialItemCount: resultGroupPageNumbers.length } : {};\n      return (\n        <Virtuoso\n          data={resultGroupPageNumbers}\n          itemContent={(index, pageNumber) => {\n            return (\n              <RedactionSearchResultGroup\n                key={index}\n                pageNumber={pageNumber}\n                searchResults={redactionSearchResultPageMap[pageNumber]}\n                selectedSearchResultIndexes={selectedSearchResultIndexesMap}\n                setSelectedSearchResultIndexes={setSelectedSearchResultIndexesMap}\n              />);\n          }}\n          {...testModeProps}\n        />);\n    }\n  };\n\n  const renderStartSearch = () => (\n    <div aria-label={t('redactionPanel.search.start')}>\n      {t('redactionPanel.search.start')}\n    </div>\n  );\n\n  const noResults = (\n    <div aria-label={t('message.noResults')}>\n      {t('message.noResults')}\n    </div>\n  );\n\n  const renderSearchInProgress = () => (\n    <div >\n      <Spinner height=\"25px\" width=\"25px\" />\n    </div>\n  );\n\n  const onCancelHandler = () => {\n    setRedactionSearchResultPageMap({});\n    onCancelSearch();\n  };\n\n  const selectAllResults = () => {\n    const searchResultIndexMap = {};\n    redactionSearchResults.forEach((value, index) => {\n      searchResultIndexMap[index] = true;\n    });\n    setSelectedSearchResultIndexesMap(searchResultIndexMap);\n  };\n\n  const unselectAllResults = () => {\n    const searchResultIndexMap = {};\n    redactionSearchResults.forEach((value, index) => {\n      searchResultIndexMap[index] = false;\n    });\n    setSelectedSearchResultIndexesMap(searchResultIndexMap);\n  };\n\n  const onMarkAllForRedaction = () => {\n    markSelectedResultsForRedaction(selectedIndexes);\n    onCancelSearch();\n  };\n\n  const onRedactSelectedResults = () => {\n    redactSelectedResults(selectedIndexes);\n  };\n\n  const isEmptyList = redactionSearchResults.length === 0;\n\n  const resultsContainerClass = classNames('redaction-search-results-container', { emptyList: isEmptyList });\n  const redactAllButtonClass = classNames('redact-all-selected', { disabled: selectedIndexes.length === 0 });\n  const markAllForRedactionButtonClass = classNames('mark-all-selected', { disabled: selectedIndexes.length === 0 });\n  const shouldShowResultsCounterOptions = (searchStatus === SearchStatus['SEARCH_DONE'] && !isProcessingRedactionResults) || searchStatus === SearchStatus['SEARCH_NOT_INITIATED'];\n\n  return (\n    <>\n      <div className=\"redaction-search-counter-controls\">\n        {searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] && (\n          <div style={{ flexGrow: 1 }}>\n            <Spinner height=\"18px\" width=\"18px\" />\n          </div>)}\n        {shouldShowResultsCounterOptions && (\n          <>\n            <div className=\"redaction-search-results-counter\">\n              <span>{t('redactionPanel.searchResults')}</span> ({redactionSearchResults.length})\n            </div>\n            <button\n              onClick={selectAllResults}\n              disabled={isEmptyList}\n              aria-label={t('action.selectAll')}\n            >\n              {t('action.selectAll')}\n            </button>\n            <button\n              disabled={isEmptyList}\n              onClick={unselectAllResults}\n              aria-label={t('action.unselect')}\n            >\n              {t('action.unselect')}\n            </button>\n          </>)}\n      </div>\n      <div className={resultsContainerClass} role=\"list\">\n        {searchStatus === SearchStatus['SEARCH_NOT_INITIATED'] && renderStartSearch()}\n        {(searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] && isEmptyList && isProcessingRedactionResults) && renderSearchInProgress()}\n        {searchStatus === SearchStatus['SEARCH_DONE'] && isEmptyList && !isProcessingRedactionResults && noResults}\n        {(searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] || searchStatus === SearchStatus['SEARCH_DONE']) && renderSearchResults()}\n      </div>\n      <div className=\"redaction-search-panel-controls\" >\n        <button\n          onClick={onCancelHandler}\n          aria-label={t('action.cancel')}\n          className=\"cancel\"\n        >\n          {t('action.cancel')}\n        </button>\n        <button\n          disabled={selectedIndexes.length === 0}\n          aria-label={t('annotation.redact')}\n          className={redactAllButtonClass}\n          onClick={onRedactSelectedResults}\n        >\n          {t('annotation.redact')}\n        </button>\n        <button\n          disabled={selectedIndexes.length === 0}\n          aria-label={t('action.addMark')}\n          className={markAllForRedactionButtonClass}\n          onClick={onMarkAllForRedaction}\n        >\n          {t('action.addMark')}\n        </button>\n      </div >\n    </>\n  );\n}\n\nexport default RedactionSearchResults;\n","import React, { useCallback } from 'react';\nimport RedactionSearchResults from './RedactionSearchResults';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport applyRedactions from 'helpers/applyRedactions';\nimport core from 'core';\n\nfunction createRedactionAnnotations(searchResults, activeToolStyles) {\n  const { StrokeColor, OverlayText, FillColor } = activeToolStyles;\n  const redactionAnnotations = searchResults.map((result) => {\n    const redaction = new window.Core.Annotations.RedactionAnnotation();\n    redaction.PageNumber = result.page_num;\n    redaction.Quads = result.quads.map((quad) => quad.getPoints());\n    redaction.StrokeColor = StrokeColor;\n    redaction.OverlayText = OverlayText;\n    redaction.FillColor = FillColor;\n    redaction.setContents(result.result_str);\n    redaction.type = result.type;\n    redaction.Author = core.getCurrentUser();\n\n    if (result.type === 'text') {\n      redaction.setCustomData('trn-annot-preview', result.result_str);\n    }\n\n    redaction.setCustomData('trn-redaction-type', result.type);\n\n    return redaction;\n  });\n\n  return redactionAnnotations;\n}\n\nconst defaultRedactionStyles = { OverlayText: '', StrokeColor: new window.Core.Annotations.Color(255, 0, 0) };\n\nfunction RedactionSearchResultsContainer(props) {\n  const { onCancelSearch } = props;\n  const dispatch = useDispatch();\n  // activeToolStyles is an object so we do a shallowEqual to check equality\n  const [activeToolStyles, activeToolName] = useSelector(\n    (state) => [\n      selectors.getActiveToolStyles(state),\n      selectors.getActiveToolName(state)\n    ], shallowEqual);\n\n  const redactSelectedResults = (searchResults) => {\n    const redactionAnnotations = createRedactionAnnotations(searchResults, defaultRedactionStyles);\n    dispatch(applyRedactions(redactionAnnotations, onCancelSearch));\n  };\n\n  const markSelectedResultsForRedaction = useCallback((searchResults) => {\n    const redactionStyles = activeToolName.includes('Redaction') ? activeToolStyles : defaultRedactionStyles;\n    const redactionAnnotations = createRedactionAnnotations(searchResults, redactionStyles);\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.addAnnotations(redactionAnnotations);\n  }, [activeToolStyles, activeToolName]);\n\n  return (\n    <RedactionSearchResults\n      markSelectedResultsForRedaction={markSelectedResultsForRedaction}\n      redactSelectedResults={redactSelectedResults}\n      {...props}\n    />);\n}\n\nexport default RedactionSearchResultsContainer;","import RedactionSearchResults from './RedactionSearchResultsContainer';\n\nexport default RedactionSearchResults;","import React, { useContext, useState } from 'react';\nimport RedactionSearchOverlay from 'src/components/RedactionSearchOverlay';\nimport { RedactionPanelContext } from 'components/RedactionPanel/RedactionPanelContext';\nimport RedactionSearchResults from 'components/RedactionSearchResults';\n\nconst RedactionSearchPanel = (props) => {\n  const [searchTerms, setSearchTerms] = useState([]);\n  const { isRedactionSearchActive, setIsRedactionSearchActive } = useContext(RedactionPanelContext);\n  const onCancelSearch = () => {\n    setSearchTerms([]);\n    clearRedactionSearchResults();\n    setIsRedactionSearchActive(false);\n  };\n\n  const {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  } = props;\n\n  return (\n    <>\n      <RedactionSearchOverlay\n        searchTerms={searchTerms}\n        setSearchTerms={setSearchTerms}\n      />\n      {isRedactionSearchActive &&\n        <RedactionSearchResults\n          redactionSearchResults={redactionSearchResults}\n          onCancelSearch={onCancelSearch}\n          searchStatus={searchStatus}\n          isProcessingRedactionResults={isProcessingRedactionResults}\n        />\n      }\n    </>\n  );\n};\n\nexport default RedactionSearchPanel;","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport core from 'core';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport SearchStatus from 'constants/searchStatus';\n\nfunction useOnRedactionSearchCompleted() {\n  const [searchStatus, setSearchStatus] = useState(SearchStatus['SEARCH_NOT_INITIATED']);\n  const [redactionSearchResults, setRedactionSearchResults] = useState([]);\n  const [isProcessingRedactionResults, setIsProcessingRedactionResults] = useState(false);\n  const redactionSearchPatterns = useSelector((state) => selectors.getRedactionSearchPatterns(state), shallowEqual);\n\n  const searchPatterns = useMemo(() => {\n    return Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { regex, type, icon } = redactionSearchPatterns[key];\n      map[type] = {\n        regex,\n        icon\n      };\n      return map;\n    }, {});\n  }, [redactionSearchPatterns]);\n\n  const mapResultToType = useCallback((result) => {\n    // Iterate through the patterns and return the first match\n    const { resultStr } = result;\n    const searchPatternKeys = Object.keys(searchPatterns);\n\n    const resultType = searchPatternKeys.find((key) => {\n      const { regex } = searchPatterns[key];\n      return regex.test(resultStr);\n    });\n\n    // If it didn't match any of the patterns, return the default type which is text\n    result.type = resultType === undefined ? redactionTypeMap['TEXT'] : resultType;\n    // And also set the icon to display in the panel. If no icon provided use the text icon\n    const { icon = 'icon-form-field-text' } = searchPatterns[result.type] || {};\n    result.icon = icon;\n    return result;\n  }, [searchPatterns]);// Dependency is an object but it is memoized so it will not re-create unless the patterns change\n\n  const clearRedactionSearchResults = useCallback(() => {\n    setRedactionSearchResults([]);\n    core.clearSearchResults();\n    setIsProcessingRedactionResults(false);\n  });\n\n  useEffect(() => {\n    function onSearchResultsChanged(results) {\n      const mappedResults = results.map(mapResultToType);\n      setIsProcessingRedactionResults(true);\n      setRedactionSearchResults(mappedResults);\n    }\n\n    core.addEventListener('searchResultsChanged', onSearchResultsChanged);\n    return () => {\n      core.removeEventListener('searchResultsChanged', onSearchResultsChanged);\n    };\n  }, [searchStatus]);\n\n  useEffect(() => {\n    function searchInProgressEventHandler(isSearching) {\n      if (isSearching === undefined || isSearching === null) {\n        // if isSearching is not passed at all, we consider that to mean that search was reset to original state\n        setSearchStatus(SearchStatus['SEARCH_NOT_INITIATED']);\n      } else if (isSearching) {\n        setSearchStatus(SearchStatus['SEARCH_IN_PROGRESS']);\n      } else {\n        setSearchStatus(SearchStatus['SEARCH_DONE']);\n        // Need a timeout due to timing issue as SEARCH_DONE is fired\n        // before final call to onSearchResultsChanged, otherwise we briefly show\n        // the NO RESULTS message before showing actual results.\n        setTimeout(() => {\n          setIsProcessingRedactionResults(false);\n        }, 100);\n      }\n    }\n\n    core.addEventListener('searchInProgress', searchInProgressEventHandler);\n\n    return () => {\n      core.removeEventListener('searchInProgress', searchInProgressEventHandler);\n    };\n  }, []);\n\n  return {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  };\n}\n\nexport default useOnRedactionSearchCompleted;","import useOnRedactionSearchCompleted from './useOnRedactionSearchCompleted';\n\nexport default useOnRedactionSearchCompleted;","import RedactionSearchPanel from './RedactionSearchPanelContainer';\n\nexport default RedactionSearchPanel;","import React from 'react';\nimport RedactionSearchPanel from './RedactionSearchPanel';\nimport useOnRedactionSearchCompleted from 'hooks/useOnRedactionSearchCompleted';\n\nconst ReactionSearchPanelContainer = () => {\n  const {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  } = useOnRedactionSearchCompleted();\n\n  return (\n    <RedactionSearchPanel\n      redactionSearchResults={redactionSearchResults}\n      isProcessingRedactionResults={isProcessingRedactionResults}\n      clearRedactionSearchResults={clearRedactionSearchResults}\n      searchStatus={searchStatus}\n    />\n  );\n};\n\nexport default ReactionSearchPanelContainer;","import React, { useContext, useMemo } from 'react';\nimport RedactionPanel from './RedactionPanel';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport applyRedactions from 'helpers/applyRedactions';\nimport { RedactionPanelContext, RedactionPanelProvider } from './RedactionPanelContext';\nimport useOnRedactionAnnotationChanged from '../../hooks/useOnRedactionAnnotationChanged';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\nimport RedactionSearchPanel from 'components/RedactionSearchPanel';\nimport { defaultRedactionTypes } from 'constants/redactionTypes';\n\nexport const RedactionPanelContainer = () => {\n  const [\n    isOpen,\n    isDisabled,\n    redactionPanelWidth,\n    isInDesktopOnlyMode,\n    customApplyRedactionsHandler,\n    redactionSearchPatterns,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'redactionPanel'),\n      selectors.isElementDisabled(state, 'redactionPanel'),\n      selectors.getRedactionPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getCustomApplyRedactionsHandler(state),\n      selectors.getRedactionSearchPatterns(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  const redactionAnnotationsList = useOnRedactionAnnotationChanged();\n\n  const redactionTypesDictionary = useMemo(() => {\n    const storedRedactionTypes = Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { label, type, icon } = redactionSearchPatterns[key];\n      map[type] = {\n        label,\n        icon,\n      };\n      return map;\n    }, {});\n\n    return { ...storedRedactionTypes, ...defaultRedactionTypes };\n  }, [redactionSearchPatterns]);\n\n  const deleteAllRedactionAnnotations = () => {\n    core.deleteAnnotations(redactionAnnotationsList);\n  };\n\n  const dispatch = useDispatch();\n  const applyAllRedactions = () => {\n    const originalApplyRedactions = () => {\n      dispatch(applyRedactions(redactionAnnotationsList));\n    };\n    if (customApplyRedactionsHandler) {\n      customApplyRedactionsHandler(redactionAnnotationsList, originalApplyRedactions);\n    } else {\n      originalApplyRedactions();\n    }\n  };\n  const closeRedactionPanel = () => {\n    dispatch(actions.closeElement('redactionPanel'));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeRedactionPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  const style =\n    !isInDesktopOnlyMode && isMobile ? {} : { width: `${redactionPanelWidth}px`, minWidth: `${redactionPanelWidth}px` };\n\n  const { isRedactionSearchActive } = useContext(RedactionPanelContext);\n\n  if (isDisabled || !isOpen) {\n    return null;\n  }\n  return (\n    <DataElementWrapper dataElement=\"redactionPanel\" className=\"Panel RedactionPanel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      <RedactionSearchPanel />\n      {!isRedactionSearchActive && (\n        <RedactionPanel\n          redactionAnnotations={redactionAnnotationsList}\n          redactionTypesDictionary={redactionTypesDictionary}\n          applyAllRedactions={applyAllRedactions}\n          deleteAllRedactionAnnotations={deleteAllRedactionAnnotations}\n        />\n      )}\n    </DataElementWrapper>\n  );\n};\n\nconst RedactionPanelContainerWithProvider = () => {\n  return (\n    <RedactionPanelProvider>\n      <RedactionPanelContainer />\n    </RedactionPanelProvider>\n  );\n};\n\nexport default RedactionPanelContainerWithProvider;","import RedactionPanel from './RedactionPanelContainer';\n\nexport default RedactionPanel;","import React, { useEffect } from 'react';\nimport i18next from 'i18next';\n\nimport TextStylePicker from 'components/TextStylePicker';\nimport ColorPalette from 'components/ColorPalette';\nimport ColorPalettePicker from 'components/ColorPalettePicker';\n\n// //TODO: implement when opacity is available from worker\n// import Slider from 'components/Slider';\n\nimport Button from 'components/Button';\nimport HorizontalDivider from 'components/HorizontalDivider';\n\nimport './TextEditingPanel.scss';\n\nfunction hexToRGB(hex) {\n  // Convert the hex color to RGB components\n  const red = parseInt(hex.slice(1, 3), 16);\n  const green = parseInt(hex.slice(3, 5), 16);\n  const blue = parseInt(hex.slice(5, 7), 16);\n  return { red, green, blue };\n}\n\nfunction calculateEuclideanDistance(rgb1, rgb2) {\n  // Calculate the Euclidean distance between two RGB values\n  return Math.sqrt(\n    (rgb2.red - rgb1.red) ** 2 +\n    (rgb2.green - rgb1.green) ** 2 +\n    (rgb2.blue - rgb1.blue) ** 2\n  );\n}\n\nfunction areColorsClose(hex1, hex2, threshold) {\n  // Convert hex colors to RGB\n  const rgb1 = hexToRGB(hex1);\n  const rgb2 = hexToRGB(hex2);\n\n  // Calculate the Euclidean distance between RGB values\n  const distance = calculateEuclideanDistance(rgb1, rgb2);\n\n  // Compare the distance to the threshold\n  return distance <= threshold;\n}\n\nconst TextEditingPanel = ({\n  undoRedoProperties,\n  freeTextMode,\n  contentSelectMode,\n  textEditProperties = {},\n  format,\n  handlePropertyChange,\n  handleTextFormatChange,\n  handleColorChange,\n  fonts,\n  handleAddLinkToText,\n  disableLinkButton,\n  colorArray = []\n}) => {\n  const currentPalette = 'TextColor';\n  const DEFAULT_COLOR = new window.Core.Annotations.Color('#000000');\n  const FONT_PLACEHOLDER = 'Font';\n  let colorsToIgnore = [];\n\n  useEffect(() => {\n    if (!('Font' in textEditProperties)) {\n      // hack to use placeholder in font dropdown needs to have a non-empty, not included value\n      textEditProperties['Font'] = FONT_PLACEHOLDER;\n    }\n  }, []);\n\n  const undoRedoSection = (\n    <div className=\"text-editing-panel-section\">\n      <div className=\"text-editing-panel-menu-items\">\n        <div className='text-editing-panel-menu-items-buttons'>\n          <Button\n            img=\"icon-action-undo\"\n            dataElement=\"textPanelUndoButton\"\n            disabled={!undoRedoProperties?.canUndo}\n            onClick={undoRedoProperties?.handleUndo}\n            title={i18next.t('action.undo')}\n          />\n\n          <Button\n            img=\"icon-action-redo\"\n            dataElement=\"textPanelRedoButton\"\n            disabled={!undoRedoProperties?.canRedo}\n            onClick={undoRedoProperties?.handleRedo}\n            title={i18next.t('action.redo')}\n          />\n        </div>\n      </div>\n    </div>\n  );\n\n  const newColor = format?.color?.toHexString ? format.color.toHexString().toUpperCase() : DEFAULT_COLOR.toHexString().toUpperCase();\n  const shouldUpdateColorsArray = colorArray?.length > 0 && !colorArray.includes(newColor);\n  // Currently there is an issue where CMYK documents will return slightly different hex values\n  // to prevent them from flooding the Color Swatch panel we check the distance between the new color\n  // and the existing colors and if it is less than 50 we use the existing color, once the Worker is\n  // updated to return the same hex values for CMYK documents this can be removed\n  let closeMatchColor;\n  if (shouldUpdateColorsArray) {\n    let closeMatch = false;\n    for (let i = 0; i < colorArray.length; i++) {\n      const color = colorArray[i];\n      if (areColorsClose(color, newColor, 50)) {\n        closeMatch = true;\n        closeMatchColor = new window.Core.Annotations.Color(color);\n        break;\n      }\n    }\n\n    if (!closeMatch) {\n      colorArray.push(newColor);\n    }\n  }\n  colorsToIgnore = colorArray.map((color) => color.toLowerCase());\n  let rgbColor = format?.color || DEFAULT_COLOR;\n  if (closeMatchColor) {\n    rgbColor = closeMatchColor;\n  }\n\n  return (\n    <>\n      <div className=\"text-editing-panel\">\n        <div className=\"text-editing-panel-section\">\n          <span className=\"text-editing-panel-heading\">{i18next.t('textEditingPanel.paragraph')}</span>\n          <div className=\"text-editing-panel-menu-items\">\n            <div className={`text-editing-panel-text-style-picker ${contentSelectMode ? '' : 'inactive'}`}>\n              <TextStylePicker\n                fonts={fonts}\n                onPropertyChange={handlePropertyChange}\n                properties={textEditProperties}\n                isContentEditing={true}\n              />\n            </div>\n          </div>\n        </div>\n\n        <HorizontalDivider style={{ paddingTop: 0 }} />\n\n        <div className=\"text-editing-panel-section\">\n          <span className=\"text-editing-panel-heading\">{i18next.t('textEditingPanel.text')}</span>\n          <div\n            className=\"text-editing-panel-menu-items\"\n            // prevent the blur event from being triggered when clicking on panel buttons\n            // otherwise we can't style the text inline since a blur event is triggered before a click event\n            onMouseDown={(e) => {\n              if (e.type !== 'touchstart') {\n                e.preventDefault();\n              }\n            }}\n          >\n            <div\n              className={`text-editing-panel-menu-items-buttons ${contentSelectMode || freeTextMode ? '' : 'inactive'}`}\n            >\n              <Button\n                isActive={format?.bold}\n                dataElement=\"richTextBoldButton\"\n                onClick={handleTextFormatChange('bold')}\n                img=\"icon-text-bold\"\n                title=\"option.richText.bold\"\n              />\n              <Button\n                isActive={format?.italic}\n                dataElement=\"richTextItalicButton\"\n                onClick={handleTextFormatChange('italic')}\n                img=\"icon-text-italic\"\n                title=\"option.richText.italic\"\n              />\n              <Button\n                isActive={format?.underline}\n                dataElement=\"richTextUnderlineButton\"\n                onClick={handleTextFormatChange('underline')}\n                img=\"ic_annotation_underline_black_24px\"\n                title=\"option.richText.underline\"\n              />\n            </div>\n            <div className={'text-editing-panel-color-palette'}>\n              <ColorPalette\n                colorMapKey=\"freeText\"\n                color={rgbColor}\n                property={currentPalette}\n                onStyleChange={handleColorChange}\n                overridePalette2={colorArray}\n              />\n              <ColorPalettePicker\n                color={rgbColor}\n                property={currentPalette}\n                onStyleChange={handleColorChange}\n                disableTitle\n                enableEdit\n                colorsToIgnore={colorsToIgnore}\n              />\n            </div>\n            {/* TODO: implement when opacity is available from worker */}\n            {/* <Slider {...sliderProperties} onStyleChange={handleStyleChange} onSliderChange={handleSliderChange}/> */}\n            <Button\n              dataElement=\"textPanelAddLinkButton\"\n              onClick={handleAddLinkToText}\n              img=\"icon-tool-link\"\n              title=\"link.urlLink\"\n              disabled={disableLinkButton}\n            />\n          </div>\n        </div>\n\n        <HorizontalDivider style={{ paddingTop: 0 }} />\n        {undoRedoProperties ? undoRedoSection : undefined }\n      </div>\n    </>\n  );\n};\n\nexport default TextEditingPanel;\n","import React, { useEffect, useState, useRef } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\nimport TextEditingPanel from './TextEditingPanel';\nimport DataElements from 'constants/dataElement';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nconst fonts = [];\n\nconst TextEditingPanelContainer = ({ dataElement = 'textEditingPanel' }) => {\n  const [isOpen, isDisabled, textEditingPanelWidth, isInDesktopOnlyMode] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.getTextEditingPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  // selection modes used are 'FreeText' and 'ContentBox'\n  const [selectionMode, setSelectionMode] = useState(null);\n\n  useDidUpdate(() => {\n    const supportedFonts = window.Core.ContentEdit.getContentEditingFonts();\n\n    supportedFonts.then((res) => res.forEach((font) => {\n      if (!fonts.includes(font)) {\n        fonts.push(font);\n      }\n    }));\n  }, [selectionMode]);\n\n  const annotationRef = useRef(null);\n  const contentEditorRef = useRef(null);\n\n  const [selectedContentBox, setSelectedContentBox] = useState(null);\n\n  // properties for TextStylePicker\n  const [textEditProperties, setTextEditProperties] = useState({});\n\n  // properties for custom buttons and color picker\n  const [format, setFormat] = useState({});\n\n  const [colorArray] = useState(['#000000', '#FFFFFF']);\n\n  useEffect(() => {\n    const handleSelectionChange = async () => {\n      if (contentEditorRef.current && core.getContentEditManager().isInContentEditMode()) {\n        const attribute = await contentEditorRef.current.getTextAttributes();\n        const hexColor = attribute.fontColors[0].fontColor;\n        const color = new window.Core.Annotations.Color(hexColor);\n\n        const fontObject = {\n          FontSize: attribute.fontSize,\n          Font: getFontName(attribute.fontName),\n        };\n\n        if (!fonts.includes(fontObject.Font)) {\n          fonts.push(fontObject.Font);\n        }\n\n        setTextEditProperties(fontObject);\n        handleColorChange(null, color);\n        attribute.fontColor = hexColor;\n\n        // remove the fontName attribute so that we don't override the fontName when we set the text attributes\n        delete attribute.fontName;\n        window.Core.ContentEdit.setTextAttributes(attribute);\n\n        setFormat({ ...attribute, color });\n      }\n    };\n    core.addEventListener('contentEditSelectionChange', handleSelectionChange);\n    return () => core.removeEventListener('contentEditSelectionChange', handleSelectionChange);\n  }, []);\n\n  /**\n   * @ignore\n   * Small routine that strips out the bold and italic from the font name, separates the Font into separate words for the UI\n   * @param {string} fontString\n   * @returns {string} the separated font name\n   */\n  function getFontName(fontString) {\n    const cleanedFontString = fontString.replace(/(Bold|Italic)/gi, '').trim();\n    const words = [];\n    let currentWord = '';\n\n    for (const char of cleanedFontString) {\n      if (char.toUpperCase() === char) {\n        if (currentWord) {\n          words.push(currentWord.trim());\n        }\n        currentWord = char;\n      } else {\n        currentWord += char;\n      }\n    }\n\n    if (currentWord) {\n      words.push(currentWord.trim());\n    }\n\n    const separatedFontName = words.join(' ');\n\n    return separatedFontName;\n  }\n\n  useEffect(() => {\n    const handleEditorStarted = ({ editor }) => {\n      contentEditorRef.current = editor;\n      dispatch(actions.setContentBoxEditor(contentEditorRef.current));\n    };\n    core.addEventListener('contentBoxEditStarted', handleEditorStarted);\n    return () => core.removeEventListener('contentBoxEditStarted', handleEditorStarted);\n  }, []);\n\n  useEffect(() => {\n    const handleEditorEnd = () => {\n      if (core.getContentEditManager().isInContentEditMode()) {\n        contentEditorRef.current = null;\n        dispatch(actions.setContentBoxEditor(null));\n      }\n    };\n\n    core.addEventListener('contentBoxEditEnded', handleEditorEnd);\n    return () => core.removeEventListener('contentBoxEditEnded', handleEditorEnd);\n  }, []);\n\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    const handleContentEditModeStart = () => {\n      dispatch(actions.closeElements(['searchPanel', 'notesPanel', 'redactionPanel', 'wv3dPropertiesPanel']));\n      if (!isMobile) {\n        dispatch(actions.openElement(dataElement));\n      }\n    };\n\n    const handleContentEditModeEnd = () => {\n      dispatch(actions.closeElement(dataElement));\n    };\n\n    core.addEventListener('contentEditModeStarted', handleContentEditModeStart);\n    core.addEventListener('contentEditModeEnded', handleContentEditModeEnd);\n    return () => {\n      core.removeEventListener('contentEditModeStarted', handleContentEditModeStart);\n      core.removeEventListener('contentEditModeEnded', handleContentEditModeEnd);\n    };\n  }, []);\n\n  useEffect(() => {\n    const handleAnnotationSelected = async (annotations, action) => {\n      if (!core.getContentEditManager().isInContentEditMode()) {\n        return;\n      }\n      const annotation = annotations[0];\n      const isFreeText =\n        annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n        annotation.getIntent() === window.Core.Annotations.FreeTextAnnotation.Intent.FreeText &&\n        (annotation.getContentEditAnnotationId() || annotation.ToolName === window.Core.Tools.ToolNames.ADD_PARAGRAPH);\n      if (action === 'selected') {\n        if (!isInDesktopOnlyMode && isMobile) {\n          return;\n        }\n        if (isFreeText) {\n          annotationRef.current = annotation;\n          setSelectionMode('FreeText');\n          if (!isDisabled && !isOpen) {\n            dispatch(actions.toggleElement(dataElement));\n          }\n        } else if (annotation.isContentEditPlaceholder()) {\n          setSelectedContentBox(annotation);\n\n          const textAttributes = await getTextEditPropertiesFromContentEditPlaceHolder(annotation);\n          setFormat(textAttributes);\n          setTextEditProperties(textAttributes);\n          setSelectionMode('ContentBox');\n          annotationRef.current = null;\n          if (!isDisabled && !isOpen) {\n            dispatch(actions.toggleElement(dataElement));\n          }\n        }\n      } else if (action === 'deselected') {\n        if (selectedContentBox !== undefined) {\n          setSelectedContentBox(null);\n          if (!annotationRef.current) {\n            setSelectionMode(null);\n          }\n        }\n      }\n    };\n\n    core.addEventListener('annotationSelected', handleAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationSelected', handleAnnotationSelected);\n    };\n  }, [isDisabled, isOpen]);\n\n  useEffect(() => {\n    const onResize = () => {\n      if (core.getContentEditManager().isInContentEditMode()) {\n        if (isMobile) {\n          dispatch(actions.closeElement(dataElement));\n        } else {\n          dispatch(actions.openElement(dataElement));\n        }\n      }\n    };\n    window.addEventListener('resize', onResize);\n    return () => window.removeEventListener('resize', onResize);\n  }, []);\n\n  const handlePropertyChange = (property, value) => {\n    if (annotationRef.current) {\n      core.setAnnotationStyles(annotationRef.current, {\n        [property]: value,\n      });\n    } else {\n      setTextEditProperties({\n        ...textEditProperties,\n        [property]: value,\n      });\n    }\n\n    if (selectedContentBox) {\n      switch (property) {\n        case 'Font':\n          window.Core.ContentEdit.setContentFont(selectedContentBox, value);\n          break;\n        case 'FontSize':\n          window.Core.ContentEdit.setContentFontSize(selectedContentBox, value);\n          break;\n        case 'TextAlign':\n          window.Core.ContentEdit.alignContents(selectedContentBox, value);\n          break;\n      }\n    }\n\n    const conversionMap = {\n      Font: 'fontName',\n      FontSize: 'fontSize',\n      TextAlign: 'textAlign',\n    };\n\n    window.Core.ContentEdit.setTextAttributes({ [conversionMap[property]]: value });\n  };\n\n  const handleTextFormatChange = (updatedDecorator) => () => {\n    if (selectedContentBox) {\n      switch (updatedDecorator) {\n        case 'bold':\n          window.Core.ContentEdit.toggleBoldContents(selectedContentBox);\n          break;\n        case 'italic':\n          window.Core.ContentEdit.toggleItalicContents(selectedContentBox);\n          break;\n        case 'underline':\n          window.Core.ContentEdit.toggleUnderlineContents(selectedContentBox);\n          break;\n      }\n\n      setFormat((format) => ({\n        ...format,\n        [updatedDecorator]: !format[updatedDecorator]\n      }));\n    }\n  };\n\n  const handleAddLinkToText = async () => {\n    if (contentEditorRef.current) {\n      await contentEditorRef.current.loadHyperLinkURL();\n      dispatch(actions.openElement(DataElements.CONTENT_EDIT_LINK_MODAL));\n    }\n  };\n\n  const handleColorChange = (_, color) => {\n    const textColor = color?.toHexString?.() || color;\n    if (selectedContentBox) {\n      if (!colorArray.includes(textColor)) {\n        colorArray.push(textColor);\n      }\n      window.Core.ContentEdit.setTextColor(selectedContentBox, textColor);\n    }\n    applyFormat('color', textColor);\n  };\n\n  const applyFormat = (formatKey, value) => {\n    if (formatKey === 'color') {\n      value = new window.Core.Annotations.Color(value);\n    }\n\n    // format the entire editor doesn't trigger the editorTextChanged event, so we set the format state here\n    setFormat({\n      ...format,\n      [formatKey]: value,\n    });\n  };\n\n  const getTextEditPropertiesFromContentEditPlaceHolder = async (annotation) => {\n    const fontMap = {};\n\n    fonts.forEach((font) => {\n      const fontKey = font.replace(/\\s+/g, '');\n      fontMap[fontKey] = font;\n    });\n\n    const isTextContentPlaceholder = annotation.isContentEditPlaceholder() && annotation.getContentEditType() === window.Core.ContentEdit.Types.TEXT;\n    if (isTextContentPlaceholder) {\n      const contentBoxId = annotation.getCustomData('contentEditBoxId');\n\n      const editManager = core.getDocumentViewer().getContentEditManager();\n      const attribs = await editManager.getContentBoxAttributes(contentBoxId);\n\n      const fontName = getFontName(attribs.fontName);\n      const { bold, italic, underline, fontColors, fontSize, textAlign } = attribs;\n      const color = new window.Core.Annotations.Color(fontColors[0].fontColor);\n\n      if (!fonts.includes(fontName)) {\n        fonts.push(fontName);\n      }\n\n      return {\n        Font: fontName,\n        FontSize: fontSize,\n        TextAlign: textAlign,\n        bold,\n        italic,\n        underline,\n        color\n      };\n    }\n  };\n\n  const handleUndo = async () => {\n    await core.getDocumentViewer().getContentEditHistoryManager().undo();\n  };\n\n  const handleRedo = async () => {\n    await core.getDocumentViewer().getContentEditHistoryManager().redo();\n  };\n\n  const undoRedoProperties = {\n    canUndo: core.getDocumentViewer().getContentEditHistoryManager().canUndo(),\n    canRedo: core.getDocumentViewer().getContentEditHistoryManager().canRedo(),\n    handleUndo: handleUndo,\n    handleRedo: handleRedo\n  };\n\n  const closeTextEditingPanel = () => {\n    dispatch(actions.closeElement(dataElement));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeTextEditingPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  const style =\n    !isInDesktopOnlyMode && isMobile\n      ? {}\n      : { width: `${textEditingPanelWidth}px`, minWidth: `${textEditingPanelWidth}px` };\n\n  if (isDisabled || !isOpen) {\n    return null;\n  }\n  return (\n    <DataElementWrapper dataElement={dataElement} className=\"Panel TextEditingPanel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      <TextEditingPanel\n        undoRedoProperties={undoRedoProperties}\n        freeTextMode={selectionMode === 'FreeText'}\n        contentSelectMode={selectionMode === 'ContentBox'}\n        textEditProperties={textEditProperties}\n        handlePropertyChange={handlePropertyChange}\n        format={format}\n        handleTextFormatChange={handleTextFormatChange}\n        handleColorChange={handleColorChange}\n        fonts={fonts}\n        handleAddLinkToText={handleAddLinkToText}\n        disableLinkButton={\n          (annotationRef.current?.ToolName === window.Core.Tools.ToolNames.ADD_PARAGRAPH) && !contentEditorRef.current\n        }\n        colorArray={colorArray}\n      />\n    </DataElementWrapper>\n  );\n};\n\nexport default TextEditingPanelContainer;\n","import TextEditingPanel from './TextEditingPanelContainer';\n\nexport default TextEditingPanel;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","import React from 'react';\nimport './PropertyKeyValuePair.scss';\n\nconst PropertyKeyValuePair = (props) => {\n  const { name, value } = props;\n\n  return (\n    <div data-element=\"propertyKeyValuePair\" className=\"property-pair\" key={name}>\n      <span className=\"property-key\">{name}</span>\n      <span className=\"property-value\">{value}</span>\n    </div>\n  );\n};\n\nexport default PropertyKeyValuePair;\n","import React from 'react';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\n\nconst GeneralValuesSection = (props) => {\n  const { entities } = props;\n\n  const elements = [];\n\n  for (const entity in entities) {\n    elements.push(<PropertyKeyValuePair key={entity} name={entity} value={entities[entity]} />);\n  }\n\n  return <div data-element=\"generalValues\">{elements}</div>;\n};\n\nexport default GeneralValuesSection;\n","import React, { useState, useMemo } from 'react';\nimport Icon from 'components/Icon';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\nimport './Group.scss';\n\nconst Group = (props) => {\n  const { name, data, open } = props;\n\n  const [isActive, setIsActive] = useState(open);\n  const downArrow = 'ic_chevron_down_black_24px';\n  const rightArrow = 'ic_chevron_right_black_24px';\n\n  const onClick = () => {\n    setIsActive(!isActive);\n  };\n\n  const elements = useMemo(() => {\n    return Object.entries(data).map((entity) => (\n      <PropertyKeyValuePair key={entity[0]} name={entity[0]} value={entity[1]} />\n    ));\n  }, [data]);\n\n  return (\n    <div data-element=\"Group\">\n      <div className=\"group-title\">\n        <div onClick={onClick}>\n          <Icon glyph={`${isActive ? downArrow : rightArrow}`} />\n        </div>\n        <span>{name}</span>\n      </div>\n\n      <div className={`dropdown ${isActive ? 'active' : 'inactive'}`}>{elements}</div>\n    </div>\n  );\n};\n\nexport default React.memo(Group);\n","import React from 'react';\nimport Group from '../Group/Group';\n\nfunction addOrderedGroups(orderedGroup, groups) {\n  const orderArray = [];\n  for (const group in orderedGroup) {\n    const groupName = orderedGroup[group];\n\n    if (groupName in groups) {\n      orderArray.push(<Group name={groupName} key={groupName} data={groups[groupName]} open />);\n    }\n  }\n\n  return orderArray;\n}\n\nconst GroupsContainer = (props) => {\n  const { groups, groupOrder } = props;\n\n  let combinedGroups = [];\n\n  if (groupOrder && groupOrder.length > 0) {\n    combinedGroups = addOrderedGroups(groupOrder, groups);\n\n    for (const group in groups) {\n      if (!groupOrder.includes(group)) {\n        combinedGroups.push(<Group name={group} key={group} data={groups[group]} open />);\n      }\n    }\n  } else {\n    for (const group in groups) {\n      combinedGroups.push(<Group name={group} key={group} data={groups[group]} open />);\n    }\n  }\n\n  return <div data-element=\"groupsContainer\">{combinedGroups}</div>;\n};\n\nexport default GroupsContainer;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './HeaderTitle.scss';\n\nconst HeaderTitle = (attributes) => {\n  const { title } = attributes;\n  const { t } = useTranslation();\n\n  return (\n    <h1 data-element=\"headerTitle\" className=\"header-title\">\n      <span>{t('wv3dPropertiesPanel.propertiesHeader')}</span>\n      <span> </span>\n      <span className=\"header-value\">{title}</span>\n    </h1>\n  );\n};\n\nexport default HeaderTitle;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport GeneralValuesSection from '../GeneralValuesSection/GeneralValuesSection';\nimport GroupsContainer from '../GroupsContainer/GroupsContainer';\nimport Group from '../Group/Group';\nimport HeaderTitle from '../HeaderTitle/HeaderTitle';\n\nfunction createDataSet(dataMap, propertySet, removeEmptyRows) {\n  const combinedMap = {};\n\n  if (removeEmptyRows) {\n    for (const item in dataMap) {\n      const dataPoint = propertySet[dataMap[item]];\n      if (dataPoint !== undefined && dataPoint !== '') {\n        combinedMap[item] = dataPoint;\n      }\n    }\n  } else {\n    for (const item in dataMap) {\n      combinedMap[item] = propertySet[dataMap[item]];\n    }\n  }\n\n  return combinedMap;\n}\n\nfunction checkForEmptyKeys(data) {\n  for (const key in data) {\n    const value = data[key];\n    if (value !== undefined && value !== '') {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction generateGroupDataSet(dataMap, propertySet, removeEmptyRows, removeEmptyGroups) {\n  const combinedGroupMap = {};\n\n  if (removeEmptyGroups) {\n    for (const group in dataMap) {\n      const dataset = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n      if (Object.keys(dataset).length > 0) {\n        if (!checkForEmptyKeys(dataset)) {\n          combinedGroupMap[group] = dataset;\n        }\n      }\n    }\n  } else {\n    for (const group in dataMap) {\n      combinedGroupMap[group] = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n    }\n  }\n\n  return combinedGroupMap;\n}\n\nconst PropertiesElement = (props) => {\n  const { element, schema } = props;\n\n  const {\n    headerName,\n    defaultValues,\n    groups,\n    groupOrder,\n    removeEmptyRows,\n    removeEmptyGroups,\n    createRawValueGroup,\n  } = schema;\n\n  const { t } = useTranslation();\n\n  const defaultItems = createDataSet(defaultValues, element, removeEmptyRows);\n  const groupsItems = generateGroupDataSet(groups, element, removeEmptyRows, removeEmptyGroups);\n  const name = element[headerName];\n\n  return (\n    <section data-element=\"propertiesElement\">\n      <HeaderTitle title={name} />\n      <GeneralValuesSection entities={defaultItems} />\n      <GroupsContainer groups={groupsItems} groupOrder={groupOrder} />\n      {createRawValueGroup ? (\n        <Group data-element=\"Group\" name={t('wv3dPropertiesPanel.miscValuesHeader')} data={element} open={true} />\n      ) : null}\n    </section>\n  );\n};\n\nexport default PropertiesElement;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport DataElementWrapper from '../DataElementWrapper';\nimport { v4 as uuidv4 } from 'uuid';\nimport './Wv3dPropertiesPanel.scss';\n\nimport PropertiesElement from './PropertiesElement/PropertiesElement';\n\nconst Wv3dPropertiesPanel = (props) => {\n  const { currentWidth, isInDesktopOnlyMode, isMobile = false, closeWv3dPropertiesPanel, schema, modelData } = props;\n\n  const { t } = useTranslation();\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeWv3dPropertiesPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  let propertiesCollection = modelData.map((element) => (\n    <PropertiesElement key={`${element.handle}-${uuidv4()}`} element={element} schema={schema} />\n  ));\n\n  const emptyPanelPlaceholder = () => {\n    return (\n      <div className=\"no-selections\">\n        <div>\n          <Icon className=\"empty-icon\" glyph=\"ic-wv3d-properties-panel-menu\" />\n        </div>\n        <div className=\"empty-text\">{t('wv3dPropertiesPanel.emptyPanelMessage')}</div>\n      </div>\n    );\n  };\n\n  if (modelData.length < 1) {\n    propertiesCollection = emptyPanelPlaceholder();\n  }\n\n  return (\n    <DataElementWrapper dataElement=\"wv3dPropertiesPanel\" className=\"Panel wv3d-properties-panel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      {propertiesCollection}\n    </DataElementWrapper>\n  );\n};\n\nexport default Wv3dPropertiesPanel;\n","import React from 'react';\nimport Wv3dPropertiesPanel from './Wv3dPropertiesPanel';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nconst Wv3dPropertiesPanelContainer = () => {\n  const [isOpen, isDisabled, wv3dPropertiesPanelWidth, isInDesktopOnlyMode, modelData, schema] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n      selectors.isElementDisabled(state, 'wv3dPropertiesPanel'),\n      selectors.getWv3dPropertiesPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getWv3dPropertiesPanelModelData(state),\n      selectors.getWv3dPropertiesPanelSchema(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  const dispatch = useDispatch();\n\n  const closeWv3dPropertiesPanel = () => {\n    dispatch(actions.closeElement('wv3dPropertiesPanel'));\n  };\n\n  if (isDisabled || !isOpen) {\n    return null;\n  }\n  return (\n    <Wv3dPropertiesPanel\n      isInDesktopOnlyMode={isInDesktopOnlyMode}\n      isMobile={isMobile}\n      currentWidth={wv3dPropertiesPanelWidth}\n      closeWv3dPropertiesPanel={closeWv3dPropertiesPanel}\n      modelData={modelData}\n      schema={schema}\n    />\n  );\n};\n\nexport default Wv3dPropertiesPanelContainer;\n","import Wv3dPropertiesPanel from './Wv3dPropertiesPanelContainer';\n\nexport default Wv3dPropertiesPanel;\n","import React from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport Dropdown from 'components/Dropdown';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport DataElements from 'constants/dataElement';\n\nimport './SnippingToolPopup.scss';\n\nconst SnippingToolPopup = ({\n  snippingMode,\n  onSnippingModeChange,\n  closeSnippingPopup,\n  applySnipping,\n  isSnipping,\n  isInDesktopOnlyMode,\n  isMobile,\n  shouldShowApplySnippingWarning,\n}) => {\n  const { t } = useTranslation();\n\n  const snippingNames = {\n    'CLIPBOARD': t('snippingPopUp.clipboard'),\n    'DOWNLOAD': t('snippingPopUp.download'),\n    'CROP_AND_REMOVE': t('snippingPopUp.cropAndRemove'),\n  };\n\n  const className = classNames({\n    Popup: true,\n    SnippingToolPopup: true,\n    mobile: isMobile,\n  });\n\n  const handleButtonPressed = (button) => {\n    switch (button) {\n      case 'apply':\n        shouldShowApplySnippingWarning && snippingMode === 'CROP_AND_REMOVE' ? openSnippingConfirmationWarning() : applySnipping();\n        break;\n      case 'cancel':\n        isSnipping ? openSnippingCancellationWarning() : closeSnippingPopup();\n        break;\n    }\n  };\n\n  const dispatch = useDispatch();\n\n  const openSnippingConfirmationWarning = () => {\n    const title = t('snippingPopUp.snippingModal.applyTitle');\n    const message = t('snippingPopUp.snippingModal.applyMessage');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        applySnipping();\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  const openSnippingCancellationWarning = () => {\n    const title = t('snippingPopUp.snippingModal.cancelTitle');\n    const message = t('snippingPopUp.snippingModal.cancelMessage');\n    const cancellationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        closeSnippingPopup();\n      },\n    };\n    dispatch(actions.showWarningMessage(cancellationWarning));\n  };\n\n  if (isMobile && !isInDesktopOnlyMode) {\n    return (\n      <div className={className} data-element={DataElements.SNIPPING_TOOL_POPUP}>\n        <div className=\"snipping-mobile-section\">\n          <div className=\"snipping-mobile-container\">\n            <div className=\"custom-select snipping-selector\">\n              <Dropdown\n                items={Object.values(snippingNames)}\n                onClickItem={(e) => onSnippingModeChange(Object.keys(snippingNames).find((key) => snippingNames[key] === e))}\n                currentSelectionKey={snippingNames[snippingMode]}\n              />\n            </div>\n            <button\n              className=\"save-button\"\n              data-element=\"snippingApplyButton\"\n              onClick={() => handleButtonPressed('apply')}\n              disabled={!isSnipping}\n            >\n              {t('action.apply')}\n            </button>\n          </div>\n          <button\n            className=\"cancel-button\"\n            data-element=\"snippingCancelButton\"\n            onClick={() => handleButtonPressed('cancel')}\n          >\n            <Icon glyph=\"icon-close\" />\n          </button>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <div className={className} data-element={DataElements.SNIPPING_TOOL_POPUP}>\n      <div className=\"snipping-section\">\n        <span className=\"menu-title\">{t('snippingPopUp.title')}</span>\n        <Choice\n          label={t('snippingPopUp.clipboard')}\n          name=\"CLIPBOARD\"\n          data-element=\"copyToClipboardRadioButton\"\n          onChange={() => onSnippingModeChange('CLIPBOARD')}\n          checked={snippingMode === 'CLIPBOARD'}\n          radio\n        />\n        <Choice\n          label={t('snippingPopUp.download')}\n          name=\"DOWNLOAD\"\n          data-element=\"downloadSnippingRadioButton\"\n          onChange={() => onSnippingModeChange('DOWNLOAD')}\n          checked={snippingMode === 'DOWNLOAD'}\n          radio\n        />\n        <Choice\n          label={t('snippingPopUp.cropAndRemove')}\n          name=\"CROP_AND_REMOVE\"\n          data-element=\"cropAndRemoveRadioButton\"\n          onChange={() => onSnippingModeChange('CROP_AND_REMOVE')}\n          checked={snippingMode === 'CROP_AND_REMOVE'}\n          radio\n        />\n      </div>\n      <div className=\"divider\" />\n      <div className=\"buttons\">\n        <button className=\"cancel-button\" data-element=\"snippingCancelButton\" onClick={() => handleButtonPressed('cancel')}>\n          {t('action.cancel')}\n        </button>\n        <button\n          className=\"save-button\"\n          data-element=\"snippingApplyButton\"\n          onClick={() => handleButtonPressed('apply')}\n          disabled={!isSnipping}\n        >\n          {t('action.apply')}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default SnippingToolPopup;\n","import useOnSnippingAnnotationChangedOrSelected from './useOnSnippingAnnotationChangedOrSelected';\n\nexport default useOnSnippingAnnotationChangedOrSelected;","import { useEffect, useState } from 'react';\nimport core from 'core';\n\nexport default function useOnCropAnnotationChangedOrSelected(openSnippingPopup) {\n  const [snippingAnnotation, setSnippingAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(annotation);\n        openSnippingPopup();\n      }\n      if (action === 'delete' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'selected' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(annotation);\n        openSnippingPopup();\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return snippingAnnotation;\n}\n","import React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport SnippingToolPopup from './SnippingToolPopup';\nimport './SnippingToolPopup.scss';\nimport Draggable from 'react-draggable';\nimport useOnSnippingAnnotationChangedOrSelected from '../../hooks/useOnSnippingAnnotationChangedOrSelected';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\n\nfunction SnippingToolPopupContainer() {\n  const snippingToolName = window.Core.Tools.ToolNames['SNIPPING'];\n  const snippingCreateTool = core.getTool(snippingToolName);\n  const [\n    isOpen,\n    isInDesktopOnlyMode,\n    shouldShowApplySnippingWarning,\n  ] = useSelector((state) => [\n    selectors.getActiveToolName(state) === snippingToolName && selectors.isElementOpen(state, DataElements.SNIPPING_TOOL_POPUP),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.shouldShowApplySnippingWarning(state),\n  ]);\n  const dispatch = useDispatch();\n  const [isSnipping, setIsSnipping] = useState(snippingCreateTool.getIsSnipping());\n\n  const elementsToClose = ['leftPanel', 'searchPanel', 'notesPanel', 'redactionPanel', 'textEditingPanel'];\n\n  const openSnippingPopup = () => {\n    dispatch(actions.openElement(DataElements.SNIPPING_TOOL_POPUP));\n    // eslint-disable-next-line no-undef\n    dispatch(actions.closeElements(elementsToClose));\n    setIsSnipping(snippingCreateTool.getIsSnipping());\n  };\n\n  useEffect(() => {\n    const handleSnippingCancellation = () => setIsSnipping(false);\n\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.SnippingCreateTool) { // eslint-disable-line no-undef\n        newTool.addEventListener(window.Core.Tools.SnippingCreateTool.Events['SNIPPING_CANCELLED'], handleSnippingCancellation);\n        openSnippingPopup();\n      } else if (oldTool instanceof Core.Tools.SnippingCreateTool) { // eslint-disable-line no-undef\n        newTool.removeEventListener(window.Core.Tools.SnippingCreateTool.Events['SNIPPING_CANCELLED'], handleSnippingCancellation);\n        setIsSnipping(false);\n        snippingCreateTool.reset();\n        reenableHeader();\n      }\n    };\n\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n\n    return () => {\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  });\n\n  const disableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = 'none';\n      header.style.opacity = '0.5';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = 'none';\n      toolsHeader.style.opacity = '0.5';\n    }\n  };\n\n  const reenableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = '';\n      header.style.opacity = '1';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = '';\n      toolsHeader.style.opacity = '1';\n    }\n  };\n\n  const snippingAnnotation = useOnSnippingAnnotationChangedOrSelected(openSnippingPopup);\n\n  // re-enable other tools and panels while not snipping\n  useEffect(() => {\n    if (!isSnipping) {\n      reenableHeader();\n    } else {\n      disableHeader();\n    }\n  }, [isSnipping]);\n\n  const [snippingMode, setSnippingMode] = useState(null);\n\n  useEffect(() => {\n    snippingCreateTool.setSnippingMode('CLIPBOARD');\n    setSnippingMode('CLIPBOARD');\n  }, []);\n\n  const onSnippingModeChange = (option) => {\n    snippingCreateTool.setSnippingMode(option);\n    setSnippingMode(option);\n  };\n\n  const [documentContainerWidth, documentContainerHeight] = useSelector((state) => [\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContainerHeight(state),\n  ]);\n\n  const snippingPopupRef = useRef();\n\n  const popupWidth = snippingPopupRef.current?.getBoundingClientRect().width || 0;\n  const popupHeight = snippingPopupRef.current?.getBoundingClientRect().height || 0;\n  const headerHeight = getRootNode().querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = getRootNode().querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n  const documentViewer = core.getDocumentViewer(1);\n  // eslint-disable-next-line no-undef\n  const xOffset = documentViewer.getViewerElement()?.getBoundingClientRect().right || 0;\n\n  const getSnippingPopupOffset = () => {\n    const offset = {\n      x: xOffset + 35,\n      y: yOffset + 10,\n    };\n    if (snippingAnnotation && snippingPopupRef?.current) {\n      offset.x = Math.min(offset.x, documentContainerWidth - popupWidth);\n    }\n    return offset;\n  };\n\n  const getSnippingPopupBounds = () => {\n    const bounds = {\n      top: 0,\n      bottom: documentContainerHeight - popupHeight,\n      left: 0 - getSnippingPopupOffset()['x'],\n      right: documentContainerWidth - getSnippingPopupOffset()['x'] - popupWidth,\n    };\n    return bounds;\n  };\n\n  const closeAndReset = () => {\n    snippingCreateTool.reset();\n    dispatch(actions.closeElement(DataElements.SNIPPING_TOOL_POPUP));\n    reenableHeader();\n    core.setToolMode(window.Core.Tools.ToolNames.SNIPPING);\n  };\n\n  const closeSnippingPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  // disable/enable the 'apply' button when snipping\n  useEffect(() => {\n    setIsSnipping(snippingCreateTool.getIsSnipping());\n  }, [snippingAnnotation]);\n\n  const applySnipping = async () => {\n    await snippingCreateTool.applySnipping();\n    snippingCreateTool.reset();\n    reenableHeader();\n  };\n\n  const props = {\n    snippingMode,\n    onSnippingModeChange,\n    closeSnippingPopup,\n    applySnipping,\n    isSnipping,\n    isInDesktopOnlyMode,\n    shouldShowApplySnippingWarning,\n  };\n\n  const isMobile = isMobileSize();\n\n  if (isOpen && core.getDocument()) {\n    if (isMobile && !isInDesktopOnlyMode) {\n      // disable draggable on mobile devices\n      return (\n        <div className=\"SnippingPopupContainer\" ref={snippingPopupRef}>\n          <SnippingToolPopup {...props} isMobile />\n        </div>\n      );\n    }\n    return (\n      <Draggable\n        cancel={'input, button, .collapsible-menu, .ui__choice__label'}\n        positionOffset={getSnippingPopupOffset()}\n        bounds={getSnippingPopupBounds()}\n      >\n        <div className=\"SnippingPopupContainer\" ref={snippingPopupRef}>\n          <SnippingToolPopup {...props} />\n        </div>\n      </Draggable>\n    );\n  }\n  return null;\n}\n\nexport default SnippingToolPopupContainer;\n","import SnippingToolPopup from './SnippingToolPopupContainer';\n\nexport default SnippingToolPopup;","import useOnFormFieldsChanged from './useOnFormFieldsChanged';\n\nexport default useOnFormFieldsChanged;","import { useState, useEffect } from 'react';\nimport core from 'core';\n\nexport default function useOnFormFieldsChanged() {\n  const [formFieldAnnotationsList, setFormFieldAnnotationsList] = useState([]);\n\n  useEffect(() => {\n    const setFormFieldIndicators = () => {\n      let formFieldIndicators = [];\n      const annotations = core.getAnnotationsList();\n      const formFieldCreationManager = core.getFormFieldCreationManager();\n      if (formFieldCreationManager.isInFormFieldCreationMode()) {\n        const formFieldPlaceholders = annotations.filter((annotation) => annotation.isFormFieldPlaceholder());\n        formFieldIndicators = [\n          ...formFieldPlaceholders\n            .reduce(\n              (fieldNameMap, field) => {\n                if (!fieldNameMap.has(field.getCustomData(formFieldCreationManager.getFieldLabels().FIELD_NAME))) {\n                  fieldNameMap.set(field.getCustomData(formFieldCreationManager.getFieldLabels().FIELD_NAME), field);\n                }\n                return fieldNameMap;\n              },\n              new Map()\n            ).values(),\n        ];\n      } else {\n        const widgets = annotations.filter(\n          (annotation) => formFieldCreationManager.getShowIndicator(annotation)\n        );\n        formFieldIndicators = [\n          ...widgets\n            .reduce(\n              (fieldNameMap, field) => {\n                if (!fieldNameMap.has(field['fieldName'])) {\n                  fieldNameMap.set(field['fieldName'], field);\n                }\n                return fieldNameMap;\n              },\n              new Map()\n            ).values(),\n        ];\n      }\n      setFormFieldAnnotationsList(formFieldIndicators);\n    };\n\n    const onDocumentLoaded = () => {\n      setFormFieldAnnotationsList([]);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('zoomUpdated', setFormFieldIndicators);\n    core.addEventListener('annotationChanged', setFormFieldIndicators);\n    core.addEventListener('pageNumberUpdated', setFormFieldIndicators);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('zoomUpdated', setFormFieldIndicators);\n      core.removeEventListener('annotationChanged', setFormFieldIndicators);\n      core.removeEventListener('pageNumberUpdated', setFormFieldIndicators);\n    };\n  });\n\n  return formFieldAnnotationsList;\n}\n","import React from 'react';\nimport { getAnnotationPosition } from 'helpers/getPopupPosition';\n\nimport './FormFieldIndicator.scss';\n\nconst INDICATOR_HEIGHT = 40;\nconst INDICATOR_WIDTH = 100;\nconst INDICATOR_PADDING = 20;\n\nconst FormFieldIndicator = ({ annotation, parameters }) => {\n  const { displayMode, viewerBoundingRect, appBoundingRect, scrollLeft, scrollTop } = parameters;\n\n  const setIndicatorYPosition = (annotation) => {\n    try {\n      const { bottomRight: annotationBottomRight, topLeft: annotationTopLeft } = getAnnotationPosition(annotation);\n      const annotHeightInPixels = annotationBottomRight.y - annotationTopLeft.y;\n      return annotationTopLeft.y + annotHeightInPixels / 2 - INDICATOR_HEIGHT / 2 - scrollTop;\n    } catch (e) {\n      return 0;\n    }\n  };\n\n  let visiblePages = [];\n  try {\n    visiblePages = displayMode.getVisiblePages();\n  } catch (e) { }\n\n  const origin = appBoundingRect.left;\n  const leftPosition = viewerBoundingRect.left\n  - INDICATOR_WIDTH - INDICATOR_PADDING + scrollLeft;\n\n  let xOffset = leftPosition - origin;\n  const yOffset = setIndicatorYPosition(annotation);\n  let isRightSidePage = false;\n\n  switch (displayMode.mode) {\n    case 'Facing':\n    case 'FacingContinuous':\n      if (annotation.PageNumber % 2 === 0) {\n        isRightSidePage = true;\n        xOffset = viewerBoundingRect.right + INDICATOR_PADDING + scrollLeft;\n      }\n      break;\n    case 'CoverFacing':\n    case 'Cover':\n      if (annotation.PageNumber % 2 !== 0) {\n        isRightSidePage = true;\n        xOffset = viewerBoundingRect.right + INDICATOR_PADDING + scrollLeft;\n      }\n      break;\n  }\n\n  const isPlaceholder = annotation.isFormFieldPlaceholder();\n  const isPageVisible = visiblePages.includes(annotation.PageNumber);\n  const indicatorText = annotation.getCustomData('trn-form-field-indicator-text');\n\n  return (\n    <div\n      className={`formFieldIndicator ${isRightSidePage ? 'rightSidePage' : ''}`}\n      style={{\n        top: yOffset,\n        left: xOffset,\n        opacity: isPlaceholder ? 0.5 : 1,\n        visibility: isPageVisible ? 'visible' : 'hidden',\n      }}\n    >\n      <div className=\"formFieldIndicator-text\">{indicatorText}</div>\n    </div>\n  );\n};\n\nexport default FormFieldIndicator;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport debounce from 'lodash/debounce';\nimport useOnFormFieldsChanged from '../../hooks/useOnFormFieldsChanged';\nimport core from 'core';\nimport selectors from 'selectors';\nimport FormFieldIndicator from './FormFieldIndicator';\nimport './FormFieldIndicator.scss';\nimport DataElements from 'src/constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\nimport { createPortal } from 'react-dom';\n\nconst FormFieldIndicatorContainer = () => {\n  const [\n    isOpen,\n    isDisabled,\n    documentContainerWidth,\n    documentContainerHeight,\n    leftPanelWidth,\n    notePanelWidth,\n  ] = useSelector((state) => [\n    selectors.isElementOpen(state, DataElements['FORM_FIELD_INDICATOR_CONTAINER']),\n    selectors.isElementDisabled(state, DataElements['FORM_FIELD_INDICATOR_CONTAINER']),\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContainerHeight(state),\n    selectors.getLeftPanelWidth(state),\n    selectors.getDocumentContentContainerWidthStyle(state),\n    selectors.getNotesPanelWidth(state),\n  ]);\n  const formFieldAnnotationsList = useOnFormFieldsChanged();\n  const [indicators, setIndicators] = useState([]);\n\n  const getIndicators = () => {\n    if (!core.getDocument()) {\n      return [];\n    }\n    return formFieldAnnotationsList\n      .filter((fieldAnnotation) => {\n        return fieldAnnotation.getCustomData('trn-form-field-show-indicator') === 'true';\n      }).map((fieldAnnotation) => {\n        return createFormFieldIndicator(fieldAnnotation);\n      });\n  };\n\n  const resetIndicators = () => {\n    setIndicators([]);\n  };\n\n  useEffect(() => {\n    core.addEventListener('documentUnloaded', resetIndicators);\n    return () => {\n      core.removeEventListener('documentUnloaded', resetIndicators);\n    };\n  }, []);\n\n\n  useEffect(() => {\n    setIndicators(getIndicators());\n\n    const onScroll = debounce(() => {\n      if (isOpen && !isDisabled) {\n        setIndicators(getIndicators());\n      }\n    }, 0);\n\n    const scrollViewElement = core.getScrollViewElement();\n\n    scrollViewElement?.addEventListener('scroll', onScroll);\n    return () => {\n      scrollViewElement?.removeEventListener('scroll', onScroll);\n    };\n  }, [\n    formFieldAnnotationsList,\n    isOpen,\n    isDisabled,\n    documentContainerWidth,\n    documentContainerHeight,\n    leftPanelWidth,\n    notePanelWidth,\n  ]);\n\n  const createFormFieldIndicator = (annotation) => {\n    const { scrollLeft, scrollTop } = core.getScrollViewElement();\n    const payload = {\n      displayMode: core.getDocumentViewer().getDisplayModeManager().getDisplayMode(),\n      viewerBoundingRect: core.getViewerElement().getBoundingClientRect(),\n      appBoundingRect: getRootNode().getElementById('app').getBoundingClientRect(),\n      scrollLeft: scrollLeft,\n      scrollTop: scrollTop,\n    };\n    return (<FormFieldIndicator\n      key={`indicator_${annotation.Id}`}\n      annotation={annotation}\n      parameters={payload} />);\n  };\n\n  if (isOpen && !isDisabled) {\n    return (<>\n      {\n        createPortal(<div id=\"form-field-indicator-wrapper\" >\n          <div data-element={DataElements['FORM_FIELD_INDICATOR_CONTAINER']}>\n            {indicators}\n          </div>\n        </div>, (window.isApryseWebViewerWebComponent)\n          ? getRootNode().getElementById('app') : document.body)\n      }\n    </>);\n  }\n\n  return null;\n};\n\nexport default FormFieldIndicatorContainer;\n","import FormFieldIndicator from './FormFieldIndicatorContainer';\n\nexport default FormFieldIndicator;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport DataElements from 'constants/dataElement';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport FilePickerPanel from 'components/PageReplacementModal/FilePickerPanel';\nimport './MultiTabEmptyPage.scss';\n\nconst MultiTabEmptyPage = (props) => {\n  const {\n    isDisabled,\n    isOpen,\n    tabManager,\n    closeElements\n  } = props;\n\n  useEffect(() => {\n    if (isOpen) {\n      closeElements([\n        'documentContainer',\n        'pageNavOverlay',\n        'notesPanel',\n        'searchPanel',\n        'leftPanel',\n      ]);\n    }\n  }, [isOpen]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const addNewTab = (file) => {\n    tabManager.addTab(file, { setActive: true });\n  };\n\n  return (\n    <div\n      className={classNames({\n        MultiTabEmptyPage: true,\n        'closed': !isOpen\n      })}\n      data-element={DataElements.MULTITABS_EMPTY_PAGE}\n    >\n      {isOpen && (\n        <div className=\"empty-page-body\">\n          <FilePickerPanel\n            onFileProcessed={(file) => addNewTab(file)}\n            shouldShowIcon={true}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst mapStateToProps = (state) => ({\n  isDisabled: selectors.isElementDisabled(state, DataElements.MULTITABS_EMPTY_PAGE),\n  isOpen: selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0,\n  tabManager: selectors.getTabManager(state)\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n};\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(MultiTabEmptyPage);\n","import MultiTabEmptyPage from './MultiTabEmptyPage';\n\nexport default MultiTabEmptyPage;","import React, { useRef } from 'react';\nimport selectors from 'selectors';\nimport './DropArea.scss';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport PropTypes from 'prop-types';\nimport loadDocument from 'helpers/loadDocument';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getHashParameters from 'helpers/getHashParameters';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n};\n\n// Todo Compare: Make stories for this component\nconst DropArea = ({ documentViewerKey }) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const fileInput = useRef();\n  const [\n    customMultiViewerAcceptedFileFormats,\n  ] = useSelector((state) => [\n    selectors.getCustomMultiViewerAcceptedFileFormats(state),\n  ]);\n\n  const browseFiles = () => fileInput.current.click();\n\n  const onDrop = (e) => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n  const loadFile = (e) => {\n    e.preventDefault();\n    const { files } = e.target;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n\n  return (\n    <div className=\"DropArea\" onDragOver={(e) => e.preventDefault()} onDrop={onDrop}>\n      <Icon glyph=\"icon-compare-file-open\" />\n      <div className=\"DropArea__text\">{t('multiViewer.dragAndDrop')}</div>\n      <div>{t('multiViewer.or')}</div>\n      <button onClick={browseFiles}>{t('multiViewer.browse')}</button>\n      <input ref={fileInput} className={'hidden'} type={'file'} onChange={loadFile}\n        accept={(customMultiViewerAcceptedFileFormats || acceptFormats.map(\n          (format) => `.${format}`,\n        )).join(', ')}\n      />\n    </div>\n  );\n};\n\nDropArea.propTypes = propTypes;\n\nexport default DropArea;\n","import DropArea from './DropArea';\n\nexport default DropArea;","import React, { useEffect, useState } from 'react';\nimport ToggleZoomOverlay from 'components/ToggleZoomOverlay';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\nimport downloadPdf from 'helpers/downloadPdf';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport actions from 'actions';\n\nimport './DocumentHeader.scss';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n  docLoaded: PropTypes.bool.isRequired,\n  isSyncing: PropTypes.bool.isRequired,\n};\n\n// Todo Compare: Make stories for this component\nconst DocumentHeader = ({\n  documentViewerKey,\n  docLoaded,\n  isSyncing,\n}) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [filename, setFileName] = useState('Untitled');\n  const [saveButtonDisabled] = useSelector((state) => [selectors.isElementDisabled(state, DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON)]);\n\n  useEffect(() => {\n    const stopSyncing = () => dispatch(actions.setSyncViewer(null));\n    const onLoaded = () => setFileName(core.getDocument(documentViewerKey)?.getFilename());\n    const unLoaded = () => setFileName('Untitled');\n    core.addEventListener('documentLoaded', onLoaded, undefined, documentViewerKey);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, documentViewerKey);\n    core.addEventListener('displayModeUpdated', stopSyncing, undefined, documentViewerKey);\n    setFileName(core.getDocument(1)?.getFilename() || 'Untitled');\n    return () => {\n      core.removeEventListener('documentLoaded', onLoaded, documentViewerKey);\n      core.removeEventListener('documentUnloaded', unLoaded, documentViewerKey);\n      core.removeEventListener('displayModeUpdated', stopSyncing, documentViewerKey);\n    };\n  }, [documentViewerKey]);\n\n  const closeDocument = () => core.closeDocument(documentViewerKey);\n  const onClickSync = () => dispatch(actions.setSyncViewer(isSyncing ? null : documentViewerKey));\n  const onSaveDocument = () => downloadPdf(dispatch, undefined, documentViewerKey);\n\n  return (\n    <div\n      className={classNames('DocumentHeader', { hidden: !docLoaded })}\n      id={`header${documentViewerKey}`}\n    >\n      <ToggleZoomOverlay documentViewerKey={documentViewerKey} />\n      <div className=\"file-name\">{filename}</div>\n      <div className=\"control-buttons\">\n        {!saveButtonDisabled &&\n          <Button img=\"icon-save\" onClick={onSaveDocument} dataElement={DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON} title={t('multiViewer.save')} />\n        }\n        <Button img=\"icon-sync\" onClick={onClickSync} isActive={isSyncing} title={t(`multiViewer.${isSyncing ? 'stop' : 'start'}Sync`)} />\n        <Button img=\"icon-close\" onClick={closeDocument} title={t('multiViewer.closeDocument')} />\n      </div>\n    </div>\n  );\n};\n\nDocumentHeader.propTypes = propTypes;\n\nexport default DocumentHeader;\n","import DocumentHeader from './DocumentHeader';\n\nexport default DocumentHeader;","import React, { useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport loadDocument from 'helpers/loadDocument';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport _setCurrentPage from 'helpers/setCurrentPage';\nimport { getStep } from 'helpers/zoom';\nimport throttle from 'lodash/throttle';\nimport core from 'core';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport getRootNode from 'helpers/getRootNode';\n\nimport './DocumentContainer.scss';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n  activeDocumentViewerKey: PropTypes.number.isRequired,\n  container: PropTypes.object.isRequired,\n  onReady: PropTypes.func,\n};\n\n// TODO compare: check display mode scrolling\nconst DocumentContainer = ({\n  documentViewerKey,\n  activeDocumentViewerKey,\n  container,\n  onReady,\n  docLoaded,\n}) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const dispatch = useDispatch();\n  const document = useRef();\n  const [\n    isMouseWheelZoomEnabled,\n  ] = useSelector((state) => [\n    selectors.getEnableMouseWheelZoom(state),\n  ]);\n\n  useEffect(() => {\n    const removeListeners = () => {\n      if (container?.current) {\n        container.current.removeEventListener('dragover', preventDefault);\n        container.current.removeEventListener('drop', onDrop);\n        container.current.removeEventListener('wheel', onWheel, { passive: false });\n      }\n    };\n    documentViewer.setScrollViewElement(container.current);\n    documentViewer.setViewerElement(document.current);\n    container.current.addEventListener('dragover', preventDefault);\n    container.current.addEventListener('drop', onDrop);\n    container.current.addEventListener('wheel', onWheel, { passive: false });\n    onReady(documentViewerKey);\n    return removeListeners;\n  }, []);\n\n  const preventDefault = (e) => e.preventDefault();\n  const onDrop = (e) => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n  const handleScroll = () => {\n    dispatch(actions.closeElements([\n      'annotationPopup',\n      'textPopup',\n      'inlineCommentPopup',\n      'annotationNoteConnectorLine'\n    ]));\n  };\n  const onWheel = (e) => {\n    const displayMode = documentViewer.getDisplayModeManager().getDisplayMode();\n    if (isMouseWheelZoomEnabled && (e.metaKey || e.ctrlKey)) {\n      e.preventDefault();\n      wheelToZoom(e, core.getZoom(documentViewerKey));\n    } else if (!displayMode?.isContinuous() && displayMode?.IsScrollable()) {\n      wheelToNavigatePages(e);\n      dispatch(actions.closeElements([\n        'annotationPopup',\n        'textPopup',\n        'inlineCommentPopup',\n        'annotationNoteConnectorLine',\n      ]));\n    }\n  };\n  const wheelToZoom = throttle((e, zoom) => {\n    let newZoomFactor = zoom;\n    if (e.deltaY < 0) {\n      newZoomFactor = Math.min(\n        zoom + getStep(zoom),\n        getMaxZoomLevel()\n      );\n    } else if (e.deltaY > 0) {\n      newZoomFactor = Math.max(\n        zoom - getStep(zoom),\n        getMinZoomLevel()\n      );\n    }\n    const yOffset = getRootNode().getElementById(`header${documentViewerKey}`).getBoundingClientRect().bottom;\n    const xOffset = e.clientX - getRootNode().getElementById(`container${documentViewerKey}`).getBoundingClientRect().left;\n    documentViewer.zoomToMouse(newZoomFactor, xOffset, yOffset, e);\n  }, 30, { trailing: false });\n  const wheelToNavigatePages = (e) => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const totalPages = documentViewer.getPageCount();\n    const { scrollTop, scrollHeight, clientHeight } = container.current;\n    const reachedTop = scrollTop === 0;\n    const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n    // depending on the track pad used (see this on MacBooks), deltaY can be between -1 and 1 when doing horizontal scrolling which cause page to change\n    const scrollingUp = e.deltaY < 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n    const scrollingDown = e.deltaY > 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n    if (scrollingUp && reachedTop && currentPage > 1) {\n      pageUp();\n    } else if (scrollingDown && reachedBottom && currentPage < totalPages) {\n      pageDown();\n    }\n  };\n  const pageUp = () => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const pagesToNavigate = getNumberOfPagesToNavigate();\n    const _container = container.current;\n    const { scrollHeight, clientHeight } = _container;\n    _setCurrentPage(currentPage - pagesToNavigate, documentViewerKey);\n    _container.scrollTop = scrollHeight - clientHeight;\n  };\n  const pageDown = () => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const pagesToNavigate = getNumberOfPagesToNavigate();\n    _setCurrentPage(currentPage + pagesToNavigate, documentViewerKey);\n  };\n  const style = (!docLoaded) ? { position: 'relative' } : {};\n  return (\n    <div\n      className={classNames('DocumentContainer', {\n        active: activeDocumentViewerKey === documentViewerKey,\n      })}\n      ref={container}\n      id={`DocumentContainer${documentViewerKey}`}\n      onScroll={handleScroll}\n      style={style}\n    >\n      <div className={'document'} ref={document} id={`Document${documentViewerKey}`} />\n    </div>\n  );\n};\n\nDocumentContainer.propTypes = propTypes;\n\nexport default DocumentContainer;\n","import DocumentContainer from './DocumentContainer';\n\nexport default DocumentContainer;","import React from 'react';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\nimport ZoomOverlay from 'components/ZoomOverlay/ZoomOverlay';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { fitToWidth, fitToPage, zoomTo } from 'helpers/zoom';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n  zoom1: PropTypes.number,\n  zoom2: PropTypes.number,\n};\n\nconst CompareZoomOverlay = ({\n  zoom1,\n  zoom2,\n}) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const onClickMarqueeZoom = (documentViewerKey) => () => {\n    dispatch(actions.closeElements([`zoomOverlay${documentViewerKey}`]));\n  };\n  const onClickZoomLevelOption = (documentViewerKey) => (zoomLevel) => {\n    zoomTo(zoomLevel, true, documentViewerKey);\n    dispatch(actions.closeElements([`zoomOverlay${documentViewerKey}`]));\n  };\n  const onClickMarqueeZoom1 = onClickMarqueeZoom(1);\n  const onClickMarqueeZoom2 = onClickMarqueeZoom(2);\n  const onClickZoomLevelOption1 = onClickZoomLevelOption(1);\n  const onClickZoomLevelOption2 = onClickZoomLevelOption(2);\n  const onFitToWidth1 = () => fitToWidth(1);\n  const onFitToWidth2 = () => fitToWidth(2);\n  const onFitToPage1 = () => fitToPage(1);\n  const onFitToPage2 = () => fitToPage(2);\n\n  return (\n    <>\n      <FlyoutMenu menu={'zoomOverlay1'} trigger={'zoomOverlayButton1'}\n        ariaLabel={t('component.zoomOverlay')}\n      >\n        <ZoomOverlay\n          zoomList={useSelector(selectors.getZoomList)}\n          currentZoomLevel={zoom1}\n          isReaderMode={useSelector(selectors.isReaderMode)}\n          isMarqueeZoomActive={useSelector(selectors.getActiveToolName) === 'MarqueeZoomTool'}\n          isMarqueeToolButtonDisabled={useSelector((state) => selectors.isElementDisabled(state, 'marqueeToolButton'))}\n          fitToWidth={onFitToWidth1}\n          fitToPage={onFitToPage1}\n          onClickZoomLevelOption={onClickZoomLevelOption1}\n          onClickMarqueeZoom={onClickMarqueeZoom1}\n        />\n      </FlyoutMenu>\n      <FlyoutMenu menu={'zoomOverlay2'} trigger={'zoomOverlayButton2'}\n        ariaLabel={t('component.zoomOverlay')}\n      >\n        <ZoomOverlay\n          zoomList={useSelector(selectors.getZoomList)}\n          currentZoomLevel={zoom2}\n          isReaderMode={useSelector(selectors.isReaderMode)}\n          isMarqueeZoomActive={useSelector(selectors.getActiveToolName) === 'MarqueeZoomTool'}\n          isMarqueeToolButtonDisabled={useSelector((state) => selectors.isElementDisabled(state, 'marqueeToolButton'))}\n          fitToWidth={onFitToWidth2}\n          fitToPage={onFitToPage2}\n          onClickZoomLevelOption={onClickZoomLevelOption2}\n          onClickMarqueeZoom={onClickMarqueeZoom2}\n        />\n      </FlyoutMenu>\n    </>\n  );\n};\n\nCompareZoomOverlay.propTypes = propTypes;\n\nexport default CompareZoomOverlay;\n","import CompareZoomOverlay from './CompareZoomOverlay';\n\nexport default CompareZoomOverlay;","\nexport default (totalPages) => new Array(totalPages).fill().map((_, index) => `${index + 1}`);","import core from 'core';\nimport actions from 'actions';\nimport { isIOS } from 'helpers/device';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, documentViewerKey) => () => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  // if we are opening an password-protected pdf,\n  // this event will only be trigger after we enter the correct password, so it's safe to close this modal here\n  dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n\n  const totalPages = core.getTotalPages(documentViewerKey);\n\n  if (isIOS) {\n    // enough so that we can enable high res thumb\n    window.Core.setPreRenderLevel(2);\n  }\n  const displayModeManager = documentViewer.getDisplayModeManager();\n  if (totalPages >= 500 && !displayModeManager.isVirtualDisplayEnabled()) {\n    core.setDisplayMode(window.Core.DisplayModes.Single);\n  }\n\n  dispatch(actions.setTotalPages(totalPages, documentViewerKey));\n\n  if (documentViewerKey === 1) {\n    dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n    const currentPage = core.getCurrentPage();\n    dispatch(actions.setCurrentPage(currentPage));\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (checkStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_CHECKMARK).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(checkStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (crossStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_CROSS).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(crossStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport actions from 'actions';\n\nexport default (dispatch) => () => {\n  dispatch(actions.closeElements(['annotationPopup', 'textPopup', 'contextMenuPopup']));\n  dispatch(actions.setDisplayMode(core.getDisplayMode()));\n};","import DataElements from 'constants/dataElement';\n\nexport default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = (state) => {\n  const defaultLeftPanels = [\n    'thumbnailsPanel',\n    DataElements.OUTLINE_PANEL,\n    'layersPanel',\n    DataElements.BOOKMARK_PANEL,\n    'signaturePanel',\n    DataElements.NOTES_PANEL,\n    DataElements.PORTFOLIO_PANEL,\n  ];\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","/**\n * Sets zoom level.\n * @method UI.setZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomLevel('150%'); // or setZoomLevel(1.5)\n    });\n  });\n */\n\nimport core from 'core';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default (zoomLevel) => {\n  zoomLevel = getActualZoomLevel(zoomLevel);\n\n  if (zoomLevel) {\n    core.zoomTo(zoomLevel);\n  } else {\n    console.warn('Type of the argument for setZoomLevel must be either string or number');\n  }\n};","export default (layers) => {\n  const newLayers = [];\n  if (layers) {\n    layers.forEach((layer, index) => {\n      const newLayer = createNewLayer(layer, `${index}`, layer.locked);\n      newLayers.push(newLayer);\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    });\n  }\n  return newLayers;\n};\n\nconst setIdsForChildren = (layers, parentLayerId, isParentDisabled, resultSoFar) => {\n  if (!layers || layers.length === 0) {\n    return resultSoFar;\n  }\n  layers.forEach((layer, index) => {\n    const newLayer = createNewLayer(layer, `${parentLayerId}-${index}`, isParentDisabled || layer.locked);\n    if (layer.children && layer.children.length > 0) {\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    }\n    resultSoFar.push(newLayer);\n  });\n  return resultSoFar;\n};\n\nconst createNewLayer = (layer, layerId, isDisabled) => {\n  const newLayer = {\n    ...layer,\n    children: [],\n    prevVisibleState: !!layer.visible,\n    visible: !!layer.visible,\n    id: layerId,\n    disabled: !!isDisabled,\n    // this is how WV core knows it is a label\n    isLabel: (layer.visible === undefined && layer.obj === undefined)\n  };\n  return newLayer;\n};","import actions from 'actions';\nimport equal from 'fast-deep-equal';\nimport setUIPropertiesForLayers from 'helpers/setUIPropertiesForLayers';\n\nexport default (newOCGLayers, currentOCGLayers, dispatch) => {\n  const isEqual = equal(newOCGLayers, currentOCGLayers);\n  if (!isEqual) {\n    const layersToSet = setUIPropertiesForLayers(newOCGLayers);\n    dispatch(actions.setLayers(layersToSet));\n  }\n};","import core from 'core';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { getLeftPanelDataElements } from 'helpers/isDataElementPanel';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { workerTypes } from 'constants/types';\nimport { PRIORITY_ONE, PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\nimport { print } from 'helpers/print';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport setZoomLevel from 'src/apis/setZoomLevel';\nimport onLayersUpdated from './onLayersUpdated';\nimport i18next from 'i18next';\nimport hotkeys from 'hotkeys-js';\nimport hotkeysManager, { ShortcutKeys, Shortcuts, defaultHotkeysScope } from 'helpers/hotkeysManager';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport DataElements from 'constants/dataElement';\nimport { getPortfolioFiles } from 'helpers/portfolio';\n\nlet onFirstLoad = true;\nconst officeEditorScope = 'office-editor';\n\nexport default (store, documentViewerKey) => async () => {\n  const { dispatch, getState } = store;\n  const docViewer = core.getDocumentViewer(documentViewerKey);\n  const documentCompletePromise = docViewer.getDocument()?.getDocumentCompletePromise();\n  documentCompletePromise?.then(() => {\n    dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n  });\n\n  dispatch(actions.openElement('pageNavOverlay'));\n  dispatch(actions.setLoadingProgress(1));\n\n  // set timeout so that progress modal can show progress bar properly\n  setTimeout(() => {\n    dispatch(actions.closeElement(DataElements.PROGRESS_MODAL));\n    dispatch(actions.resetLoadingProgress());\n  }, 300);\n\n  if (onFirstLoad) {\n    onFirstLoad = false;\n    // redaction button starts hidden. when the user first loads a document, check HashParams the first time\n    core.enableRedaction(getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled());\n    // if redaction is already enabled for some reason (i.e. calling instance.enableRedaction() before loading a doc), keep it enabled\n\n    if (core.isCreateRedactionEnabled()) {\n      dispatch(actions.enableElement('redactionToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('pageRedactionToolGroupButton', PRIORITY_ONE));\n    } else {\n      dispatch(actions.disableElement('redactionToolGroupButton', PRIORITY_TWO));\n      dispatch(actions.disableElement('pageRedactionToolGroupButton', PRIORITY_TWO));\n    }\n  }\n\n  if (getHashParameters('a', false)) {\n    core.getDocumentViewers().forEach((documentViewer) => {\n      if (!documentViewer.getDocument() || documentViewer.getDocument().getType() !== workerTypes.OFFICE_EDITOR) {\n        documentViewer.enableAnnotations();\n      }\n    });\n  } else {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.disableAnnotations());\n  }\n\n  // TODO compare: integrate with panels\n  if (documentViewerKey === 1) {\n    core.getOutlines((outlines) => {\n      dispatch(actions.setOutlines(outlines));\n    }, documentViewerKey);\n\n    const doc = core.getDocument(documentViewerKey);\n    doc.addEventListener('bookmarksUpdated', () => core.getOutlines((outlines) => dispatch(actions.setOutlines(outlines)), documentViewerKey));\n\n    outlineUtils.setDoc(core.getDocument(documentViewerKey));\n\n    const setNextActivePanelDueToEmptyCurrentPanel = (currentActivePanel) => {\n      const state = getState();\n      const activeLeftPanel = selectors.getActiveLeftPanel(state);\n      if (activeLeftPanel === currentActivePanel) {\n        // set the active left panel to another one that's not disabled so that users don't see a blank left panel\n        const nextActivePanel = getLeftPanelDataElements(state).find(\n          (dataElement) => !selectors.isElementDisabled(state, dataElement),\n        );\n        dispatch(actions.setActiveLeftPanel(nextActivePanel));\n      }\n    };\n\n    const portfolio = await getPortfolioFiles();\n    dispatch(actions.setPortfolio(portfolio));\n    if (portfolio.length === 0) {\n      setNextActivePanelDueToEmptyCurrentPanel(DataElements.PORTFOLIO_PANEL);\n    }\n\n    if (!doc.isWebViewerServerDocument()) {\n      doc.addEventListener('layersUpdated', async () => {\n        const newLayers = await doc.getLayersArray();\n        const currentLayers = selectors.getLayers(getState());\n        onLayersUpdated(newLayers, currentLayers, dispatch);\n      });\n      doc.getLayersArray().then((layers) => {\n        if (layers.length === 0) {\n          dispatch(actions.disableElement('layersPanel', PRIORITY_ONE));\n          dispatch(actions.disableElement('layersPanelButton', PRIORITY_ONE));\n          setNextActivePanelDueToEmptyCurrentPanel('layersPanel');\n        } else {\n          dispatch(actions.enableElement('layersPanel', PRIORITY_ONE));\n          dispatch(actions.enableElement('layersPanelButton', PRIORITY_ONE));\n          onLayersUpdated(layers, undefined, dispatch);\n        }\n      });\n    }\n\n    const docType = doc.getType();\n    if (docType === workerTypes.PDF || (docType === workerTypes.WEBVIEWER_SERVER && !doc.isWebViewerServerDocument())) {\n      dispatch(actions.enableElement('cropToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    } else if (docType === workerTypes.IMAGE) {\n      dispatch(actions.disableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    } else {\n      dispatch(actions.disableElement('cropToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    }\n\n    if (isOfficeEditorMode()) {\n      dispatch(actions.enableElement('officeEditorToolsHeader', PRIORITY_ONE));\n      setZoomLevel(1);\n      dispatch(actions.disableElements(\n        ['toggleNotesButton', 'toolsHeader', 'viewControlsButton', 'textPopup', 'marqueeToolButton', 'outlinesPanelButton', 'outlinesPanel', 'leftPanel', 'leftPanelButton'],\n        PRIORITY_ONE, // To allow customers to still disable these elements\n      ));\n      dispatch(actions.openElement('officeEditorToolsHeader'));\n      core.setToolMode('TextSelect');\n      hotkeys.unbind('*', officeEditorScope);\n      hotkeys.setScope(officeEditorScope);\n      const searchShortcutKeys = ShortcutKeys[Shortcuts.SEARCH];\n      hotkeys(\n        searchShortcutKeys,\n        officeEditorScope,\n        hotkeysManager.keyHandlerMap[searchShortcutKeys],\n      );\n    } else {\n      dispatch(actions.enableElements(\n        ['toggleNotesButton', 'toolsHeader', 'viewControlsButton', 'textPopup', 'marqueeToolButton', 'outlinesPanelButton', 'outlinesPanel', 'leftPanel', 'leftPanelButton'],\n        PRIORITY_ONE, // To allow customers to still disable these elements\n      ));\n      hotkeys.setScope(defaultHotkeysScope);\n    }\n\n    if (core.isFullPDFEnabled()) {\n      const PDFNet = window.Core.PDFNet;\n      const docViewer = core.getDocumentViewer(documentViewerKey);\n      let isDocumentClosed = false;\n      const documentUnloadedHandler = () => {\n        isDocumentClosed = true;\n      };\n\n      const checkIfDocumentClosed = () => {\n        if (isDocumentClosed) {\n          docViewer.removeEventListener('documentUnloaded', documentUnloadedHandler);\n          throw new Error('setPageLabels is cancelled because the document got closed.');\n        }\n      };\n\n      docViewer.addEventListener('documentUnloaded', documentUnloadedHandler, { 'once': true });\n      checkIfDocumentClosed();\n      const pdfDoc = await docViewer.getDocument().getPDFDoc();\n      if (!pdfDoc) {\n        return;\n      }\n\n      PDFNet.initialize().then(() => {\n        const main = async () => {\n          try {\n            checkIfDocumentClosed();\n            const totalPageCount = await pdfDoc.getPageCount();\n            const displayedPageCount = core.getTotalPages();\n            const pageLabels = [];\n            if (totalPageCount !== displayedPageCount) {\n              const errorLoadingDocument = i18next.t('message.errorLoadingDocument', { totalPageCount, displayedPageCount });\n              store.dispatch(actions.showErrorMessage(errorLoadingDocument));\n              throw new Error(`pdfDoc.getPageCount() returns ${totalPageCount} and this does not match with documentViewer.getPageCount() which returns ${displayedPageCount}.`);\n            }\n\n            for (let i = 1; i <= totalPageCount; i++) {\n              checkIfDocumentClosed();\n              const pageLabel = await pdfDoc.getPageLabel(i);\n              checkIfDocumentClosed();\n              const label = await pageLabel.getLabelTitle(i);\n              pageLabels.push(label.length > 0 ? label : i.toString());\n            }\n\n            checkIfDocumentClosed();\n            store.dispatch(actions.setPageLabels(pageLabels));\n          } catch (e) {\n            console.warn(e);\n          }\n        };\n\n        PDFNet.runWithCleanup(main);\n      });\n    }\n  }\n\n  getInstanceNode().instance.UI.loadedFromServer = false;\n  getInstanceNode().instance.UI.serverFailed = false;\n\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  documentViewer\n    .getAnnotationManager()\n    .getFieldManager()\n    .setPrintHandler(() => {\n      print(\n        store.dispatch,\n        selectors.isEmbedPrintSupported(store.getState()),\n        selectors.getSortStrategy(store.getState()),\n        selectors.getColorMap(store.getState()),\n      );\n    });\n\n  // init zoom level value in redux\n  dispatch(actions.setZoom(core.getZoom(documentViewerKey), documentViewerKey));\n  dispatch(actions.setThumbnailSelectingPages(false));\n  fireEvent(Events.DOCUMENT_LOADED);\n};\n","import DataElements from './dataElement';\n\nexport default [\n  DataElements.VIEW_CONTROLS_OVERLAY,\n  DataElements.SEARCH_OVERLAY,\n  DataElements.MENU_OVERLAY,\n  DataElements.ZOOM_OVERLAY,\n  DataElements.TOOLS_OVERLAY,\n  DataElements.STAMP_OVERLAY,\n  DataElements.SIGNATURE_OVERLAY,\n  DataElements.MEASUREMENT_OVERLAY,\n  DataElements.TOOL_STYLE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP\n];","import actions from 'actions';\nimport core from 'core';\nimport overlays from '../constants/overlays';\n\nexport default (dispatch, documentViewerKey) => () => {\n  dispatch(\n    actions.closeElements([\n      'pageNavOverlay',\n      'notesPanel',\n      'searchPanel',\n      'leftPanel',\n      'signatureValidationModal',\n      'audioPlaybackPopup',\n      'redactionPanel',\n      'textEditingPanel',\n      'wv3dPropertiesPanel',\n      'watermarkPanel',\n      ...overlays,\n    ]),\n  );\n  // TODO Compare: Integrate with panels\n  if (documentViewerKey === 1) {\n    dispatch(actions.setOutlines([]));\n    dispatch(actions.setBookmarks({}));\n    dispatch(actions.setPortfolio([]));\n    dispatch(actions.setTotalPages(0));\n    dispatch(actions.setSearchValue(''));\n    core.clearSearchResults();\n  }\n  dispatch(actions.setZoom(1, documentViewerKey));\n};\n","import core from 'core';\nimport actions from 'actions';\nimport { isAndroid } from 'helpers/device';\n\nexport default (dispatch) => (fitMode) => {\n  const docViewer = core.getDocumentViewer();\n\n  if (fitMode === docViewer.FitMode.Zoom) {\n    dispatch(actions.setFitMode('Zoom'));\n  } else if (fitMode === docViewer.FitMode.FitWidth) {\n    dispatch(actions.setFitMode('FitWidth'));\n  } else if (fitMode === docViewer.FitMode.FitPage) {\n    // In Android, if you focus on an input field, it brings up virtual keyboard,\n    // and page gets re-rendered, which blurs out.\n    // To prevent that, we change the fit mode to Zoom.\n    if (isAndroid) {\n      core.fitToZoom();\n    }\n    dispatch(actions.setFitMode('FitPage'));\n  }\n};","import actions from 'actions';\n\nexport default (dispatch) => (rotation) => {\n  dispatch(actions.setRotation(rotation));\n};","import core from 'core';\nimport actions from 'actions';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nexport default (dispatch) => (tool) => {\n  const toolName = tool.name;\n  const toolStyles = tool.defaults;\n  if (toolStyles && localStorageManager.isLocalStorageEnabled()) {\n    storeStyle(toolName, toolStyles);\n  }\n\n  const currentTool = core.getToolMode();\n  if (currentTool && currentTool.name === toolName) {\n    dispatch(actions.setActiveToolStyles(toolStyles));\n  }\n};\n\nconst storeStyle = (toolName, toolStyles) => {\n  try {\n    const instanceId = getInstanceID();\n    localStorage.setItem(`${instanceId}-toolData-${toolName}`, JSON.stringify(toolStyles));\n  } catch (err) {\n    console.warn(`localStorage could not be accessed. ${err.message}`);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, store) => (newTool, oldTool) => {\n  if (oldTool && oldTool.name === 'TextSelect') {\n    core.clearSelection();\n    dispatch(actions.closeElement('textPopup'));\n  }\n\n  dispatch(actions.setActiveToolNameAndStyle(newTool));\n\n  const state = store.getState();\n  const activeToolGroup = selectors.getActiveToolGroup(state);\n  const activeToolName = selectors.getActiveToolName(state);\n  if (activeToolName === 'AnnotationEdit' && activeToolGroup === 'signatureTools') {\n    return;\n  }\n  const { group = '' } = selectors.getToolButtonObject(state, newTool.name);\n\n  const currentToolbarGroup = selectors.getCurrentToolbarGroup(state);\n  // Search the current toolbar group first\n  const toolbarGroupNames = selectors.getEnabledToolbarGroups(state).reduce((acc, groupName) => {\n    if (groupName !== currentToolbarGroup) {\n      acc.push(groupName);\n    }\n    return acc;\n  }, [currentToolbarGroup]);\n  // Find the ribbon group this tool falls under and change if necessary\n  for (let i = 0; i < toolbarGroupNames.length; i++) {\n    const toolbarGroupName = toolbarGroupNames[i];\n    const toolbarGroupItems = selectors.getToolbarGroupItems(toolbarGroupName)(state);\n    // Looks for the matching toolgroup or tool under this toolbar\n    const groupItems = toolbarGroupItems.filter((groupItem) => groupItem.toolGroup === group || groupItem.toolName === newTool.name);\n    if (groupItems.length > 0) {\n      if (toolbarGroupName !== currentToolbarGroup) {\n        dispatch({\n          type: 'SET_TOOLBAR_GROUP',\n          payload: { toolbarGroup: toolbarGroupName },\n        });\n      }\n      break;\n    }\n  }\n\n  setActiveToolGroupAndToolsOverlay(store, group);\n};\n\nconst setActiveToolGroupAndToolsOverlay = (store, group) => {\n  if (!group) {\n    store.dispatch(actions.setActiveToolGroup(''));\n    store.dispatch(actions.closeElement(DataElements.TOOLS_OVERLAY));\n  } else {\n    store.dispatch(actions.setActiveToolGroup(group));\n    store.dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n  }\n};","import actions from 'actions';\n\nexport default (dispatch, documentViewerKey) => (zoom) => {\n  dispatch(actions.setZoom(zoom, documentViewerKey));\n};\n","import actions from 'actions';\n\nexport default (dispatch) => (pageNumber) => {\n  dispatch(actions.setCurrentPage(pageNumber));\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (dispatch, documentViewerKey) => (stampAnnotation) => {\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(stampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (documentViewerKey) => (signatureAnnotation) => {\n  core.setToolMode(defaultTool);\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  signatureToolArray.forEach((tool) => {\n    tool.hidePreview();\n    tool.annot = null;\n  });\n  core.selectAnnotation(signatureAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default () => () => {\n  core.setToolMode(defaultTool);\n};\n","import getHashParameters from 'helpers/getHashParameters';\nimport core from 'core';\n\n\nexport default (documentViewerKey) => (annotations, action, info) => {\n  if (action === 'delete') {\n    deleteReplies(annotations, documentViewerKey, info);\n  }\n\n  const selectAnnotationOnCreation = getHashParameters('selectAnnotationOnCreation', false);\n  if (selectAnnotationOnCreation) {\n    if (action === 'add' && !info.imported) {\n      if (annotations.length > 0 && !annotations[0].InReplyTo) {\n        core.selectAnnotation(annotations[0], documentViewerKey);\n      }\n    }\n  }\n};\n\nconst deleteReplies = (annotations, documentViewerKey, info) => {\n  annotations.forEach((annotation) => {\n    core.deleteAnnotations(annotation.getReplies(), { 'imported': false, 'force': true, 'isUndoRedo': info?.isUndoRedo }, documentViewerKey);\n  });\n};\n","import actions from 'actions';\nimport core from 'core';\n\nexport default (dispatch, documentViewerKey) => () => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const canUndo = documentViewer.getAnnotationHistoryManager().canUndo();\n  dispatch(actions.setCanUndo(canUndo, documentViewerKey));\n  const canRedo = documentViewer.getAnnotationHistoryManager().canRedo();\n  dispatch(actions.setCanRedo(canRedo, documentViewerKey));\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport defaultTool from 'constants/defaultTool';\nimport DataElements from 'src/constants/dataElement';\n\nexport default ({ dispatch, getState }) => (annotation) => {\n  const state = getState();\n  const isNotesPanelDisabled = selectors.isElementDisabled(state, DataElements.NOTES_PANEL);\n  const isNotesPanelOpen = selectors.isElementOpen(state, DataElements.NOTES_PANEL);\n  const isInlineCommentDisabled = selectors.isElementDisabled(state, DataElements.INLINE_COMMENT_POPUP);\n\n  if (isNotesPanelDisabled) {\n    return;\n  }\n\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  dispatch(actions.closeElement('searchPanel'));\n  dispatch(actions.closeElement(DataElements.REDACTION_PANEL));\n  dispatch(actions.closeElement('textEditingPanel'));\n  if (!isInlineCommentDisabled || isNotesPanelOpen) {\n    core.selectAnnotation(annotation);\n    dispatch(actions.triggerNoteEditing());\n  } else {\n    dispatch(actions.openElement(DataElements.NOTES_PANEL));\n    // wait for the notes panel to be fully opened before focusing\n    setTimeout(() => {\n      core.selectAnnotation(annotation);\n      dispatch(actions.triggerNoteEditing());\n    }, 400);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\n\nexport default ({ dispatch, getState }) => (annotation) => {\n  const state = getState();\n  const isNotesPanelDisabled = selectors.isElementDisabled(state, DataElements.NOTES_PANEL);\n  const isNotesPanelOpen = selectors.isElementOpen(state, DataElements.NOTES_PANEL);\n  const isInlineCommentDisabled = selectors.isElementDisabled(state, DataElements.INLINE_COMMENT_POPUP);\n\n  if (isNotesPanelDisabled) {\n    return;\n  }\n\n  dispatch(actions.closeElement('searchPanel'));\n  dispatch(actions.closeElement(DataElements.REDACTION_PANEL));\n  if (!isInlineCommentDisabled || isNotesPanelOpen) {\n    core.selectAnnotation(annotation);\n    dispatch(actions.triggerNoteEditing());\n  } else {\n    dispatch(actions.openElement(DataElements.NOTES_PANEL));\n    // wait for the notes panel to be fully opened before focusing\n    setTimeout(() => {\n      core.selectAnnotation(annotation);\n      dispatch(actions.triggerNoteEditing());\n    }, 400);\n  }\n};\n","import actions from 'actions';\n\nexport default ({ dispatch }) => () => {\n  let isFullScreen = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n  isFullScreen = !!isFullScreen;\n\n  dispatch(actions.setFullScreen(isFullScreen));\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport Feature from 'constants/feature';\n\nexport default (store) => () => {\n  const { dispatch } = store;\n  const isReadOnly = core.getIsReadOnly();\n\n  if (isReadOnly) {\n    disableTools(store)();\n    disableFeatures(store)([Feature.Annotating]);\n    core.setToolMode(defaultTool);\n    dispatch(actions.setActiveToolGroup(''));\n  } else {\n    enableTools(store)();\n    enableFeatures(store)([Feature.Annotating]);\n  }\n\n  dispatch(actions.setReadOnly(core.getIsReadOnly()));\n  dispatch(actions.setAdminUser(core.getIsAdminUser()));\n  dispatch(actions.setUserName(core.getCurrentUser()));\n  core.drawAnnotationsFromList(core.getSelectedAnnotations());\n};","import core from 'core';\nimport actions from 'actions';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\n\nexport default (dispatch) => ({ added, removed, moved }) => {\n  const movedKeys = Object.keys(moved);\n  if (added.length || removed.length || movedKeys.length) {\n    const totalPages = core.getTotalPages();\n    dispatch(actions.setTotalPages(totalPages));\n\n    core.getOutlines((outlines) => {\n      dispatch(actions.setOutlines(outlines));\n    });\n\n    setTimeout(() => {\n      // this 'onLayoutChange' handler get trigger before the other 'onLayoutChange' event handler in core (that added by annotationManager to update page numbers) gets triggered\n      // use 'setTimeout' so the other 'onLayoutChange' handler finishes before we call 'setPageLabels'\n      dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n    }, 0);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport SignatureModes from 'constants/signatureModes';\n\nexport default (store, documentViewerKey) => async (_, widget) => {\n  const signatureTool = core.getTool('AnnotationCreateSignature', documentViewerKey);\n  const signatureMode = selectors.getSignatureMode(store.getState());\n\n  if (!(await signatureTool.isEmptySignature()) && signatureMode === SignatureModes.FULL_SIGNATURE) {\n    await signatureTool.addSignature();\n  } else if (!(await signatureTool.isEmptyInitialsSignature()) && signatureMode === SignatureModes.INITIALS) {\n    await signatureTool.addInitials();\n  } else {\n    let requiresInitials = false;\n    if (widget) {\n      requiresInitials = widget.requiresInitials();\n    }\n\n    const state = store.getState();\n    const isSavedSignaturesTabEnabled = selectors.isSavedSignaturesTabEnabled(state);\n    const signatureMode = requiresInitials ? SignatureModes.INITIALS : SignatureModes.FULL_SIGNATURE;\n    const savedSignatures = selectors.getSavedSignatures(state);\n    const savedInitials = selectors.getSavedInitials(state);\n    store.dispatch(actions.setSignatureMode(signatureMode));\n    if (isSavedSignaturesTabEnabled) {\n      const noSignaturesSaved = (savedInitials.length === 0 && requiresInitials) || (savedSignatures.length === 0 && !requiresInitials);\n      if (noSignaturesSaved) {\n        store.dispatch(actions.setSelectedTab('signatureModal', 'inkSignaturePanelButton'));\n      } else {\n        store.dispatch(actions.setSelectedTab('signatureModal', 'savedSignaturePanelButton'));\n      }\n      store.dispatch(actions.openElement('signatureModal'));\n    } else {\n      !selectors.isElementDisabled(state, 'toolbarGroup-Insert') && store.dispatch(actions.setToolbarGroup('toolbarGroup-Insert', true, 'signatureTools'));\n      // this condition is usually met when we click on a signature widget but UI doesn't know which signature to draw\n      // we check if there are saved signatures in the signature overlay to determine which component we should open\n      store.dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n\n      const isToolsOverlayDisabled = selectors.isElementDisabled(state, DataElements.TOOLS_OVERLAY) || selectors.isElementDisabled(state, 'toolsHeader');\n      if ((savedSignatures.length === 0 && !requiresInitials) || isToolsOverlayDisabled) {\n        store.dispatch(actions.openElement('signatureModal'));\n      } else if ((savedInitials.length === 0 && requiresInitials) || isToolsOverlayDisabled) {\n        store.dispatch(actions.openElement('signatureModal'));\n      } else {\n        core.setToolMode(window.Core.Tools.ToolNames.SIGNATURE);\n        const activeSavedSignatureTab = requiresInitials ? DataElements.SAVED_INTIALS_PANEL_BUTTON : DataElements.SAVED_SIGNATURES_PANEL_BUTTON;\n        store.dispatch(actions.openElement('toolStylePopup'));\n        store.dispatch(actions.setSelectedTab('savedSignatures', activeSavedSignatureTab));\n      }\n    }\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (dotStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_DOT).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(dotStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (documentViewerKey) => (rubberStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers('AnnotationCreateRubberStamp').forEach((tool) => tool.hidePreview());\n  core.selectAnnotation(rubberStampAnnotation, documentViewerKey);\n};\n","/**\n * Unmount multiple elements in the DOM. Note that this ONLY removes the DOM elements without disabling related features.\n * @method UI.disableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.disableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove the 'Edit' toolbar group\n    instance.UI.disableElements(['toolbarGroup-Edit']);\n  });\n */\n\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default (store) => (dataElements) => {\n  if (typeof dataElements === 'string') {\n    store.dispatch(actions.disableElement(dataElements, PRIORITY_THREE));\n  }\n\n  store.dispatch(actions.disableElements(dataElements, PRIORITY_THREE));\n};","/**\n * Remount the hidden elements in the DOM.\n * @method UI.enableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.enableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n */\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default (store) => (dataElements) => {\n  if (typeof dataElements === 'string') {\n    return store.dispatch(actions.enableElement(dataElements, PRIORITY_THREE));\n  }\n  return store.dispatch(actions.enableElements(dataElements, PRIORITY_THREE));\n};","import actions from 'actions';\nimport disableElements from 'src/apis/disableElements';\nimport enableElements from 'src/apis/enableElements';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, store) => (isReadOnly) => {\n  dispatch(actions.setReadOnly(isReadOnly));\n  if (isReadOnly) {\n    disableElements(store)([\n      'documentControl',\n      'thumbnailControl',\n      'thumbRotateClockwise',\n      'thumbDelete',\n      DataElements.PAGE_MANIPULATION_OVERLAY,\n      DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON\n    ]);\n  } else {\n    enableElements(store)([\n      'documentControl',\n      'thumbnailControl',\n      'thumbRotateClockwise',\n      'thumbDelete',\n      DataElements.PAGE_MANIPULATION_OVERLAY,\n      DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON\n    ]);\n  }\n};","import core from 'core';\n\nexport default (store, documentViewerKey) => (pageNumber) => {\n  const state = store.getState();\n  if (state.viewer.isAccessibleMode) {\n    core.getDocument(documentViewerKey).loadPageText(pageNumber, (text) => {\n      const textContainer = document.createElement('div');\n      textContainer.tabIndex = 0;\n      // TODO: page-num\n      textContainer.textContent = `Page ${pageNumber}.\\n${text}\\nEnd of page ${pageNumber}.`;\n      textContainer.style = 'font-size: 5px; overflow: auto; position: absolute; z-index: -99999; top: 0; bottom: 0;';\n      const id = `pageText${pageNumber}`;\n      textContainer.id = id;\n      // remove duplicate / pre-existing divs first before appending again\n      // TODO: page-num\n      const pageContainerElement = core.getViewerElement(documentViewerKey).querySelector(`#pageContainer${pageNumber}`);\n      const existingTextContainer = pageContainerElement.querySelector(`#${id}`);\n      if (existingTextContainer) {\n        pageContainerElement.removeChild(existingTextContainer);\n      }\n      pageContainerElement.appendChild(textContainer);\n    });\n  }\n};\n","import { saveAs } from 'file-saver';\n\nexport default () => (fileMeta) => {\n  const { fileData, fileName } = fileMeta;\n  saveAs(fileData, fileName);\n};\n","import core from 'core';\n\n// a flag promise that's used to make sure that function calls to getSignatureDataToStore\n// will resolve in the same order as they were called\nlet previewsPromise = Promise.resolve();\n// returns an array of objects in the shape of: { annotation, preview }\n// annotation: a copy of the annotation passed in\n// imgSrc: preview of the annotation, a base64 string\nexport default async (annotations) => {\n  // copy the annotation because we need to mutate the annotation object later if there're any styles changes\n  // and we don't want the original annotation to be mutated as well\n  // since it's been added to the canvas\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const newAnnotations = annotations.map(core.getAnnotationCopy);\n\n  await previewsPromise;\n\n  previewsPromise = Promise.all(\n    newAnnotations.map((annotation) => {\n      const oldStrokeThickness = annotation['StrokeThickness'];\n      // Temporarily changing stroke thickness to 6 because it looks better in the preview image\n      annotation['StrokeThickness'] = 6;\n      const preview = signatureTool.getPreview(annotation);\n      annotation['StrokeThickness'] = oldStrokeThickness;\n      return preview;\n    }),\n  );\n\n  const previews = await previewsPromise;\n  return newAnnotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n};\n","import core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch, store) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  let savedSignatures = signatureTool.getSavedSignatures();\n  const maxSignaturesCount = selectors.getMaxSignaturesCount(store.getState());\n  const numberOfSignaturesToRemove = savedSignatures.length - maxSignaturesCount;\n\n  if (numberOfSignaturesToRemove > 0) {\n    // to keep the UI sync with the signatures saved in the tool\n    for (let i = 0; i < numberOfSignaturesToRemove; i++) {\n      signatureTool.deleteSavedSignature(0);\n    }\n  }\n\n  savedSignatures = signatureTool.getSavedSignatures();\n  const signaturesToStore = await getSignatureDataToStore(savedSignatures);\n  dispatch(actions.setSavedSignatures(signaturesToStore));\n};","import core from 'core';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const coreSavedSignatures = signatureTool.getSavedSignatures();\n  const newSavedSignatures = await getSignatureDataToStore(coreSavedSignatures);\n  dispatch(actions.setSavedSignatures(newSavedSignatures));\n};\n","import actions from 'actions';\n\nconst formBuilderDefaultDisabledKeys = {\n  ROTATE_CLOCKWISE: 'rotateClockwise',\n  ROTATE_COUNTER_CLOCKWISE: 'rotateCounterClockwise',\n  NUMPAD_ROTATE_CLOCKWISE: 'numpadRotateClockwise',\n  NUMPAD_ROTATE_COUNTER_CLOCKWISE: 'numpadRotateCounterClockwise',\n  OPEN_FILE: 'openFile',\n  SEARCH: 'search',\n  ZOOM_IN: 'zoomIn',\n  ZOOM_OUT: 'zoomOut',\n  NUMPAD_ZOOM_IN: 'numpadZoomIn',\n  NUMPAD_ZOOM_OUT: 'numpadZoomOut',\n  FIT_SCREEN_WIDTH: 'fitScreenWidth',\n  PRINT: 'print',\n  BOOKMARK: 'bookmark',\n  SWITCH_PAN: 'switchPan',\n  SELECT: 'select',\n  PAN: 'pan',\n  ARROW: 'arrow',\n  CALLOUT: 'callout',\n  ERASER: 'eraser',\n  FREEHAND: 'freehand',\n  IMAGE: 'image',\n  LINE: 'line',\n  STICKY_NOTE: 'stickyNote',\n  ELLIPSE: 'ellipse',\n  RECTANGLE: 'rectangle',\n  RUBBER_STAMP: 'rubberStamp',\n  FREETEXT: 'freetext',\n  SIGNATURE: 'signature',\n  SQUIGGLY: 'squiggly',\n  HIGHLIGHT: 'highlight',\n  STRIKEOUT: 'strikeout',\n  UNDERLINE: 'underline',\n};\n\nexport default (dispatch, hotkeysManager) => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('saveAsButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: true }));\n  dispatch(actions.disableElement('textPopup', 1));\n  for (const shortcutKey in formBuilderDefaultDisabledKeys) {\n    // There could be keys that already disabled by the user. When we exit from form builder we don't want to enable them.\n    if (hotkeysManager.isActive(formBuilderDefaultDisabledKeys[shortcutKey])) {\n      hotkeysManager.disableShortcut(formBuilderDefaultDisabledKeys[shortcutKey]);\n      hotkeysManager.formBuilderDisabledKeys[shortcutKey] = formBuilderDefaultDisabledKeys[shortcutKey];\n    }\n  }\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (dispatch, store, hotkeysManager) => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('saveAsButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: false }));\n  dispatch(actions.enableElement('textPopup', 1));\n  const keysToEnable = hotkeysManager.formBuilderDisabledKeys;\n  for (const shortcutKey in keysToEnable) {\n    hotkeysManager.enableShortcut(keysToEnable[shortcutKey]);\n  }\n  hotkeysManager.formBuilderDisabledKeys = {};\n  // Ensure we are not left in the Forms toolbargroup when we end form builder mode\n  const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n  if (currentToolbarGroup === 'toolbarGroup-Forms') {\n    dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n  }\n};\n","export default () => async (/* widget */) => {\n  if (!window.Core.isFullPDFEnabled()) {\n    return;\n  }\n\n  await window.Core.PDFNet.initialize(undefined, window.Core.BackendTypes.WASM);\n\n  // const pdfDoc = await window.documentViewer.getDocument().getPDFDoc();\n  // const fieldName = widget.getField().name;\n  // const field = await pdfDoc.getDigitalSignatureField(fieldName);\n  /**\n   * @todo Originally implementated for the Digital Signature Validation Modal?\n   *\n   * https://github.com/PDFTron/webviewer-ui/blob/2cbf53f21a89f096284bc2902577ff86b58c75e1/src/event-listeners/onDigitalSignatureAvailable.js\n   *\n   * Still requires a return value.\n   */\n};\n","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (dispatch) => (annotation) => {\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(annotation);\n};","import core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch, store) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  let savedInitials = signatureTool.getSavedInitials();\n  const maxSignaturesCount = selectors.getMaxSignaturesCount(store.getState());\n  const numberOfInitialsToRemove = savedInitials.length - maxSignaturesCount;\n\n  if (numberOfInitialsToRemove > 0) {\n    // to keep the UI sync with the signatures saved in the tool\n    for (let i = 0; i < numberOfInitialsToRemove; i++) {\n      signatureTool.deleteSavedInitials(0);\n    }\n  }\n\n  savedInitials = signatureTool.getSavedInitials();\n  const initialsToStore = await getSignatureDataToStore(savedInitials);\n  dispatch(actions.setSavedInitials(initialsToStore));\n};","import core from 'core';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const savedInitials = signatureTool.getSavedInitials();\n  const newSavedInitials = await getSignatureDataToStore(savedInitials);\n  dispatch(actions.setSavedInitials(newSavedInitials));\n};\n","import actions from 'actions';\n\nexport default (dispatch) => () => {\n  dispatch(actions.disableElements(['thumbnailControl', 'documentControl']));\n};","import actions from 'actions';\n\nexport default (dispatch) => () => {\n  dispatch(actions.enableElements(['thumbnailControl', 'documentControl']));\n};\n","export default (hotkeysManager) => () => {\n  hotkeysManager.on();\n};","import actions from 'actions';\n\nexport default (dispatch, hotkeysManager) => () => {\n  hotkeysManager.off();\n  dispatch(actions.closeElements(['annotationPopup']));\n};","import * as eventListeners from 'src/event-listeners';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport core from 'core';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (store, documentViewerKey = 1, skipHotkeys = false) => {\n  const { dispatch } = store;\n  // TODO Compare: Add event handlers for panels and refactor code for panels\n  const onBeforeDocumentLoaded = eventListeners.onBeforeDocumentLoaded(dispatch, documentViewerKey);\n  const onCheckStampAnnotationAdded = eventListeners.onCheckStampAnnotationAdded(dispatch, documentViewerKey);\n  const onCrossStampAnnotationAdded = eventListeners.onCrossStampAnnotationAdded(dispatch, documentViewerKey);\n  const onDisplayModeUpdated = eventListeners.onDisplayModeUpdated(dispatch);\n  const onDocumentLoaded = eventListeners.onDocumentLoaded(store, documentViewerKey);\n  const onDocumentUnloaded = eventListeners.onDocumentUnloaded(dispatch, documentViewerKey);\n  const onFitModeUpdated = eventListeners.onFitModeUpdated(dispatch);\n  const onRotationUpdated = eventListeners.onRotationUpdated(dispatch);\n  const onToolUpdated = eventListeners.onToolUpdated(dispatch);\n  const onToolModeUpdated = eventListeners.onToolModeUpdated(dispatch, store);\n  const onZoomUpdated = eventListeners.onZoomUpdated(dispatch, documentViewerKey);\n  const onPageNumberUpdated = eventListeners.onPageNumberUpdated(dispatch);\n  const onUpdateAnnotationPermission = eventListeners.onUpdateAnnotationPermission(store);\n  const onAnnotationChanged = eventListeners.onAnnotationChanged(documentViewerKey);\n  const onStampAnnotationAdded = eventListeners.onStampAnnotationAdded(dispatch, documentViewerKey);\n  const onSignatureAnnotationAdded = eventListeners.onSignatureAnnotationAdded(documentViewerKey);\n  const onStickyAnnotationAdded = eventListeners.onStickyAnnotationAdded(store);\n  const onCaretAnnotationAdded = eventListeners.onCaretAnnotationAdded(store);\n  const onFullScreenChange = eventListeners.onFullScreenChange(store);\n  const onPagesUpdated = eventListeners.onPagesUpdated(dispatch);\n  const onLocationSelected = eventListeners.onLocationSelected(store, documentViewerKey);\n  const onDotStampAnnotationAdded = eventListeners.onDotStampAnnotationAdded(dispatch, documentViewerKey);\n  const onRubberStampAnnotationAdded = eventListeners.onRubberStampAnnotationAdded(documentViewerKey);\n  const onReadOnlyModeChanged = eventListeners.onReadOnlyModeChanged(dispatch, store);\n  const onPageComplete = eventListeners.onPageComplete(store, documentViewerKey);\n  const onFileAttachmentAnnotationAdded = eventListeners.onFileAttachmentAnnotationAdded();\n  const onFileAttachmentDataAvailable = eventListeners.onFileAttachmentDataAvailable();\n  const onSignatureSaved = eventListeners.onSignatureSaved(dispatch, store);\n  const onSignatureDeleted = eventListeners.onSignatureDeleted(dispatch, store);\n  const onHistoryChanged = eventListeners.onHistoryChanged(dispatch, documentViewerKey);\n  const onFormFieldCreationModeStarted = eventListeners.onFormFieldCreationModeStarted(dispatch, hotkeysManager);\n  const onFormFieldCreationModeEnded = eventListeners.onFormFieldCreationModeEnded(dispatch, store, hotkeysManager);\n  const onDigitalSignatureAvailable = eventListeners.onDigitalSignatureAvailable(dispatch, documentViewerKey);\n  const onImageContentAdded = eventListeners.onImageContentAdded(dispatch);\n  const onInitialSaved = eventListeners.onInitialSaved(dispatch, store);\n  const onInitialDeleted = eventListeners.onInitialDeleted(dispatch, store);\n  const onContentEditModeStarted = eventListeners.onContentEditModeStarted(dispatch);\n  const onContentEditModeEnded = eventListeners.onContentEditModeEnded(dispatch);\n  const onContentBoxEditStarted = eventListeners.onContentBoxEditStarted(dispatch, hotkeysManager);\n  const onContentBoxEditEnded = eventListeners.onContentBoxEditEnded(hotkeysManager);\n\n  return {\n    addEventHandlers: () => {\n      if (documentViewerKey === 1) {\n        core.addEventListener('readOnlyModeChanged', onReadOnlyModeChanged, undefined, documentViewerKey);\n        core.addEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded);\n        core.addEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n        core.addEventListener('contentEditModeStarted', onContentEditModeStarted);\n        core.addEventListener('contentEditModeEnded', onContentEditModeEnded);\n        core.addEventListener('contentBoxEditStarted', onContentBoxEditStarted);\n        core.addEventListener('contentBoxEditEnded', onContentBoxEditEnded);\n        core.addEventListener('toolUpdated', onToolUpdated, undefined, documentViewerKey);\n        core.addEventListener('toolModeUpdated', onToolModeUpdated, undefined, documentViewerKey);\n        document.addEventListener('fullscreenchange', onFullScreenChange);\n        document.addEventListener('mozfullscreenchange', onFullScreenChange);\n        document.addEventListener('webkitfullscreenchange', onFullScreenChange);\n        document.addEventListener('MSFullscreenChange', onFullScreenChange);\n        core.getTool(ToolNames.ADD_IMAGE_CONTENT, documentViewerKey).addEventListener('annotationAdded', onImageContentAdded);\n        // -- Tempory divider until panels are ready --\n        core.addEventListener('rotationUpdated', onRotationUpdated, undefined, documentViewerKey);\n        core.addEventListener('fitModeUpdated', onFitModeUpdated, undefined, documentViewerKey);\n        core.addEventListener('pageNumberUpdated', onPageNumberUpdated, undefined, documentViewerKey);\n        core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, undefined, documentViewerKey);\n        core.getTool('AnnotationCreateSticky', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky2', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky3', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky4', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.addEventListener('pagesUpdated', onPagesUpdated, undefined, documentViewerKey);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('signatureSaved', onSignatureSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('signatureDeleted', onSignatureDeleted);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('initialSaved', onInitialSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('initialDeleted', onInitialDeleted);\n        core.getTool('AnnotationCreateMarkInsertText', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText2', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText3', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText4', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText2', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText3', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText4', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n      }\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('displayModeUpdated', onDisplayModeUpdated, undefined, documentViewerKey);\n      core.addEventListener('documentLoaded', onDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('documentUnloaded', onDocumentUnloaded, undefined, documentViewerKey);\n      core.addEventListener('zoomUpdated', onZoomUpdated, undefined, documentViewerKey);\n      core.addEventListener('annotationChanged', onAnnotationChanged, undefined, documentViewerKey);\n      core.addEventListener('historyChanged', onHistoryChanged, undefined, documentViewerKey);\n      core.addEventListener('pageComplete', onPageComplete, undefined, documentViewerKey);\n      core.addEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable);\n      core.addEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable);\n      core.getTool('AnnotationCreateStamp', documentViewerKey).addEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('locationSelected', onLocationSelected);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('annotationAdded', onSignatureAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_DOT, documentViewerKey).addEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).addEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateFileAttachment', documentViewerKey).addEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS, documentViewerKey).addEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK, documentViewerKey).addEventListener('annotationAdded', onCheckStampAnnotationAdded);\n    },\n    removeEventHandlers: () => {\n      if (documentViewerKey === 1) {\n        core.removeEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted, documentViewerKey);\n        core.removeEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded, documentViewerKey);\n        core.removeEventListener('contentEditModeStarted', onContentEditModeStarted);\n        core.removeEventListener('contentEditModeEnded', onContentEditModeEnded);\n        core.removeEventListener('contentBoxEditStarted', onContentBoxEditStarted);\n        core.removeEventListener('contentBoxEditEnded', onContentBoxEditEnded);\n        core.removeEventListener('toolUpdated', onToolUpdated, documentViewerKey);\n        core.removeEventListener('toolModeUpdated', onToolModeUpdated, documentViewerKey);\n        document.removeEventListener('fullscreenchange', onFullScreenChange);\n        document.removeEventListener('mozfullscreenchange', onFullScreenChange);\n        document.removeEventListener('webkitfullscreenchange', onFullScreenChange);\n        document.removeEventListener('MSFullscreenChange', onFullScreenChange);\n        core.removeEventListener('rotationUpdated', onRotationUpdated, documentViewerKey);\n        core.removeEventListener('fitModeUpdated', onFitModeUpdated, documentViewerKey);\n        core.removeEventListener('pageNumberUpdated', onPageNumberUpdated, documentViewerKey);\n        core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, documentViewerKey);\n        core.getTool('AnnotationCreateSticky', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky2', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky3', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky4', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.removeEventListener('pagesUpdated', onPagesUpdated, documentViewerKey);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('signatureSaved', onSignatureSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('signatureDeleted', onSignatureDeleted);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('initialSaved', onInitialSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('initialDeleted', onInitialDeleted);\n        core.getTool(ToolNames.ADD_IMAGE_CONTENT, documentViewerKey).removeEventListener('annotationAdded', onImageContentAdded);\n        core.getTool('AnnotationCreateMarkInsertText', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText2', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText3', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText4', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText2', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText3', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText4', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n      }\n      core.removeEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, documentViewerKey);\n      core.removeEventListener('displayModeUpdated', onDisplayModeUpdated, documentViewerKey);\n      core.removeEventListener('documentLoaded', onDocumentLoaded, documentViewerKey);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded, documentViewerKey);\n      core.removeEventListener('zoomUpdated', onZoomUpdated, documentViewerKey);\n      core.removeEventListener('annotationChanged', onAnnotationChanged, documentViewerKey);\n      core.removeEventListener('pageComplete', onPageComplete, documentViewerKey);\n      core.removeEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable, documentViewerKey);\n      core.removeEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable, documentViewerKey);\n      core.getTool('AnnotationCreateStamp', documentViewerKey).removeEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('locationSelected', onLocationSelected);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('annotationAdded', onSignatureAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_DOT, documentViewerKey).removeEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).removeEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateFileAttachment', documentViewerKey).removeEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS, documentViewerKey).removeEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK, documentViewerKey).removeEventListener('annotationAdded', onCheckStampAnnotationAdded);\n      !skipHotkeys && hotkeysManager.off();\n    },\n  };\n};\n","import React, { useCallback, useState, useEffect } from 'react';\nimport './ComparisonButton.scss';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Choice from 'components/Choice';\nimport DataElements from 'src/constants/dataElement';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\n\nconst ComparisonButton = () => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [disabled, setDisabled] = useState(true);\n  const [isCompareStarted, isComparisonOverlayEnabled] = useSelector((state) => [\n    selectors.isCompareStarted(state),\n    selectors.getIsComparisonOverlayEnabled(state),\n  ]);\n  const semanticDiffAnnotations = core.getSemanticDiffAnnotations();\n\n  useEffect(() => {\n    const checkDisabled = () => {\n      const documentsLoaded = core.getDocument(1) && core.getDocument(2);\n      const document1IsValidType = core.getDocument(1)?.getType() === 'pdf' ||\n        (core.getDocument(1)?.getType() === 'webviewerServer' && !core.getDocument(1)?.isWebViewerServerDocument());\n      const document2IsValidType = core.getDocument(2)?.getType() === 'pdf' ||\n        (core.getDocument(2)?.getType() === 'webviewerServer' && !core.getDocument(2)?.isWebViewerServerDocument());\n      if (documentsLoaded && document1IsValidType && document2IsValidType) {\n        setDisabled(false);\n      } else {\n        setDisabled(true);\n      }\n    };\n    const unLoaded = () => {\n      setDisabled(true);\n      dispatch(actions.setIsCompareStarted(false));\n      dispatch(actions.disableElement('comparePanelToggleButton'));\n      dispatch(actions.closeElement('comparePanel'));\n    };\n    checkDisabled();\n    core.addEventListener('documentLoaded', checkDisabled, undefined, 1);\n    core.addEventListener('documentLoaded', checkDisabled, undefined, 2);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, 1);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, 2);\n\n    if (!semanticDiffAnnotations.length && isComparisonOverlayEnabled) {\n      dispatch(actions.setIsComparisonOverlayEnabled(false));\n    }\n\n    if (semanticDiffAnnotations.length && !isComparisonOverlayEnabled) {\n      dispatch(actions.setIsComparisonOverlayEnabled(true));\n    }\n\n    return () => {\n      core.removeEventListener('documentLoaded', checkDisabled, undefined, 1);\n      core.removeEventListener('documentLoaded', checkDisabled, undefined, 2);\n      core.removeEventListener('documentUnloaded', unLoaded, undefined, 1);\n      core.removeEventListener('documentUnloaded', unLoaded, undefined, 2);\n    };\n  }, [semanticDiffAnnotations]);\n\n  const startComparison = useCallback(() => {\n    const [documentViewer, documentViewer2] = core.getDocumentViewers();\n    const shouldDiff = documentViewer?.getDocument() && documentViewer2?.getDocument();\n    if (shouldDiff) {\n      dispatch(actions.setIsCompareStarted(true));\n      dispatch(actions.enableElement('comparePanelToggleButton'));\n      dispatch(actions.openElement(DataElements.LOADING_MODAL));\n      documentViewer.startSemanticDiff(documentViewer2).catch((error) => {\n        console.error(error);\n        dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      });\n    }\n  }, []);\n\n  const toggleComparisonOverlay = async () => {\n    const enable = !isComparisonOverlayEnabled;\n    const [documentViewerOne, documentViewerTwo] = core.getDocumentViewers();\n    if (enable) {\n      await documentViewerOne.startSemanticDiff(documentViewerTwo);\n    } else {\n      await documentViewerOne.stopSemanticDiff();\n    }\n    dispatch(actions.setIsComparisonOverlayEnabled(enable));\n  };\n\n  return (\n    <div className=\"ComparisonButton\">\n      {!isCompareStarted ?\n        <button disabled={disabled} onClick={startComparison}>{t('action.startComparison')}</button>\n        :\n        <Choice\n          isSwitch\n          label={t('action.showComparison')}\n          checked={isComparisonOverlayEnabled}\n          onChange={toggleComparisonOverlay}\n        />\n      }\n    </div>\n  );\n};\n\nexport default ComparisonButton;\n","import ComparisonButton from './ComparisonButton';\n\nexport default ComparisonButton;","import core from 'core';\n\nconst setupDocViewer = (documentViewer = undefined) => {\n  const docViewer = documentViewer || core.getDocumentViewer();\n\n  // at 100% zoom level, adjust this whenever zoom/fitmode is updated\n  docViewer.DEFAULT_MARGIN = 10;\n  addToolsToDocViewer(docViewer);\n};\n\nconst addToolsToDocViewer = (docViewer) => {\n  const toolModeMap = docViewer.getToolModeMap();\n  const { ToolNames } = window.Core.Tools;\n\n  toolModeMap.AnnotationCreateTextHighlight2 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT2);\n  toolModeMap.AnnotationCreateTextHighlight3 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT3);\n  toolModeMap.AnnotationCreateTextHighlight4 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeHand2 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND2);\n  toolModeMap.AnnotationCreateFreeHand3 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND3);\n  toolModeMap.AnnotationCreateFreeHand4 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND4);\n  toolModeMap.AnnotationCreateFreeHandHighlight2 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT2);\n  toolModeMap.AnnotationCreateFreeHandHighlight3 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT3);\n  toolModeMap.AnnotationCreateFreeHandHighlight4 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeText2 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT2);\n  toolModeMap.AnnotationCreateFreeText3 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT3);\n  toolModeMap.AnnotationCreateFreeText4 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT4);\n  toolModeMap.AnnotationCreateMarkInsertText2 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT2);\n  toolModeMap.AnnotationCreateMarkInsertText3 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT3);\n  toolModeMap.AnnotationCreateMarkInsertText4 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT4);\n  toolModeMap.AnnotationCreateMarkReplaceText2 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT2);\n  toolModeMap.AnnotationCreateMarkReplaceText3 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT3);\n  toolModeMap.AnnotationCreateMarkReplaceText4 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT4);\n  toolModeMap.AnnotationCreateDateFreeText2 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT2);\n  toolModeMap.AnnotationCreateDateFreeText3 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT3);\n  toolModeMap.AnnotationCreateDateFreeText4 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT4);\n  toolModeMap.AnnotationCreateCallout2 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT2);\n  toolModeMap.AnnotationCreateCallout3 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT3);\n  toolModeMap.AnnotationCreateCallout4 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT4);\n  toolModeMap.AnnotationCreateSticky2 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY2);\n  toolModeMap.AnnotationCreateSticky3 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY3);\n  toolModeMap.AnnotationCreateSticky4 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY4);\n  toolModeMap.AnnotationCreateTextUnderline2 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE2);\n  toolModeMap.AnnotationCreateTextUnderline3 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE3);\n  toolModeMap.AnnotationCreateTextUnderline4 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE4);\n  toolModeMap.AnnotationCreateTextStrikeout2 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT2);\n  toolModeMap.AnnotationCreateTextStrikeout3 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT3);\n  toolModeMap.AnnotationCreateTextStrikeout4 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT4);\n  toolModeMap.AnnotationCreateTextSquiggly2 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY2);\n  toolModeMap.AnnotationCreateTextSquiggly3 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY3);\n  toolModeMap.AnnotationCreateTextSquiggly4 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY4);\n  toolModeMap.AnnotationCreateRectangle2 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE2);\n  toolModeMap.AnnotationCreateRectangle3 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE3);\n  toolModeMap.AnnotationCreateRectangle4 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE4);\n  toolModeMap.AnnotationCreateEllipse2 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE2);\n  toolModeMap.AnnotationCreateEllipse3 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE3);\n  toolModeMap.AnnotationCreateEllipse4 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE4);\n  toolModeMap.AnnotationCreatePolygon2 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON2);\n  toolModeMap.AnnotationCreatePolygon3 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON3);\n  toolModeMap.AnnotationCreatePolygon4 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON4);\n  toolModeMap.AnnotationCreatePolygonCloud2 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD2);\n  toolModeMap.AnnotationCreatePolygonCloud3 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD3);\n  toolModeMap.AnnotationCreatePolygonCloud4 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD4);\n  toolModeMap.AnnotationCreateLine2 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE2);\n  toolModeMap.AnnotationCreateLine3 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE3);\n  toolModeMap.AnnotationCreateLine4 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE4);\n  toolModeMap.AnnotationCreatePolyline2 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE2);\n  toolModeMap.AnnotationCreatePolyline3 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE3);\n  toolModeMap.AnnotationCreatePolyline4 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE4);\n  toolModeMap.AnnotationCreateArrow2 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW2);\n  toolModeMap.AnnotationCreateArrow3 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW3);\n  toolModeMap.AnnotationCreateArrow4 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW4);\n  toolModeMap.AnnotationCreateCountMeasurement2 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCountMeasurement3 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCountMeasurement4 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT4);\n  toolModeMap.AnnotationCreateDistanceMeasurement2 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateDistanceMeasurement3 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateDistanceMeasurement4 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT4);\n  toolModeMap.AnnotationCreatePerimeterMeasurement2 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT2);\n  toolModeMap.AnnotationCreatePerimeterMeasurement3 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT3);\n  toolModeMap.AnnotationCreatePerimeterMeasurement4 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT4);\n  toolModeMap.AnnotationCreateAreaMeasurement2 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateAreaMeasurement3 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateAreaMeasurement4 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateEllipseMeasurement2 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateEllipseMeasurement3 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateEllipseMeasurement4 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT4);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement2 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement3 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement4 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.TextFormFieldCreateTool2 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD2);\n  toolModeMap.TextFormFieldCreateTool3 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD3);\n  toolModeMap.TextFormFieldCreateTool4 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD4);\n  toolModeMap.SignatureFormFieldCreateTool2 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD2);\n  toolModeMap.SignatureFormFieldCreateTool3 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD3);\n  toolModeMap.SignatureFormFieldCreateTool4 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD4);\n  toolModeMap.ListBoxFormFieldCreateTool2 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD2);\n  toolModeMap.ListBoxFormFieldCreateTool3 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD3);\n  toolModeMap.ListBoxFormFieldCreateTool4 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD4);\n  toolModeMap.ComboBoxFormFieldCreateTool2 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD2);\n  toolModeMap.ComboBoxFormFieldCreateTool3 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD3);\n  toolModeMap.ComboBoxFormFieldCreateTool4 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD4);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement2 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement3 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement4 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArcMeasurement2 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT2);\n  toolModeMap.AnnotationCreateArcMeasurement3 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT3);\n  toolModeMap.AnnotationCreateArcMeasurement4 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArc2 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC2);\n  toolModeMap.AnnotationCreateArc3 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC3);\n  toolModeMap.AnnotationCreateArc4 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC4);\n  toolModeMap[ToolNames.REDACTION2] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION2);\n  toolModeMap[ToolNames.REDACTION3] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION3);\n  toolModeMap[ToolNames.REDACTION4] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION4);\n  toolModeMap.AnnotationCreateChangeViewTool = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW);\n  toolModeMap.AnnotationCreateChangeViewTool2 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW2);\n  toolModeMap.AnnotationCreateChangeViewTool3 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW3);\n  toolModeMap.AnnotationCreateChangeViewTool4 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW4);\n};\n\nexport default setupDocViewer;\n","// default styles of a tool is determined by core\n// following are the tools that we want to change the default styles due to design\n// we could change the default styles in core but we don't want the legacy UI to be affected, so we do it here\nexport default {\n  AnnotationCreateCountMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCountMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCountMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCountMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArcMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArcMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArcMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArcMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArc: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArc2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArc3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArc4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArrow: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArrow2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArrow3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArrow4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateLine: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateLine2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateLine3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateLine4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolyline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolyline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolyline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolyline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygonCloud: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygonCloud2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygonCloud3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygonCloud4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygon: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygon2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygon3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygon4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangle: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateEllipse: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipse2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipse3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipse4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHand: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHand2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHand3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHand4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateMarkInsertText: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateMarkInsertText2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateMarkInsertText3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateMarkInsertText4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCallout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCallout2: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCallout3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCallout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateSticky: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateSticky2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateSticky3: {\n    StrokeColor: { R: 255, G: 141, B: 0, A: 1 },\n  },\n  AnnotationCreateSticky4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextHighlight: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateTextHighlight2: {\n    StrokeColor: { R: 37, G: 210, B: 209, A: 1 },\n  },\n  AnnotationCreateTextHighlight3: {\n    StrokeColor: { R: 0, G: 204, B: 99, A: 1 },\n  },\n  AnnotationCreateTextHighlight4: {\n    StrokeColor: { R: 226, G: 161, B: 230, A: 1 },\n  },\n  AnnotationCreateTextUnderline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextUnderline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextUnderline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextUnderline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextSquiggly: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextSquiggly2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextSquiggly3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextSquiggly4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextStrikeout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextStrikeout2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextStrikeout3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextStrikeout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  TextFormFieldCreateTool: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  TextFormFieldCreateTool2: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  TextFormFieldCreateTool3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  TextFormFieldCreateTool4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  SignatureFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  SignatureFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  SignatureFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  SignatureFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ListBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ListBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ListBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ListBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRedaction: {\n    StrokeColor: { R: 255, G: 0, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction2: {\n    StrokeColor: { R: 0, G: 0, B: 255, A: 1 }\n  },\n  AnnotationCreateRedaction3: {\n    StrokeColor: { R: 255, G: 255, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction4: {\n    StrokeColor: { R: 0, G: 128, B: 0, A: 1 }\n  },\n  AnnotationCreateChangeViewTool: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateChangeViewTool2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateChangeViewTool3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateChangeViewTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n};\n","import core from 'core';\nimport defaultToolStylesMap from 'constants/defaultToolStylesMap';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nconst setDefaultToolStyle = (toolName, documentViewer = undefined) => {\n  let toolStyles = null;\n  const toolModeMap = documentViewer ? documentViewer.getToolModeMap() : core.getToolModeMap();\n\n  try {\n    const instanceId = getInstanceID();\n    toolStyles = localStorage.getItem(`${instanceId}-toolData-${toolName}`);\n  } catch (ex) {\n    console.warn('Disabling \"localStorage\" because it could not be accessed.');\n    localStorageManager.disableLocalStorage();\n  }\n\n  if (!toolStyles && defaultToolStylesMap[toolName]) {\n    toolStyles = JSON.stringify(defaultToolStylesMap[toolName]);\n  }\n\n  if (toolStyles) {\n    const tool = toolModeMap[toolName];\n\n    toolStyles = getParsedToolStyles(toolStyles);\n    tool.setStyles(toolStyles);\n  }\n};\n\nconst setDefaultToolStyles = (documentViewer = undefined) => {\n  const toolModeMap = documentViewer ? documentViewer.getToolModeMap() : core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach((toolName) => {\n    setDefaultToolStyle(toolName, documentViewer);\n  });\n};\n\nconst getParsedToolStyles = (toolStyles) => JSON.parse(toolStyles, (_, styles) => {\n  if (styles) {\n    Object.entries(styles).forEach(([key, style]) => {\n      if (isKeyColorProperty(key) && typeof style === 'object') {\n        styles[key] = new window.Core.Annotations.Color(\n          style.R,\n          style.G,\n          style.B,\n          style.A,\n        );\n      }\n    });\n  }\n  return styles;\n});\n\nconst isKeyColorProperty = (key) => ['TextColor', 'StrokeColor', 'FillColor'].includes(key);\n\nexport default setDefaultToolStyles;\n\nexport { setDefaultToolStyle };\n","import setupDocViewer from 'helpers/setupDocViewer';\nimport setDefaultToolStyles from 'helpers/setDefaultToolStyles';\nimport core from 'core';\n\nexport const addDocumentViewer = (number) => {\n  const documentViewer = new window.Core.DocumentViewer();\n  documentViewer.enableAnnotations();\n  documentViewer.setFitMode(documentViewer.FitMode.FitPage);\n  setupDocViewer(documentViewer);\n  setDefaultToolStyles(documentViewer);\n  core.setDocumentViewer(number, documentViewer);\n  return documentViewer;\n};\n\nexport const removeDocumentViewer = (number) => {\n  const documentViewer = core.getDocumentViewer(number);\n  documentViewer.closeDocument();\n  core.deleteDocumentViewer(number);\n};\n\nexport const syncDocumentViewers = (primarydocumentViewerKey, secondarydocumentViewerKey) => {\n  const documentViewer = core.getDocumentViewer(primarydocumentViewerKey);\n  const documentViewer2 = core.getDocumentViewer(secondarydocumentViewerKey);\n  documentViewer2.setToolMode(documentViewer2.getTool(documentViewer.getToolMode().name));\n  const annotationManager = documentViewer.getAnnotationManager();\n  const annotationManager2 = documentViewer2.getAnnotationManager();\n  annotationManager2.setCurrentUser(annotationManager.getCurrentUser());\n  if (annotationManager.isUserAdmin()) {\n    annotationManager2.promoteUserToAdmin();\n  } else {\n    annotationManager2.demoteUserFromAdmin();\n  }\n};\n","const multiViewerHelper = {\n  matchedPages: null,\n  isScrolledByClickingChangeItem: false,\n};\n\nexport const setIsScrolledByClickingChangeItem = (value) => {\n  multiViewerHelper.isScrolledByClickingChangeItem = value;\n};\n\nexport const getIsScrolledByClickingChangeItem = () => {\n  return multiViewerHelper.isScrolledByClickingChangeItem;\n};\n\nexport default multiViewerHelper;\n","import React, { useEffect, useRef, useState } from 'react';\nimport './MultiViewer.scss';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { useSelector, useDispatch, useStore } from 'react-redux';\nimport DropArea from 'components/MultiViewer/DropArea';\nimport ResizeBar from 'components/ResizeBar';\nimport DocumentHeader from 'components/MultiViewer/DocumentHeader';\nimport DocumentContainer from 'components/MultiViewer/DocumentContainer';\nimport classNames from 'classnames';\nimport CompareZoomOverlay from 'components/MultiViewer/CompareZoomOverlay';\nimport eventHandler from 'helpers/eventHandler';\nimport throttle from 'lodash/throttle';\nimport { zoomTo } from 'helpers/zoom';\nimport ComparisonButton from 'components/MultiViewer/ComparisonButton';\nimport { addDocumentViewer, syncDocumentViewers, removeDocumentViewer } from 'helpers/documentViewerHelper';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport { DISABLED_TOOLS_KEYWORDS, DISABLED_TOOL_GROUPS, SYNC_MODES } from 'constants/multiViewerContants';\nimport DataElements from 'constants/dataElement';\nimport multiViewerHelper, {\n  getIsScrolledByClickingChangeItem,\n  setIsScrolledByClickingChangeItem\n} from 'helpers/multiViewerHelper';\n\nconst MIN_WIDTH = 350;\n\nconst MultiViewer = () => {\n  const documentViewerKeys = [1, 2];\n  const dispatch = useDispatch();\n  const store = useStore();\n  const [initialSetup, setInitialSetup] = useState(false);\n  const oldHeaderItems = useRef({});\n  const container = useRef();\n  const container2 = useRef();\n  const [doc1Loaded, setDoc1Loaded] = useState(false);\n  const [doc2Loaded, setDoc2Loaded] = useState(false);\n  const [width, setWidth] = useState(0);\n  const [width2, setWidth2] = useState(0);\n  const [isSyncing, setIsSyncing] = useState(false);\n  const removeHandlerFunctions = useRef([]);\n  const funcRefs = useRef({\n    updateScrollView: throttle(() => core.scrollViewUpdated(), 100, { leading: true }),\n    resizeObserverFunc: throttle((records) => {\n      const newWidth = records[0].contentRect.width;\n      if (newWidth) {\n        dispatch(actions.setDocumentContainerWidth(newWidth));\n        if (width === 0 && width2 === 0) {\n          setWidth(newWidth / 2);\n          setWidth2(newWidth / 2);\n        } else {\n          const currentWidth = width + width2;\n          const diff = currentWidth - newWidth;\n          setWidth(width + diff / 2);\n          setWidth2(width2 + diff / 2);\n        }\n      }\n    }, 100, { leading: true }),\n  });\n  const syncState = useRef({\n    scrollTop1: 0,\n    scrollLeft1: 0,\n    scrollTop2: 0,\n    scrollLeft2: 0,\n    currentScrollContainer: null,\n    topOverflow1: 0,\n    topOverflow2: 0,\n    page1: 1,\n    page2: 1,\n  });\n  const rootContainerRef = useRef();\n  const resizeOberver = useRef(new ResizeObserver(funcRefs.current.resizeObserverFunc));\n  const removeHandlersRef = useRef();\n  const readyDefaultState = { 1: false, 2: false, viewer: false, eventFired: false };\n  const readyState = useRef(readyDefaultState);\n\n  const [\n    isMultiViewerMode,\n    isComparisonDisabled,\n    activeDocumentViewerKey,\n    documentContainerWidth,\n    documentContentContainerWidthStyle,\n    zoom,\n    zoom2,\n    activeToolbarGroup,\n    activeToolName,\n    customMultiViewerSyncHandler,\n    syncViewer,\n    multiViewerSyncScrollMode,\n    documentContainerLeftMargin,\n    isShowComparisonButtonEnabled,\n  ] = useSelector((state) => [\n    selectors.isMultiViewerMode(state),\n    selectors.isComparisonDisabled(state),\n    selectors.getActiveDocumentViewerKey(state),\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContentContainerWidthStyle(state),\n    selectors.getZoom(state, 1),\n    selectors.getZoom(state, 2),\n    selectors.getCurrentToolbarGroup(state),\n    selectors.getActiveToolName(state),\n    selectors.getCustomMultiViewerSyncHandler(state),\n    selectors.getSyncViewer(state),\n    selectors.getMultiViewerSyncScrollMode(state),\n    selectors.getDocumentContainerLeftMargin(state),\n    selectors.getIsShowComparisonButtonEnabled(state)\n  ]);\n\n  useEffect(() => {\n    const setupMultiViewer = () => {\n      if (DISABLED_TOOL_GROUPS.includes(activeToolbarGroup)) {\n        dispatch(actions.setToolbarGroup('toolbarGroup-View', false));\n      }\n      for (const keyWord of DISABLED_TOOLS_KEYWORDS) {\n        if (activeToolName.match(keyWord)) {\n          core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n        }\n      }\n      const isDoc1Loaded = !!core.getDocumentViewer(1).getDocument();\n      setDoc1Loaded(isDoc1Loaded);\n      addDocumentViewer(2);\n      syncDocumentViewers(1, 2);\n      const { addEventHandlers, removeEventHandlers } = eventHandler(store, 2, true);\n      removeHandlersRef.current = removeEventHandlers;\n      addEventHandlers();\n      const width = rootContainerRef.current.clientWidth;\n      setWidth(width / 2);\n      setWidth2(width / 2);\n      resizeOberver.current.observe(rootContainerRef.current);\n      !isComparisonDisabled && isShowComparisonButtonEnabled && addHeaderItems();\n      setInitialSetup(true);\n      onReady('viewer');\n      dispatch(actions.setIsMultiViewerReady(true));\n    };\n    const cleanUpMultiViewer = () => {\n      dispatch(actions.setIsMultiViewerReady(false));\n      stopSyncing();\n      setInitialSetup(false);\n      if (activeDocumentViewerKey === 2) {\n        setActiveDocumentViewerKey(1);\n      }\n      setDoc2Loaded(false);\n      removeHandlersRef.current();\n      removeDocumentViewer(2);\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(1), { force: true }, 1);\n      resizeOberver.current.disconnect();\n      !isComparisonDisabled && resetHeaderItems();\n      readyState.current = readyDefaultState;\n      dispatch(actions.closeElement('comparePanel'));\n    };\n    const addHeaderItems = () => {\n      const headerItems = selectors.getDefaultHeaderItems(store.getState());\n      const zoomOverlay = headerItems.find((item) => item.dataElement === DataElements.ZOOM_OVERLAY_BUTTON);\n      const index = headerItems.indexOf(zoomOverlay);\n      if (index !== -1) {\n        oldHeaderItems.current = {\n          zoomOverlay,\n          index,\n        };\n        headerItems.splice(index, 1, {\n          type: 'customElement',\n          render: () => <ComparisonButton/>,\n          dataElement: 'comparisonToggleButton',\n          hiddenOnMobileDevices: true,\n        });\n      }\n      if (!headerItems.find((item) => item.dataElement === 'comparePanelToggleButton')) {\n        headerItems.splice(headerItems.length - 3, 0, {\n          dataElement: 'comparePanelToggleButton',\n          hiddenOnMobileDevices: true,\n          img: 'icon-header-compare',\n          type: 'toggleElementButton',\n          element: 'comparePanel',\n          title: 'component.comparePanel',\n          hidden: ['small-mobile'],\n        });\n      }\n      dispatch(actions.setHeaderItems('default', [...headerItems]));\n      dispatch(actions.disableElement('comparePanelToggleButton'));\n    };\n    const resetHeaderItems = () => {\n      const headerItems = selectors.getDefaultHeaderItems(store.getState());\n      const index = oldHeaderItems.current.index;\n      if (index && index !== -1) {\n        headerItems.splice(index, 1, oldHeaderItems.current.zoomOverlay);\n        oldHeaderItems.current = {\n          index: null,\n          zoomOverlay: null,\n        };\n      }\n      const indexOfButton = headerItems.indexOf(headerItems.find((item) => item?.dataElement === 'comparePanelToggleButton'));\n      indexOfButton !== -1 && headerItems.splice(indexOfButton, 1);\n      dispatch(actions.setHeaderItems('default', [...headerItems]));\n    };\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', onLoaded1, 1);\n      core.removeEventListener('documentUnloaded', unLoaded1, 1);\n      const hasSecondViewer = !!core.getDocumentViewer(2);\n      if (hasSecondViewer) {\n        core.removeEventListener('documentLoaded', onLoaded2, 2);\n        core.removeEventListener('documentUnloaded', unLoaded2, 2);\n      }\n    };\n    const addEventListeners = () => {\n      core.addEventListener('documentLoaded', onLoaded1, undefined, 1);\n      core.addEventListener('documentUnloaded', unLoaded1, undefined, 1);\n      core.addEventListener('documentUnloaded', unLoaded2, undefined, 2);\n      core.addEventListener('documentLoaded', onLoaded2, undefined, 2);\n    };\n    const onLoaded1 = () => {\n      setDoc1Loaded(true);\n    };\n    const onLoaded2 = () => {\n      setDoc2Loaded(true);\n    };\n    const unLoaded1 = () => {\n      stopSyncing();\n      setDoc1Loaded(false);\n      multiViewerHelper.matchedPages = null;\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(2), { force: true }, 2);\n    };\n    const unLoaded2 = () => {\n      stopSyncing();\n      setDoc2Loaded(false);\n      multiViewerHelper.matchedPages = null;\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(1), { force: true }, 1);\n    };\n    if (!isMultiViewerMode) {\n      if (initialSetup) {\n        cleanUpMultiViewer();\n        return removeListeners;\n      }\n      return;\n    }\n    if (!initialSetup) {\n      setupMultiViewer();\n    }\n\n    if (isMultiViewerMode && isShowComparisonButtonEnabled && initialSetup) {\n      addHeaderItems();\n    } else if (initialSetup) {\n      resetHeaderItems();\n    }\n\n    addEventListeners();\n    return removeListeners;\n  }, [isMultiViewerMode, isShowComparisonButtonEnabled]);\n\n  useEffect(() => {\n    if (isMultiViewerMode && initialSetup) {\n      funcRefs.current.updateScrollView();\n    }\n  }, [width, width2]);\n\n  useEffect(() => {\n    if (initialSetup && isMultiViewerMode) {\n      onReady('viewer');\n    }\n  }, [initialSetup]);\n\n  const setActiveDocumentViewerKey = (documentViewerKey) => {\n    dispatch(actions.setActiveDocumentViewerKey(documentViewerKey));\n  };\n  const updateActiveDocumentViewerKey = (documentViewerKey) => {\n    const docLoaded = documentViewerKey === 1 ? doc1Loaded : doc2Loaded;\n    docLoaded && activeDocumentViewerKey !== documentViewerKey && setActiveDocumentViewerKey(documentViewerKey);\n  };\n  const setFirstViewerActive = () => updateActiveDocumentViewerKey(1);\n  const setSecondViewerActive = () => updateActiveDocumentViewerKey(2);\n\n  const shouldSkipSyncEvent = () => {\n    const state = store.getState();\n    return core.getDocumentViewers().length < 2 || !core.getDocument(1) || !core.getDocument(2) ||\n    !selectors.isMultiViewerMode(state) || !selectors.getSyncViewer(state);\n  };\n\n  const createOnScrollHandler = (documentViewerKey) => (e) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    const { scrollTop, scrollLeft } = e.target;\n    if (getIsScrolledByClickingChangeItem()) {\n      syncState.current[`scrollTop${documentViewerKey}`] = scrollTop;\n      syncState.current[`scrollLeft${documentViewerKey}`] = scrollLeft;\n      if (documentViewerKey === 2) {\n        setIsScrolledByClickingChangeItem(false);\n      }\n      return;\n    }\n    const otherViewerNumber = documentViewerKey === 1 ? 2 : 1;\n    if (syncState.current.currentScrollContainer !== otherViewerNumber) {\n      syncState.current.currentScrollContainer = documentViewerKey;\n      const diffTop = scrollTop - syncState.current[`scrollTop${documentViewerKey}`];\n      const diffLeft = scrollLeft - syncState.current[`scrollLeft${documentViewerKey}`];\n      const otherContainer = otherViewerNumber === 1 ? container.current : container2.current;\n      const topOverflow = otherContainer.scrollTop + diffTop;\n      const bottomOverflow = otherContainer.scrollHeight - otherContainer.scrollTop - diffTop - otherContainer.clientHeight;\n      if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED && multiViewerHelper.matchedPages) {\n        const { matchedPages } = multiViewerHelper;\n        const documentViewer = core.getDocumentViewer(documentViewerKey);\n        const otherDocumentViewer = core.getDocumentViewer(otherViewerNumber);\n        const visiblePages = documentViewer.getDisplayModeManager().getDisplayMode().getVisiblePages();\n        const mainPage = visiblePages[0];\n        if (matchedPages[documentViewerKey][mainPage]) {\n          const { otherSidePages, thisSidePages } = matchedPages[documentViewerKey][mainPage];\n          const mainPageBoundingRect = documentViewer.getViewerElement().querySelector(`#pageContainer${thisSidePages[0]}`)?.getBoundingClientRect();\n          const otherSidePageBoundingRect = otherDocumentViewer.getViewerElement()\n            .querySelector(`#pageContainer${otherSidePages[0]}`)?.getBoundingClientRect();\n          const scrollRatio = otherSidePages.length / thisSidePages.length;\n          const heightRatio = otherSidePageBoundingRect && mainPageBoundingRect ? otherSidePageBoundingRect.height / mainPageBoundingRect.height : 1;\n          const currentDiffTop = otherSidePageBoundingRect && mainPageBoundingRect ? otherSidePageBoundingRect.top - mainPageBoundingRect.top : diffTop;\n          const adjustedDiffTop = (scrollRatio !== 1 ? diffTop : currentDiffTop) * scrollRatio * heightRatio;\n          otherContainer.scrollTop += adjustedDiffTop;\n        } else {\n          const visiblePageOtherSide = otherDocumentViewer.getDisplayModeManager().getDisplayMode().getVisiblePages();\n          const otherMainPage = visiblePageOtherSide[0];\n          const secondaryPage = visiblePageOtherSide[1];\n          if (!matchedPages[otherViewerNumber][otherMainPage] || (secondaryPage && !matchedPages[otherViewerNumber][secondaryPage])) {\n            otherContainer.scrollTop += diffTop;\n          }\n        }\n      } else {\n        if (topOverflow < 0) {\n          syncState.current[`topOverflow${otherViewerNumber}`] += topOverflow;\n          otherContainer.scrollTop += diffTop;\n        } else if (bottomOverflow < 0) {\n          syncState.current[`topOverflow${otherViewerNumber}`] -= bottomOverflow;\n          otherContainer.scrollTop += diffTop;\n        } else {\n          const isTopOverflowPositive = syncState.current[`topOverflow${otherViewerNumber}`] > 0;\n          const isDiffTopPositive = diffTop > 0;\n          const isZero = diffTop === 0 || syncState.current[`topOverflow${otherViewerNumber}`] === 0;\n          if (isDiffTopPositive !== isTopOverflowPositive && !isZero) {\n            syncState.current[`topOverflow${otherViewerNumber}`] += diffTop;\n            if (syncState.current[`topOverflow${otherViewerNumber}`] > 0 !== isTopOverflowPositive) {\n              otherContainer.scrollTop += syncState.current[`topOverflow${otherViewerNumber}`];\n              syncState.current[`topOverflow${otherViewerNumber}`] = 0;\n            }\n          } else {\n            otherContainer.scrollTop += diffTop - syncState.current[`topOverflow${documentViewerKey}`];\n            syncState.current[`topOverflow${documentViewerKey}`] = 0;\n            otherContainer.scrollLeft += diffLeft;\n          }\n        }\n      }\n    } else {\n      syncState.current.currentScrollContainer = null;\n    }\n    syncState.current[`scrollTop${documentViewerKey}`] = scrollTop;\n    syncState.current[`scrollLeft${documentViewerKey}`] = scrollLeft;\n  };\n  const onZoomHandler = (zoomLevel) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    for (const documentViewerKey of documentViewerKeys) {\n      if (core.getZoom(documentViewerKey) !== zoomLevel) {\n        zoomTo(zoomLevel, isMultiViewerMode, documentViewerKey);\n      }\n      const containerRef = (documentViewerKey === 1 ? container : container2).current;\n      syncState.current[`scrollTop${documentViewerKey}`] = containerRef.scrollTop;\n      syncState.current[`scrollLeft${documentViewerKey}`] = containerRef.scrollLeft;\n    }\n  };\n  const createOnPageUpdateHandler = (documentViewerKey) => (nextPage) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    const otherViewerNumber = documentViewerKey === 1 ? 2 : 1;\n    if (syncState.current.currentScrollContainer !== otherViewerNumber) {\n      syncState.current.currentScrollContainer = documentViewerKey;\n      const diff = nextPage - syncState.current[`page${documentViewerKey}`];\n      const newPage2 = core.getCurrentPage(otherViewerNumber) + diff;\n      core.setCurrentPage(newPage2, otherViewerNumber);\n    } else {\n      syncState.current.currentScrollContainer = null;\n    }\n    syncState.current[`page${documentViewerKey}`] = nextPage;\n  };\n  const startSyncing = (primaryDocumentViewerKey) => {\n    setIsSyncing(true);\n    const zoomLevel = core.getZoom(primaryDocumentViewerKey);\n    if (primaryDocumentViewerKey === 1) {\n      zoomTo(zoomLevel, isMultiViewerMode, 2);\n    } else if (primaryDocumentViewerKey === 2) {\n      zoomTo(zoomLevel, isMultiViewerMode, 1);\n    }\n    const isScrollable = core.getDocumentViewer().getDisplayModeManager().getDisplayMode().isContinuous();\n    for (const documentViewerKey of documentViewerKeys) {\n      core.addEventListener('zoomUpdated', onZoomHandler, undefined, documentViewerKey);\n      removeHandlerFunctions.current.push(() => core.removeEventListener('zoomUpdated', onZoomHandler, documentViewerKey));\n      if (isScrollable) {\n        const onScrollHandler = createOnScrollHandler(documentViewerKey);\n        const containerRef = documentViewerKey === 1 ? container.current : container2.current;\n        containerRef.addEventListener('scroll', onScrollHandler);\n        removeHandlerFunctions.current.push(() => containerRef.removeEventListener('scroll', onScrollHandler));\n      } else {\n        const onPageUpdatedHandler = createOnPageUpdateHandler(documentViewerKey);\n        core.addEventListener('pageNumberUpdated', onPageUpdatedHandler, undefined, documentViewerKey);\n        removeHandlerFunctions.current.push(() => core.removeEventListener('pageNumberUpdated', onPageUpdatedHandler, documentViewerKey));\n      }\n    }\n\n    if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED) {\n      container.current.scrollTop = 0;\n      container2.current.scrollTop = 0;\n    }\n\n    syncState.current = {\n      scrollTop1: container.current.scrollTop,\n      scrollLeft1: container.current.scrollLeft,\n      scrollTop2: container2.current.scrollTop,\n      scrollLeft2: container2.current.scrollLeft,\n      topOverflow1: 0,\n      topOverflow2: 0,\n      page1: core.getCurrentPage(1),\n      page2: core.getCurrentPage(2),\n    };\n\n    if (customMultiViewerSyncHandler) {\n      customMultiViewerSyncHandler(primaryDocumentViewerKey, removeHandlerFunctions.current);\n    }\n  };\n  const stopSyncing = () => {\n    setIsSyncing(false);\n    syncState.current.topOverflow1 = 0;\n    syncState.current.topOverflow2 = 0;\n    removeHandlerFunctions.current.forEach((removeHandler) => removeHandler());\n    removeHandlerFunctions.current = [];\n  };\n\n  useEffect(() => {\n    if (isMultiViewerMode) {\n      if (syncViewer && !isSyncing) {\n        startSyncing(syncViewer);\n      } else if (!syncViewer && isSyncing) {\n        stopSyncing();\n      }\n    }\n  }, [syncViewer]);\n\n  const onReady = (key) => {\n    readyState.current[key] = true;\n    if (readyState.current[1] && readyState.current[2] && readyState.current.viewer && !readyState.current.eventFired) {\n      readyState.current.eventFired = true;\n      // Fix for event not firing on some devices\n      setTimeout(() => {\n        fireEvent(Events.MULTI_VIEWER_READY);\n      }, 300);\n    }\n  };\n\n  return (\n    <div className={classNames('MultiViewer', { hidden: !isMultiViewerMode })} style={{\n      width: documentContentContainerWidthStyle,\n      marginLeft: `${documentContainerLeftMargin}px`,\n    }}\n    ref={rootContainerRef}\n    >\n      {isMultiViewerMode && initialSetup && <>\n        <div className={classNames('CompareContainer', { active: activeDocumentViewerKey === 1 })} id=\"container1\"\n          style={{ padding: !doc1Loaded ? '16px' : '0', width }}\n          onClick={setFirstViewerActive}\n          onScroll={() => !isSyncing && setFirstViewerActive()}\n        >\n          {!doc1Loaded && <DropArea documentViewerKey={1} />}\n          <DocumentHeader documentViewerKey={1} docLoaded={doc1Loaded} isSyncing={isSyncing}/>\n          <DocumentContainer container={container} activeDocumentViewerKey={activeDocumentViewerKey} documentViewerKey={1} onReady={onReady} docLoaded={doc1Loaded}/>\n          <div className={'custom-container-1'} style={{ width: '100%' }}/>\n          <div style={{ width }} className={classNames('borderLineBottom', { active: activeDocumentViewerKey === 1 })} />\n        </div>\n        <ResizeBar\n          dataElement=\"compareResizeBar\"\n          minWidth={MIN_WIDTH}\n          onResize={(_width) => {\n            let maxAllowedWidth = documentContainerWidth;\n            maxAllowedWidth -= MIN_WIDTH;\n            const minValue = Math.min(_width, maxAllowedWidth);\n            setWidth(minValue);\n            setWidth2(documentContainerWidth - minValue);\n          }}\n        />\n        <div className={classNames('CompareContainer', { active: activeDocumentViewerKey === 2 })} id=\"container2\"\n          style={{ padding: !doc2Loaded ? '16px' : '0', width: width2 }}\n          onClick={setSecondViewerActive}\n          onScroll={() => !isSyncing && setSecondViewerActive()}\n        >\n          {!doc2Loaded && <DropArea documentViewerKey={2} />}\n          <DocumentHeader documentViewerKey={2} docLoaded={doc2Loaded} isSyncing={isSyncing} />\n          <DocumentContainer container={container2} activeDocumentViewerKey={activeDocumentViewerKey} documentViewerKey={2} onReady={onReady} docLoaded={doc2Loaded}/>\n          <div className={'custom-container-2'} style={{ width: '100%' }}/>\n          <div style={{ width: width2 }} className={classNames('borderLineBottom', { active: activeDocumentViewerKey === 2 })} />\n        </div>\n        <CompareZoomOverlay zoom1={zoom} zoom2={zoom2} />\n      </>}\n    </div>\n  );\n};\n\nexport default MultiViewer;\n","import MultiViewer from 'src/components/MultiViewer/MultiViewer';\n\nexport default MultiViewer;","import React, { useCallback } from 'react';\nimport './ChangeListItem.scss';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport core from 'core';\nimport selectors from 'selectors/index';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport { setIsScrolledByClickingChangeItem } from 'helpers/multiViewerHelper';\n\nconst propTypes = {\n  oldText: PropTypes.string,\n  newText: PropTypes.string,\n  oldCount: PropTypes.number,\n  newCount: PropTypes.number,\n  type: PropTypes.string,\n  old: PropTypes.object,\n  new: PropTypes.object,\n};\n\nconst ChangeListItem = (props) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [syncViewer] = useSelector((state) => [\n    selectors.getSyncViewer(state),\n  ]);\n\n  const onClickItem = useCallback(() => {\n    setIsScrolledByClickingChangeItem(true);\n    if (props.old && props.new && props.old.getPageNumber() !== props.new.getPageNumber()) {\n      dispatch(actions.setSyncViewer(null));\n    }\n    for (const annotation of [props.old, props.new]) {\n      const viewerNumber = annotation === props.old ? 1 : 2;\n      if (!annotation) {\n        continue;\n      }\n      core.getDocumentViewer(viewerNumber).getAnnotationManager().deselectAllAnnotations();\n      core.jumpToAnnotation(annotation, viewerNumber);\n      core.getDocumentViewer(viewerNumber).getAnnotationManager().selectAnnotation(annotation);\n    }\n  }, [syncViewer]);\n\n  return (\n    <div className=\"ChangeListItem\" onClick={onClickItem}>\n      <div className=\"icon-change\">\n        <Icon glyph=\"icon-compare-change\" />\n      </div>\n      <div className=\"container-right\">\n        <div className=\"title\">{t('multiViewer.comparePanel.change')}</div>\n        <div className=\"type\">{props.type}</div>\n        {props.old && <div className=\"value-container old\">\n          <div className=\"value-title\">\n            <div>{t('multiViewer.comparePanel.old')}</div>\n            <div>-{props.oldCount}</div>\n          </div>\n          <div className=\"text\">{props.oldText}</div>\n        </div>}\n        {props.new && <div className=\"value-container new\">\n          <div className=\"value-title\">\n            <div>{t('multiViewer.comparePanel.new')}</div>\n            <div>+{props.newCount}</div>\n          </div>\n          <div className=\"text\">{props.newText}</div>\n        </div>}\n      </div>\n    </div>\n  );\n};\n\nChangeListItem.propTypes = propTypes;\n\nexport default ChangeListItem;\n","import ChangeListItem from './ChangeListItem';\n\nexport default ChangeListItem;","import React, { useEffect, useRef, useState } from 'react';\nimport './ComparePanel.scss';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport Events from 'constants/events';\nimport ChangeListItem from 'components/MultiViewer/ComparePanel/ChangeListItem';\nimport core from 'core';\nimport throttle from 'lodash/throttle';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\nimport multiViewerHelper from 'helpers/multiViewerHelper';\nimport fireEvent from 'helpers/fireEvent';\nimport actions from 'actions';\nimport DataElements from 'src/constants/dataElement';\nimport { panelMinWidth } from 'constants/panel';\n\nconst specialChar = /([!@#$%^&*()+=\\[\\]\\\\';,./{}|\":<>?~_-])/gm;\n\nconst ComparePanel = ({\n  dataElement = 'comparePanel',\n  // For storybook tests\n  initialChangeListData = {},\n  initialTotalChanges = 0,\n}) => {\n  const dispatch = useDispatch();\n  const { t } = useTranslation();\n  const isMobile = isMobileSize();\n  const [\n    isOpen,\n    currentWidth,\n    isInDesktopOnlyMode,\n    isComparisonOverlayEnabled,\n    multiViewerSyncScrollMode,\n  ] = useSelector((state) => [\n    selectors.isElementOpen(state, dataElement),\n    selectors.getComparePanelWidth(state),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.getIsComparisonOverlayEnabled(state),\n    selectors.getMultiViewerSyncScrollMode(state),\n  ]);\n  const isCustom = dataElement !== 'comparePanel';\n  const panelWidth = !isCustom ? currentWidth : panelMinWidth - 32;\n  const [searchValue, setSearchValue] = React.useState('');\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${panelWidth}px`, minWidth: `${panelWidth}px` };\n  const changeListData = useRef(initialChangeListData);\n  const [totalChanges, setTotalChanges] = useState(initialTotalChanges);\n  const [filteredListData, setFilteredListData] = useState(initialChangeListData);\n  const filterfuncRef = useRef(\n    throttle(\n      (searchValue) => {\n        if (!changeListData.current) {\n          return [];\n        }\n        if (!searchValue) {\n          setFilteredListData(changeListData.current);\n          return;\n        }\n        searchValue = searchValue.replace(specialChar, '\\\\$&');\n        const keys = Object.keys(changeListData.current);\n        const newData = {};\n        for (const key of keys) {\n          for (const item of changeListData.current[key]) {\n            if (\n              item.oldText?.toLowerCase().match(searchValue.toLowerCase()) ||\n              item.newText?.toLowerCase().match(searchValue.toLowerCase())\n            ) {\n              if (!newData[key]) {\n                newData[key] = [];\n              }\n              newData[key].push(item);\n            }\n          }\n        }\n        setFilteredListData(newData);\n      },\n      100,\n      { leading: true },\n    ),\n  );\n\n  useEffect(() => {\n    const updatePanelItems = (doc1Annotations, doc2Annotations, diffCount) => {\n      dispatch(actions.setIsCompareStarted(true));\n      dispatch(actions.enableElement('comparePanelToggleButton'));\n      dispatch(actions.openElement(DataElements.LOADING_MODAL));\n      const annotMap = {};\n      if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED) {\n        const doc1AnnotationsClone = [...doc1Annotations];\n        const doc2AnnotationsClone = [...doc2Annotations];\n        const annotationMatches1 = [];\n        const annotationMatches2 = [];\n        while (doc1AnnotationsClone.length || doc2AnnotationsClone.length) {\n          const annotation = doc1AnnotationsClone[0] || doc2AnnotationsClone[0];\n          const ids = [annotation.getCustomData('TextDiffID')];\n          const pageNumbers1 = [];\n          const pageNumbers2 = [];\n          const side1Annotations = [];\n          const side2Annotations = [];\n          const checkIfAnnotionMatches1 = (annotation) => ids.includes(annotation.getCustomData('TextDiffID')) || pageNumbers1.includes(annotation.PageNumber);\n          const checkIfAnnotionMatches2 = (annotation) => ids.includes(annotation.getCustomData('TextDiffID')) || pageNumbers2.includes(annotation.PageNumber);\n          let added = false;\n          do {\n            added = false;\n            for (const annotation of doc1AnnotationsClone) {\n              if (checkIfAnnotionMatches1(annotation)) {\n                const annotId = annotation.getCustomData('TextDiffID');\n                const annotPageNumber = annotation.PageNumber;\n                !ids.includes(annotId) && ids.push(annotId);\n                !pageNumbers1.includes(annotPageNumber) && pageNumbers1.push(annotation.PageNumber);\n                doc1AnnotationsClone.splice(doc1AnnotationsClone.indexOf(annotation), 1);\n                side1Annotations.push(annotation);\n                added = true;\n              }\n            }\n            for (const annotation of doc2AnnotationsClone) {\n              if (checkIfAnnotionMatches2(annotation)) {\n                const annotId = annotation.getCustomData('TextDiffID');\n                const annotPageNumber = annotation.PageNumber;\n                !ids.includes(annotId) && ids.push(annotId);\n                !pageNumbers2.includes(annotPageNumber) && pageNumbers2.push(annotation.PageNumber);\n                doc2AnnotationsClone.splice(doc2AnnotationsClone.indexOf(annotation), 1);\n                side2Annotations.push(annotation);\n                added = true;\n              }\n            }\n          } while (added);\n          if (side1Annotations.length && side2Annotations.length) {\n            annotationMatches1.push(side1Annotations);\n            annotationMatches2.push(side2Annotations);\n          }\n        }\n\n        const matchedPages = { 1: {}, 2: {} };\n        for (const i in annotationMatches1) {\n          const doc1Annotations = annotationMatches1[i];\n          const doc2Annotations = annotationMatches2[i];\n          const doc1Pages = Array.from(new Set(doc1Annotations.map((annotation) => annotation.PageNumber)));\n          const doc2Pages = Array.from(new Set(doc2Annotations.map((annotation) => annotation.PageNumber)));\n          for (const pageNumber of doc1Pages) {\n            matchedPages[1][pageNumber] = {\n              otherSidePages: doc2Pages,\n              thisSidePages: doc1Pages,\n            };\n          }\n          for (const pageNumber of doc2Pages) {\n            matchedPages[2][pageNumber] = {\n              otherSidePages: doc1Pages,\n              thisSidePages: doc2Pages,\n            };\n          }\n        }\n        multiViewerHelper.matchedPages = matchedPages;\n      }\n      const matchedIds = [];\n      for (const index in doc1Annotations) {\n        const annotation = doc1Annotations[index];\n        const type = annotation.getCustomData('TextDiffType');\n        const id = annotation.getCustomData('TextDiffID');\n        const otherAnnotations = doc2Annotations.filter((annotation) => annotation?.getCustomData('TextDiffID') === id);\n        if (!otherAnnotations.length) {\n          continue;\n        }\n        if (!matchedIds.includes(id)) {\n          matchedIds.push(id);\n        }\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          new: otherAnnotations[0],\n          newText: otherAnnotations[0]?.Author,\n          newCount: otherAnnotations[0]?.Author?.length,\n          old: annotation,\n          oldText: annotation?.Author,\n          oldCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${type}`)}`,\n        });\n        if (otherAnnotations.length > 1) {\n          for (const i in otherAnnotations) {\n            if (i === '0') {\n              continue;\n            }\n            annotMap[annotation.PageNumber].push({\n              new: otherAnnotations[i],\n              newText: otherAnnotations[i]?.Author,\n              newCount: otherAnnotations[i]?.Author?.length,\n              old: annotation,\n              oldText: annotation?.Author,\n              oldCount: annotation?.Author?.length,\n              type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${type}`)}`,\n            });\n          }\n        }\n      }\n      const unmatchedAnnotations1 = doc1Annotations.filter((annotation) => !matchedIds.includes(annotation.getCustomData('TextDiffID')));\n      const unmatchedAnnotations2 = doc2Annotations.filter((annotation) => !matchedIds.includes(annotation.getCustomData('TextDiffID')));\n      for (const annotation of unmatchedAnnotations1) {\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          old: annotation,\n          oldText: annotation?.Author,\n          oldCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${annotation.getCustomData('TextDiffType')}`)}`,\n        });\n      }\n      for (const annotation of unmatchedAnnotations2) {\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          new: annotation,\n          newText: annotation?.Author,\n          newCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${annotation.getCustomData('TextDiffType')}`)}`,\n        });\n      }\n      for (const pageNumber of Object.keys(annotMap)) {\n        annotMap[pageNumber] = annotMap[pageNumber].sort((a, b) => {\n          if (a?.new?.PageNumber && b?.new?.PageNumber && a?.new?.PageNumber !== b?.new?.PageNumber) {\n            return a?.new?.PageNumber - b?.new?.PageNumber;\n          }\n          const aY = a?.new?.Y || a?.old?.Y;\n          const bY = b?.new?.Y || b?.old?.Y;\n          if (aY === bY) {\n            return (a?.new?.X || a?.old?.X) - (b?.new?.X || b?.old?.X);\n          }\n          return aY - bY;\n        });\n      }\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      fireEvent(Events.COMPARE_ANNOTATIONS_LOADED, { annotMap, diffCount });\n      if (!isComparisonOverlayEnabled) {\n        core.hideAnnotations(core.getSemanticDiffAnnotations(1), 1);\n        core.hideAnnotations(core.getSemanticDiffAnnotations(2), 2);\n      }\n      setTotalChanges(diffCount);\n      changeListData.current = annotMap;\n      setFilteredListData(annotMap);\n    };\n    const resetPanelItems = () => {\n      setTotalChanges(0);\n      changeListData.current = {};\n    };\n    core.addEventListener(Events.COMPARE_ANNOTATIONS_LOADED, updatePanelItems, undefined, 1);\n    core.addEventListener('documentUnloaded', resetPanelItems, undefined, 1);\n    core.addEventListener('documentUnloaded', resetPanelItems, undefined, 2);\n    return () => {\n      core.removeEventListener(Events.COMPARE_ANNOTATIONS_LOADED, updatePanelItems, 1);\n      core.removeEventListener('documentUnloaded', resetPanelItems, 1);\n      core.removeEventListener('documentUnloaded', resetPanelItems, 2);\n    };\n  }, []);\n\n  const renderPageItem = (pageNum) => {\n    const changeListItems = filteredListData[pageNum];\n    return <React.Fragment key={pageNum}>\n      <div className=\"page-number\">{t('multiViewer.comparePanel.page')} {pageNum}</div>\n      {changeListItems.map(((props) => <ChangeListItem\n        key={`${props.new?.Id ?? 'null'}-${props.old?.Id ?? 'null'}`} {...props} />))}\n    </React.Fragment>;\n  };\n\n  const onSearchInputChange = (e) => {\n    const newValue = e.target.value;\n    setSearchValue(newValue);\n    filterfuncRef.current(newValue);\n  };\n\n  const shouldRenderItems = !!(totalChanges && filteredListData && Object.keys(filteredListData).length);\n  return (\n    <DataElementWrapper\n      className={classNames('Panel', 'ComparePanel', { 'open': isOpen })}\n      dataElement={dataElement}\n      style={style}\n    >\n      <div className=\"input-container\">\n        <input\n          type=\"text\"\n          autoComplete=\"off\"\n          value={searchValue}\n          onChange={onSearchInputChange}\n          placeholder={t('multiViewer.comparePanel.Find')}\n          aria-label={t('multiViewer.comparePanel.Find')}\n          id=\"ComparePanel__input\"\n          tabIndex={isOpen ? 0 : -1}\n        />\n      </div>\n      <div className=\"changeListContainer\">\n        <div className=\"changeListTitle\">\n          {t('multiViewer.comparePanel.changesList')} <span>({totalChanges})</span>\n        </div>\n        <div className=\"changeList\">\n          {shouldRenderItems && Object.keys(filteredListData).map((key) => renderPageItem(key))}\n        </div>\n      </div>\n    </DataElementWrapper>\n  );\n};\n\nexport default ComparePanel;\n","import ComparePanel from './ComparePanel';\n\nexport default ComparePanel;","import React from 'react';\n\nconst TextWatermarkPanel = () => {\n  return (\n    <>\n    </>\n  );\n};\n\nexport default TextWatermarkPanel;","import React from 'react';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\n\nconst WatermarkList = (props) => {\n  const {\n    watermarks = [],\n    // deleteWatermark,\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <span className=\"watermark-panel-sub-header\">{t('watermarkPanel.watermarks')}</span>\n      { watermarks.map((watermark) => (\n        <div className=\"watermark-file\" key={watermark.name}>\n          { watermark.type === 'image' && <Icon glyph=\"icon-image-green\" />}\n          { watermark.name }\n          <Icon glyph=\"ic-close\" />\n          {}\n        </div>\n      ))}\n    </>\n  );\n};\n\nexport default WatermarkList;","import React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\n\nimport WatermarkList from './WatermarkList';\n\nconst ImageWatermarkPanel = () => {\n  const { t } = useTranslation();\n  const fileInput = useRef(null);\n\n  const documentViewer = core.getDocumentViewer(1);\n  const annotationManager = documentViewer?.getAnnotationManager();\n\n  const onAddButtonClick = () => {\n    fileInput.current.click();\n  };\n\n  const loadFile = (e) => {\n    const pageCount = documentViewer?.getPageCount();\n    const document = documentViewer?.getDocument();\n\n    e.preventDefault();\n    const { files } = e.target;\n    if (files.length) {\n      Array.from(files).forEach((file) => {\n        const reader = new FileReader();\n        reader.readAsDataURL(file);\n        reader.onload = async () => {\n          for (let page = 1; page <= pageCount; page++) {\n            const { width, height } = document?.getPageInfo(page);\n            const imageWatermark = new window.Core.Annotations.StampAnnotation({\n              PageNumber: page,\n              X: width / 2,\n              Y: height / 2,\n              Width: 25,\n              Height: 25,\n            });\n\n            await imageWatermark.setImageData(reader.result);\n            annotationManager?.addAnnotation(imageWatermark);\n            annotationManager?.redrawAnnotation(imageWatermark);\n          }\n        };\n      });\n    }\n  };\n\n  return (\n    <>\n      <WatermarkList />\n      <button className=\"add-watermark-button\" onClick={onAddButtonClick}>\n        {t('watermarkPanel.browse')}\n      </button>\n      <input\n        ref={fileInput}\n        className=\"hidden\"\n        type=\"file\"\n        onChange={loadFile}\n        accept=\"image/*\"\n      />\n    </>\n  );\n};\n\nexport default ImageWatermarkPanel;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from '../DataElementWrapper';\nimport DataElements from 'constants/dataElement';\n\nimport './WatermarkPanel.scss';\nimport TextWatermarkPanel from './TextWatermarkPanel';\nimport ImageWatermarkPanel from './ImageWatermarkPanel';\n\nconst tabs = [\n  {\n    type: 'text',\n    text: 'textWatermark',\n    dataElement: DataElements.WATERMARK_PANEL_TEXT_TAB,\n  },\n  {\n    type: 'image',\n    text: 'uploadImage',\n    dataElement: DataElements.WATERMARK_PANEL_IMAGE_TAB,\n  }\n];\n\nconst WatermarkPanelHeader = (props) => {\n  const {\n    activeWatermarkType,\n    setActiveWatermarkType\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <div className=\"watermark-panel-tabs\">\n        { tabs.map((tab) => (\n          <DataElementWrapper\n            dataElement={tab.dataElement} key={tab.type}\n            className={`watermark-panel-tab ${activeWatermarkType === tab.type ? 'active' : ''}`}\n            onClick={() => {\n              setActiveWatermarkType(tab.type);\n            }}\n          >\n            {t(`watermarkPanel.${tab.text}`)}\n          </DataElementWrapper>\n        ))}\n      </div>\n    </>\n  );\n};\n\nconst WatermarkPanel = () => {\n  const [activeWatermarkType, setActiveWatermarkType] = useState(tabs[0].type);\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <span className=\"watermark-panel-header\">{t('watermarkPanel.watermarkOptions')}</span>\n      <WatermarkPanelHeader\n        activeWatermarkType={activeWatermarkType}\n        setActiveWatermarkType={setActiveWatermarkType}\n      />\n      { activeWatermarkType === 'text' && <TextWatermarkPanel/>}\n      { activeWatermarkType === 'image' && <ImageWatermarkPanel/>}\n    </>\n  );\n};\n\nexport default WatermarkPanel;","import React from 'react';\nimport WatermarkPanel from './WatermarkPanel';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\n\nexport const WatermarkPanelContainer = () => {\n  const [isOpen, isDisabled, watermarkPanelWidth, isInDesktopOnlyMode] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'watermarkPanel'),\n      selectors.isElementDisabled(state, 'watermarkPanel'),\n      selectors.getWatermarkPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  const dispatch = useDispatch();\n  const closeWatermarkPanel = () => {\n    dispatch(actions.closeElement('watermarkPanel'));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeWatermarkPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  const style =\n    !isInDesktopOnlyMode && isMobile ? {} : { width: `${watermarkPanelWidth}px`, minWidth: `${watermarkPanelWidth}px` };\n\n  if (isDisabled || !isOpen) {\n    return null;\n  }\n  return (\n    <DataElementWrapper dataElement=\"watermarkPanel\" className=\"Panel WatermarkPanel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      <WatermarkPanel />\n    </DataElementWrapper>\n  );\n};\n\nexport default WatermarkPanelContainer;","import WatermarkPanel from './WatermarkPanelContainer';\n\nexport default WatermarkPanel;","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport Icon from 'components/Icon';\nimport actions from 'actions';\nimport './Panel.scss';\nimport { panelMinWidth } from 'constants/panel';\n\nconst Panel = (props) => {\n  const isMobile = isMobileSize();\n\n  const [\n    currentWidth,\n    isInDesktopOnlyMode,\n    isOpen,\n    isDisabled,\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isLogoBarEnabled,\n    featureFlags,\n    topHeaders,\n  ] = useSelector(\n    (state) => [\n      selectors.getPanelWidth(state, props.dataElement),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.isElementOpen(state, props.dataElement),\n      selectors.isElementDisabled(state, props.dataElement),\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      !selectors.isElementDisabled(state, 'logoBar'),\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeaders(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  let style = {};\n  if (currentWidth && (isInDesktopOnlyMode || !isMobile)) {\n    style = { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n  } else {\n    style = { minWidth: `${panelMinWidth}px` };\n  }\n  const isVisible = !(!isOpen || isDisabled);\n  const isLeftSide = !props.location ? true : props.location === 'left';\n  const isRightSide = props.location === 'right';\n\n  // TODO: For whoever is refactoring the LeftPanel to make it generic, review if this is the best approach\n  // Once we move to the new UI we can remove the legacy stuff\n  const legacyToolsHeaderOpen = isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View';\n  const legacyAllHeadersHidden = !isHeaderOpen && !legacyToolsHeaderOpen;\n\n  const customizableUI = featureFlags?.customizableUI;\n\n  return (\n    <div\n      className={classNames({\n        'flx-Panel': true,\n        'closed': !isVisible,\n        'left': isLeftSide,\n        'right': isRightSide,\n        'tools-header-open': customizableUI ? topHeaders.length === 2 : legacyToolsHeaderOpen,\n        'tools-header-and-header-hidden': customizableUI ? topHeaders.length === 0 : legacyAllHeadersHidden,\n        'logo-bar-enabled': isLogoBarEnabled,\n      })}\n      data-element={props.dataElement}\n    >\n      <div className=\"flx-Panel-container\" style={style}>\n        {!isInDesktopOnlyMode && isMobile && (\n          <div className=\"close-container\">\n            <div\n              className=\"close-icon-container\"\n              onClick={() => {\n                dispatch(actions.closeElements([props.dataElement]));\n              }}\n            >\n              <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n            </div>\n          </div>\n        )}\n        {props.children}\n      </div>\n    </div>\n  );\n};\n\nexport default Panel;\n","import Panel from './Panel';\n\nexport default Panel;","import React from 'react';\nimport '../../Button/Button.scss';\nimport './CustomButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\n\nconst CustomButton = (props) => {\n  const { title, dataElement, label, img, onClick, disabled, className, preset, headerPlacement } = props;\n  let forceTooltipPosition;\n  if (['left', 'right'].includes(headerPlacement)) {\n    forceTooltipPosition = headerPlacement === 'left' ? 'right' : 'left';\n  }\n  return (\n    <Button\n      className={classNames({\n        'CustomButton': true,\n        'Button': true,\n        [className]: className,\n        'confirm-button': preset === 'confirm',\n        'cancel-button': preset === 'cancel'\n      })}\n      img={img}\n      label={label}\n      title={title}\n      data-element={dataElement}\n      onClick={onClick}\n      disabled={disabled}\n      forceTooltipPosition={forceTooltipPosition}\n    ></Button>\n  );\n};\n\nCustomButton.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  label: PropTypes.string,\n  img: PropTypes.string,\n  onClick: PropTypes.func,\n  disabled: PropTypes.bool,\n};\n\nexport default CustomButton;\n","import CustomButton from './CustomButton';\n\nexport default CustomButton;","import React, { useEffect } from 'react';\nimport '../../Button/Button.scss';\nimport './StatefulButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\n\nconst StatefulButton = (props) => {\n  const { dataElement, disabled, mount, unmount, states } = props;\n  const [, updateState] = React.useState();\n  const forceUpdate = React.useCallback(() => updateState({}), []);\n\n  const [activeState, setActiveState] = React.useState(props.initialState);\n\n  useEffect(() => {\n    if (mount) {\n      mount(update);\n    }\n    return function() {\n      if (unmount) {\n        unmount();\n      }\n    };\n  });\n\n  const update = (newState) => {\n    if (newState) {\n      setActiveState(newState);\n    } else {\n      forceUpdate();\n    }\n  };\n\n  const onClick = () => {\n    const { dispatch } = props;\n\n    states[activeState].onClick(\n      update,\n      states[activeState],\n      dispatch,\n    );\n  };\n\n  const { title, img, getContent, isActive } = states[activeState];\n  const content = getContent ? getContent(states[activeState]) : '';\n  const className = [\n    'StatefulButton',\n    states[activeState].className ? states[activeState].className : '',\n  ].join(' ').trim();\n\n  return (\n    <Button\n      className={classNames({\n        'CustomButton': true,\n        'Button': true,\n        [className]: className\n      })}\n      isActive={isActive && isActive(props)}\n      img={img}\n      label={content}\n      title={title}\n      data-element={dataElement}\n      onClick={onClick}\n      disabled={disabled}\n    ></Button>\n  );\n};\n\nStatefulButton.propTypes = {\n  initialState: PropTypes.string.isRequired,\n  mount: PropTypes.func.isRequired,\n  unmount: PropTypes.func,\n  states: PropTypes.shape({\n    activeState: PropTypes.shape({\n      img: PropTypes.string,\n      label: PropTypes.string,\n      onClick: PropTypes.func.isRequired,\n      title: PropTypes.string.isRequired,\n      getContent: PropTypes.func.isRequired,\n    }),\n    AnotherState: PropTypes.shape({\n      img: PropTypes.string,\n      label: PropTypes.string,\n      onClick: PropTypes.func.isRequired,\n      title: PropTypes.string.isRequired,\n      getContent: PropTypes.func.isRequired,\n    }),\n  }),\n};\n\nexport default React.memo(StatefulButton);\n","import StatefulButton from './StatefulButton';\n\nexport default StatefulButton;","import React, { useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport './GroupedItems.scss';\nimport InnerItem from '../InnerItem/InnerItem';\nimport { JUSTIFY_CONTENT, ITEM_TYPE, DEFAULT_GAP } from 'constants/customizationVariables';\nimport actions from 'actions';\n\nconst GroupedItems = (props) => {\n  const {\n    dataElement,\n    items,\n    headerDirection,\n    gap = DEFAULT_GAP,\n    justifyContent = JUSTIFY_CONTENT.START,\n    grow = 0,\n    alwaysVisible = false,\n    style,\n  } = props;\n  const dispatch = useDispatch();\n  const [itemsGap, setItemsGap] = useState(gap);\n  const itemValidTypes = Object.values(ITEM_TYPE);\n  const validItems = items?.filter((item) => {\n    const itemType = item.type || item.props.type;\n    return itemValidTypes.includes(itemType);\n  });\n\n  useEffect(() => {\n    if (alwaysVisible) {\n      dispatch(actions.setFixedGroupedItems(dataElement));\n    }\n  }, []);\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  if (validItems && validItems.length) {\n    return (\n      <div className={'GroupedItems'}\n        data-element={dataElement}\n        style={{\n          gap: `${itemsGap}px`,\n          flexDirection: headerDirection,\n          justifyContent: justifyContent,\n          flexGrow: grow,\n          ...style,\n        }}>\n        {\n          validItems.map((item) => {\n            const itemProps = item.props || item;\n            return <InnerItem key={`${dataElement}-${itemProps.dataElement}`} {...itemProps} headerDirection={headerDirection} />;\n          })\n        }\n      </div>);\n  }\n  return null;\n};\n\nGroupedItems.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n  overflowLabel: PropTypes.string,\n  gap: PropTypes.number,\n  headerDirection: PropTypes.string\n};\n\nexport default GroupedItems;","import Divider from './Divider';\n\nexport default Divider;","import React from 'react';\nimport classNames from 'classnames';\nimport './Divider.scss';\n\nconst Divider = ({ headerDirection }) => {\n  const className = classNames('Divider', `${headerDirection}`);\n\n  return (\n    <div className={className} />\n  );\n};\n\nexport default Divider;","import React, { useEffect } from 'react';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\nimport { JUSTIFY_CONTENT, DIRECTION } from 'constants/customizationVariables';\n\nimport './RibbonItem.scss';\n\n\nconst RibbonItem = (props) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const {\n    dataElement,\n    title,\n    disabled,\n    img,\n    label,\n    toolbarGroup,\n    groupedItems = [],\n    direction,\n    justifyContent,\n    isFlyoutItem,\n    iconDOMElement\n  } = props;\n  const [currentToolbarGroup] = useSelector((state) => [\n    selectors.getCurrentToolbarGroup(state),\n  ]);\n\n  useEffect(() => {\n    if (currentToolbarGroup === toolbarGroup) {\n      const activeGroups = groupedItems.map((item) => item?.dataElement);\n      dispatch(actions.setCurrentGroupedItem(activeGroups));\n    }\n  }, []);\n\n  const isActive = currentToolbarGroup === toolbarGroup;\n\n  const onClick = () => {\n    if (!isActive) {\n      dispatch(actions.setToolbarGroup(toolbarGroup));\n      const activeGroups = groupedItems.map((item) => item?.dataElement);\n      dispatch(actions.setCurrentGroupedItem(activeGroups));\n    }\n  };\n\n  return (\n    isFlyoutItem ?\n      (\n        <div className=\"menu-container\" onClick={onClick}>\n          <div className=\"icon-label-wrapper\">\n            {iconDOMElement}\n            {label && <div className=\"flyout-item-label\">{t(label)}</div>}\n          </div>\n        </div>\n      ) :\n      (\n        <div className={classNames({\n          'RibbonItem': true,\n          'vertical': direction === DIRECTION.COLUMN,\n          'horizontal': direction === DIRECTION.ROW,\n          'left': justifyContent !== JUSTIFY_CONTENT.END,\n          'right': justifyContent === JUSTIFY_CONTENT.END,\n        })}\n        >\n          <Button\n            isActive={isActive}\n            dataElement={dataElement}\n            img={img}\n            label={label}\n            title={title}\n            onClick={onClick}\n            disabled={disabled}\n          >\n          </Button>\n        </div>\n      )\n  );\n};\n\nRibbonItem.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  disabled: PropTypes.bool,\n  img: PropTypes.string,\n  label: PropTypes.string,\n  getCurrentToolbarGroup: PropTypes.func,\n  toolbarGroup: PropTypes.string,\n  groupedItems: PropTypes.array,\n  direction: PropTypes.string,\n  justifyContent: PropTypes.string,\n  isFlyoutItem: PropTypes.bool,\n  iconDOMElement: PropTypes.any,\n};\n\nexport default RibbonItem;\n","import RibbonItem from './RibbonItem';\n\nexport default RibbonItem;","import React from 'react';\nimport Dropdown from 'components/Dropdown';\n\nimport './FlexDropdown.scss';\n\nconst FlexDropdown = (props) => {\n  return (\n    <Dropdown {...props} className={`FlexDropdown ${props.direction}`} />\n  );\n};\n\nexport default FlexDropdown;","import FlexDropdown from './FlexDropdown';\n\nexport default FlexDropdown;","import React, { useEffect, useRef, useState } from 'react';\nimport selectors from 'selectors';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport PropTypes from 'prop-types';\nimport './ToggleElementButton.scss';\nimport Button from 'components/Button';\n\nconst ToggleElementButton = (props) => {\n  const buttonRef = useRef();\n  const { dataElement, title, disabled, img, label, toggleElement, onFlyoutToggled = null } = props;\n  const [isActive, flyoutMap] = useSelector((state) => [\n    selectors.isElementOpen(state, toggleElement),\n    selectors.getFlyoutMap(state),\n  ]);\n\n  const [isElementActive, setIsElementActive] = useState(isActive);\n\n  useEffect(() => {\n    setIsElementActive(isActive);\n  }, [isActive]);\n\n  const dispatch = useDispatch();\n\n  const onClick = () => {\n    if (flyoutMap[toggleElement]) {\n      if (onFlyoutToggled) {\n        onFlyoutToggled();\n      } else {\n        dispatch(actions.setFlyoutToggleElement(dataElement));\n      }\n    }\n    dispatch(actions.toggleElement(toggleElement));\n  };\n\n  return (\n    <div className=\"ToggleElementButton\" data-element={dataElement} ref={buttonRef}>\n      <Button\n        isActive={isElementActive}\n        dataElement={dataElement}\n        img={img}\n        label={label}\n        title={title}\n        onClick={onClick}\n        disabled={disabled}\n      >\n        {props.children}\n      </Button>\n    </div>\n  );\n};\n\nToggleElementButton.propTypes = {\n  isActive: PropTypes.bool,\n  closeElement: PropTypes.func,\n  openElement: PropTypes.func,\n};\n\nexport default ToggleElementButton;\n","import ToggleElementButton from './ToggleElementButton';\n\nexport default ToggleElementButton;\n","import React from 'react';\nimport { DIRECTION, JUSTIFY_CONTENT } from 'constants/customizationVariables';\nimport Icon from 'components/Icon';\n\nexport const isThereAvailableSpace = (itemsShown, parentRect, headerDirection, justification) => {\n  const firstItemRect = itemsShown[0]?.getBoundingClientRect();\n  const lastItemRect = itemsShown[itemsShown.length - 1]?.getBoundingClientRect();\n  const isHorizontalHeader = headerDirection === DIRECTION.ROW;\n\n  const lastItemEnd = isHorizontalHeader ? lastItemRect?.right : lastItemRect?.bottom;\n  const parentRectEnd = isHorizontalHeader ? parentRect?.right : parentRect?.bottom;\n  const firstItemStart = isHorizontalHeader ? firstItemRect?.left : firstItemRect?.top;\n  const parentRectStart = isHorizontalHeader ? parentRect?.left : parentRect?.top;\n\n  const availableSpace = justification !== JUSTIFY_CONTENT.END ? (parentRectEnd - lastItemEnd) : (firstItemStart - parentRectStart);\n\n  return availableSpace;\n};\n\nconst removeItemsFromArray = (itemsToRemove, oldArray) => {\n  const arrayBackup = [...oldArray];\n  itemsToRemove.forEach((item) => {\n    const index = oldArray.findIndex((element) => element.sortIndex === item.sortIndex);\n    arrayBackup.splice(index, 1);\n  });\n  return arrayBackup;\n};\n\nexport const getResponsiveItems = (itemsToChange, previousItems, isAdding) => {\n  if (isAdding) {\n    return [...previousItems, ...itemsToChange].sort((a, b) => a.sortIndex - b.sortIndex);\n  }\n  return removeItemsFromArray(itemsToChange, previousItems);\n};\n\nexport const getItemsToHide = (items, itemsDom, missingSpace, headerDirection) => {\n  let spaceToFree = missingSpace;\n  const allItems = [...items];\n  const itemsToHide = [];\n  while (spaceToFree <= 0 && allItems.length > 1) {\n    const lastItem = allItems.pop();\n    itemsToHide.push(lastItem);\n    const lastItemDom = Array.from(itemsDom).find((item) => item.children[0].getAttribute('data-element') === lastItem.dataElement);\n    const lastItemSpace = headerDirection === DIRECTION.ROW ? lastItemDom.getBoundingClientRect().width : lastItemDom.getBoundingClientRect().height;\n    spaceToFree += (lastItemSpace);\n  }\n  return itemsToHide;\n};\n\nexport const getIconDOMElement = (currentItem, allItems) => {\n  const areAllitemsWithoutIcons = allItems.every((item) => !item.icon && !item.img);\n  if (areAllitemsWithoutIcons) {\n    return null;\n  }\n\n  const iconElement = currentItem.icon ? currentItem.icon : currentItem.img;\n  return iconElement ? <Icon className=\"menu-icon\" glyph={iconElement} /> :\n    <div className=\"menu-icon\"></div>;\n};\n\nexport const getSubMenuDOMElement = (currentItem, allItems) => {\n  const areAllitemsWithoutSubMenus = allItems.every((item) => !item.children);\n  if (areAllitemsWithoutSubMenus) {\n    return null;\n  }\n\n  return currentItem.children ? <Icon className=\"icon-open-submenu\" glyph=\"icon-chevron-right\" /> : <div className=\"icon-open-submenu\"></div>;\n};\n","import React, { useState, useEffect, useLayoutEffect, useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport RibbonItem from '../RibbonItem';\nimport Measure from 'react-measure';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport FlexDropdown from '../FlexDropdown';\nimport { ITEM_TYPE, DIRECTION } from 'constants/customizationVariables';\nimport ToggleElementButton from '../ToggleElementButton';\nimport { isThereAvailableSpace, getResponsiveItems, getItemsToHide } from '../Helpers/responsiveness-helper';\n\nimport './RibbonGroup.scss';\n\nconst DEFAULT_DROPDOWN_HEIGHT = 72;\n\nconst validateItems = (items) => {\n  items.filter((item, index) => {\n    const itemType = item.type || item.props.type;\n    if (itemType !== ITEM_TYPE.RIBBON_ITEM) {\n      const dataElement = item.dataElement || item.props.dataElement;\n      console.warn(`${dataElement} is not a valid ribbon item.`);\n    }\n    item.sortIndex = index;\n    return itemType === ITEM_TYPE.RIBBON_ITEM;\n  });\n  return items;\n};\n\nconst RibbonGroup = (props) => {\n  const {\n    dataElement,\n    items,\n    headerDirection,\n    headerPlacement,\n    gap = headerDirection === DIRECTION.COLUMN ? 12 : 20,\n    justifyContent,\n    grow = 0,\n  } = props;\n  const [itemsGap, setItemsGap] = useState(gap);\n  const [ribbonsWidth, setRibbonsWidth] = useState(0);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [ribbonsHeight, setRibbonsHeight] = useState(0);\n  const [containerHeight, setContainerHeight] = useState(0);\n  const [overflowItems, setOverflowItems] = useState([]);\n  const [ribbonItems, setRibbonItems] = useState(\n    validateItems(items)\n  );\n  const [currentToolbarGroup, flyoutMap] = useSelector((state) => [\n    selectors.getCurrentToolbarGroup(state),\n    selectors.getFlyoutMap(state),\n  ]);\n\n  const ribbonsRef = useRef();\n  const containerRef = useRef();\n  const moreButtonRef = useRef();\n\n  const dispatch = useDispatch();\n\n  const FLYOUT_NAME = 'RibbonOverflowFlyout';\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  const moveItemsToOverflow = (items) => {\n    if (items) {\n      setOverflowItems(getResponsiveItems(items, overflowItems, true));\n      setRibbonItems(getResponsiveItems(items, ribbonItems, false));\n    }\n  };\n\n  const moveItemsToRibbon = (items) => {\n    if (items) {\n      setOverflowItems(getResponsiveItems(items, overflowItems, false));\n      setRibbonItems(getResponsiveItems(items, ribbonItems, true));\n    }\n  };\n\n  // Using parent size to determine if overflow is needed.\n  // This could probably be replaced when we have a better way to determine the size of the header items.\n  const parentRect = containerRef?.current?.parentElement?.getBoundingClientRect();\n  const parentWidth = parentRect?.width;\n  const parentHeight = parentRect?.height;\n\n  useLayoutEffect(() => {\n    // close flyout when ribbon groups change so we don't get left with an open empty flyout\n    dispatch(actions.closeElements([FLYOUT_NAME]));\n    const isHorizontalHeader = headerDirection === DIRECTION.ROW;\n    const ribbonItemsShown = ribbonsRef?.current?.getElementsByClassName('RibbonItem');\n    const moreButtonRect = moreButtonRef.current.getBoundingClientRect();\n    const availableSpace = isThereAvailableSpace(ribbonItemsShown, parentRect, headerDirection, justifyContent);\n    const sizeNeededForButton = isHorizontalHeader ? moreButtonRect.width + gap : moreButtonRect.height + gap;\n\n    if (availableSpace < sizeNeededForButton && ribbonItems.length > 1) {\n      let candidateItemsToHide = ribbonItems;\n      if (currentToolbarGroup === ribbonItems.at(-1).toolbarGroup) {\n        // If the last item is the current toolbar group, we don't want to hide it.\n        candidateItemsToHide = ribbonItems.slice(0, -1);\n      }\n      const itemsToHide = getItemsToHide(candidateItemsToHide, ribbonItemsShown, availableSpace, headerDirection);\n      moveItemsToOverflow(itemsToHide);\n    } else if (overflowItems.length > 0) {\n      const shownItems = [].slice.call(ribbonItemsShown);\n      const largestItem = shownItems.reduce((largestItem, item) => {\n        if (isHorizontalHeader) {\n          return largestItem.getBoundingClientRect().width > item.getBoundingClientRect().width ? largestItem : item;\n        }\n        return largestItem.getBoundingClientRect().height > item.getBoundingClientRect().height ? largestItem : item;\n      });\n\n      const spaceForLargestItem = (isHorizontalHeader\n        ? largestItem.getBoundingClientRect().width\n        : largestItem.getBoundingClientRect().height) + gap;\n      if (availableSpace > spaceForLargestItem + sizeNeededForButton) {\n        moveItemsToRibbon([overflowItems[0]]);\n      }\n    }\n\n    setOverflowFlyout();\n  }, [\n    parentWidth,\n    ribbonsWidth,\n    containerWidth,\n    parentHeight,\n    ribbonsHeight,\n    containerHeight,\n    ribbonsRef,\n    containerRef,\n    moreButtonRef,\n  ]);\n\n  const setOverflowFlyout = () => {\n    const RibbonOverflowFlyout = {\n      dataElement: FLYOUT_NAME,\n      className: FLYOUT_NAME,\n      items: getOverflowItems(),\n    };\n    if (flyoutMap[FLYOUT_NAME]) {\n      dispatch(actions.updateFlyout(FLYOUT_NAME, RibbonOverflowFlyout));\n    }\n  };\n\n  const getOverflowItems = () => {\n    const flyoutClosingItems = overflowItems.map((item) => {\n      item.onClick = () => {\n        moveItemsToRibbon([item]);\n        dispatch(actions.closeElements([FLYOUT_NAME]));\n      };\n      return item;\n    });\n    return flyoutClosingItems;\n  };\n\n  const setToolbarGroup = useCallback(\n    (group, pickTool) => {\n      dispatch(actions.setToolbarGroup(group, pickTool));\n    },\n    [dispatch],\n  );\n\n  const renderRibbonItems = () => {\n    return ribbonItems.map((item) => {\n      const itemProps = item.props || item;\n      itemProps.direction = headerDirection;\n      itemProps.justifyContent = justifyContent;\n      return <RibbonItem key={`${dataElement}-${itemProps.dataElement}`} {...itemProps} />;\n    });\n  };\n\n  const getArrowDirection = () => {\n    switch (headerPlacement) {\n      case 'top':\n        return 'down';\n      case 'bottom':\n        return 'up';\n      case 'left':\n        return 'right';\n      case 'right':\n        return 'left';\n    }\n  };\n\n  if (ribbonItems && ribbonItems.length) {\n    return (\n      <>\n        <Measure\n          bounds\n          innerRef={containerRef}\n          onResize={({ bounds }) => {\n            setContainerWidth(bounds.width);\n            setContainerHeight(bounds.height);\n          }}\n        >\n          {({ measureRef }) => (\n            <div ref={measureRef} className={'RibbonGroupContainer'} style={{ flexGrow: grow }}>\n              <Measure\n                bounds\n                innerRef={ribbonsRef}\n                onResize={({ bounds }) => {\n                  setRibbonsWidth(bounds.width);\n                  setRibbonsHeight(bounds.height);\n                }}\n              >\n                {({ measureRef }) => (\n                  <div className={'RibbonGroup__wrapper'} ref={measureRef} data-element={dataElement} style={{ display: 'flex', flexDirection: headerDirection, justifyContent: justifyContent }}>\n                    <div\n                      className={classNames({\n                        'RibbonGroup': true,\n                        'hidden': ribbonItems.length <= 1 && overflowItems.length > 0,\n                      })}\n                      style={{\n                        gap: `${itemsGap}px`,\n                        flexDirection: headerDirection,\n                      }}\n                      onFocus={() => {\n                        setOverflowFlyout();\n                      }}\n                    >\n                      {renderRibbonItems()}\n                      <div\n                        ref={moreButtonRef}\n                        className={classNames({\n                          'RibbonGroup__moreButton': true,\n                          'hidden': overflowItems.length === 0,\n                        })}\n                      >\n                        <ToggleElementButton\n                          dataElement=\"moreRibbonsButton\"\n                          toggleElement={FLYOUT_NAME}\n                          title=\"action.more\"\n                          img=\"icon-tools-more\"\n                        />\n                      </div>\n                    </div>\n                    <div\n                      className={classNames({\n                        'RibbonGroup__dropdown': true,\n                        'hidden': ribbonItems.length > 1 || overflowItems.length === 0,\n                      })}\n                    >\n                      <FlexDropdown\n                        dataElement={`${dataElement}Dropdown`}\n                        width={headerDirection === DIRECTION.COLUMN ? containerWidth : undefined}\n                        height={headerDirection === DIRECTION.COLUMN ? DEFAULT_DROPDOWN_HEIGHT : undefined}\n                        direction={headerDirection}\n                        placement={headerPlacement}\n                        objects={validateItems(items)}\n                        objectKey={'toolbarGroup'}\n                        currentSelectionKey={currentToolbarGroup}\n                        onClickItem={(toolbarGroup) => {\n                          setToolbarGroup(toolbarGroup);\n                        }}\n                        arrowDirection={getArrowDirection()}\n                      />\n                    </div>\n                  </div>\n                )}\n              </Measure>\n            </div>\n          )}\n        </Measure>\n      </>\n    );\n  }\n\n  return null;\n};\n\nRibbonGroup.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n  overflowLabel: PropTypes.string,\n  gap: PropTypes.number,\n  headerDirection: PropTypes.string,\n};\n\nexport default RibbonGroup;\n","import RibbonGroup from './RibbonGroup';\n\nexport default RibbonGroup;","import React from 'react';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport defaultTool from 'constants/defaultTool';\nimport core from 'core';\nimport { shortcutAria } from 'helpers/hotkeysManager';\nimport './ToolGroupButton.scss';\n\nconst ToolGroupButton = (props) => {\n  const {\n    dataElement,\n    title,\n    disabled,\n    img,\n    label,\n    toolGroup,\n    tools,\n    isFlyoutItem,\n    callHandleClick,\n    iconDOMElement,\n    subMenuDOMElement,\n  } = props;\n  const [activeToolGroup, lastPickedToolForGroup] = useSelector((state) => [\n    selectors.getActiveToolGroup(state),\n    selectors.getLastPickedToolForGroup(state, toolGroup),\n  ]);\n\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const isActive = activeToolGroup === toolGroup;\n\n  const shortcutKey = title ? title.slice(title.indexOf('.') + 1) : undefined;\n  const ariaKeyshortcuts = shortcutKey ? shortcutAria(shortcutKey) : undefined;\n\n  const onClick = () => {\n    dispatch(actions.closeElement('toolStylePopup'));\n    if (isActive) {\n      core.setToolMode(defaultTool);\n      dispatch(actions.setActiveToolGroup(''));\n    } else {\n      if (toolGroup === 'signatureTools' || toolGroup === 'rubberStampTools') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolForGroup || tools[0].toolName);\n      }\n      dispatch(actions.setActiveToolGroup(toolGroup));\n      dispatch(actions.openElement('toolsOverlay'));\n    }\n    callHandleClick?.(props);\n  };\n\n  return (\n    isFlyoutItem ?\n      (\n        <>\n          <div className=\"menu-container\" onClick={onClick}>\n            <div className=\"icon-label-wrapper\">\n              {iconDOMElement}\n              {label && <div className=\"flyout-item-label\">{t(label)}</div>}\n            </div>\n            {ariaKeyshortcuts && <span className=\"hotkey-wrapper\">{`(${ariaKeyshortcuts})`}</span>}\n          </div>\n          {subMenuDOMElement}\n        </>\n      ) :\n      (\n        <div className={classNames({\n          'ToolGroupButton': true,\n        })}>\n          <Button\n            isActive={isActive}\n            dataElement={dataElement}\n            img={img}\n            label={label}\n            title={title}\n            onClick={onClick}\n            disabled={disabled}\n          >\n          </Button>\n        </div>\n      ));\n};\n\nToolGroupButton.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  disabled: PropTypes.bool,\n  img: PropTypes.string,\n  label: PropTypes.string,\n  getCurrentToolbarGroup: PropTypes.func,\n  toolGroup: PropTypes.string,\n  customClass: PropTypes.string,\n  tools: PropTypes.array,\n  isFlyoutItem: PropTypes.bool,\n  callHandleClick: PropTypes.func,\n  iconDOMElement: PropTypes.any,\n  subMenuDOMElement: PropTypes.any,\n};\n\nexport default ToolGroupButton;","import ToolGroupButton from './ToolGroupButton';\n\nexport default ToolGroupButton;\n","import React from 'react';\nimport classNames from 'classnames';\nimport ToggleElementButton from '../ToggleElementButton';\nimport CustomButton from '../CustomButton';\nimport { useTranslation } from 'react-i18next';\nimport './ZoomControls.scss';\n\nfunction ZoomControls(props) {\n  const {\n    setZoomHandler,\n    zoomValue,\n    zoomTo,\n    isZoomFlyoutMenuActive,\n    dataElement,\n    isActive,\n    onClick,\n    onFlyoutToggle,\n    elementRef,\n    size,\n    onZoomInClicked,\n    onZoomOutClicked,\n    getCurrentZoom,\n  } = props;\n\n  const [t] = useTranslation();\n  const INPUT_WIDTH_MULTIPLIER = 8;\n\n  const isZoomValueValid = (zoomValue) => {\n    const regex = /^(\\d){0,4}$/;\n    return regex.test(zoomValue) || zoomValue === '';\n  };\n\n  const handleChange = (e) => {\n    if (isZoomValueValid(e.target.value)) {\n      setZoomHandler(e.target.value);\n    }\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter' && isZoomValueValid(e.target.value)) {\n      zoomTo(e.target.value / 100);\n    }\n  };\n\n  const onBlur = (e) => {\n    const zoom = getCurrentZoom();\n    if (e.target.value === zoom) {\n      return;\n    }\n    if (e.target.value === '' || isNaN(Number(e.target.value))) {\n      setZoomHandler(zoom);\n    } else {\n      setZoomHandler(Number(e.target.value).toString());\n      zoomTo(e.target.value / 100);\n    }\n  };\n\n  const inputWidth = zoomValue ? (zoomValue.length + 1) * INPUT_WIDTH_MULTIPLIER : 0;\n\n  return (\n    <div className=\"ZoomContainerWrapper\" data-element={dataElement} ref={elementRef}>\n      {size === 0 && <>\n        <div className=\"ToggleZoomMenu\">\n          <div tabIndex={0}\n            className={classNames({\n              ZoomContainer: true,\n              active: isActive,\n            })}\n          >\n            <div className=\"ZoomText\"\n              onClick={() => onClick}>\n              <input\n                type=\"text\"\n                className=\"textarea\"\n                value={zoomValue}\n                onChange={handleChange}\n                onBlur={onBlur}\n                onKeyDown={handleKeyDown}\n                tabIndex={-1}\n                style={{ width: inputWidth }}\n                aria-label={t('action.zoomSet')}\n              />\n              <span>%</span>\n            </div>\n            <ToggleElementButton\n              dataElement=\"zoom-toggle-button\"\n              className=\"zoomToggleButton\"\n              title=\"Zoom Toggle Button\"\n              disabled={false}\n              img={`icon-chevron-${isZoomFlyoutMenuActive ? 'up' : 'down'}`}\n              toggleElement=\"zoomFlyoutMenu\"\n              tabIndex={-1}\n              onFlyoutToggled={onFlyoutToggle}\n            />\n          </div>\n        </div>\n        <CustomButton\n          img=\"icon-header-zoom-out-line\"\n          onClick={onZoomOutClicked}\n          title=\"action.zoomOut\"\n          dataElement=\"zoomOutButton\"\n          className=\"zoomButton\"\n        />\n        <CustomButton\n          img=\"icon-header-zoom-in-line\"\n          onClick={onZoomInClicked}\n          title=\"action.zoomIn\"\n          dataElement=\"zoomInButton\"\n          className=\"zoomButton\"\n        />\n      </>}\n      {size === 1 && <>\n        <ToggleElementButton\n          dataElement=\"zoom-toggle-button\"\n          className=\"zoomToggleButton\"\n          title=\"Zoom Toggle Button\"\n          disabled={false}\n          img={'icon-magnifying-glass'}\n          toggleElement=\"zoomFlyoutMenu\"\n          tabIndex={-1}\n          onFlyoutToggled={onFlyoutToggle}\n        />\n      </>}\n    </div>\n  );\n}\n\nexport default ZoomControls;\n","import React, { useState, useEffect, useRef } from 'react';\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { zoomTo, zoomIn, zoomOut, fitToWidth, fitToPage } from 'helpers/zoom';\nimport ZoomControls from './ZoomControls';\n\nconst ZoomControlsContainer = ({ dataElement = 'zoom-container', initialSize = 0 }) => {\n  // TODO: remove ignore below after resizing algorithm is implemented\n  // eslint-disable-next-line no-unused-vars\n  const [size, setSize] = useState(initialSize);\n  const [zoomValue, setZoomValue] = useState('100');\n  const dispatch = useDispatch();\n  const elementRef = useRef();\n  const [isActive, isZoomFlyoutMenuActive] = useSelector((state) => [\n    selectors.isElementOpen(state, dataElement),\n    selectors.isElementOpen(state, 'zoomFlyoutMenu'),\n  ]);\n\n  useEffect(() => {\n    const onDocumentLoaded = () => setZoomValue(Math.ceil(core.getZoom() * 100).toString());\n    const onDocumentUnloaded = () => setZoomValue('100');\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n    };\n  }, []);\n\n  useEffect(() => {\n    const onZoomUpdated = () => {\n      setZoomValue(Math.ceil(core.getZoom() * 100).toString());\n      size === 0 && dispatch(actions.closeElements('zoomFlyoutMenu'));\n    };\n\n    core.addEventListener('zoomUpdated', onZoomUpdated);\n    return () => core.removeEventListener('zoomUpdated', onZoomUpdated);\n  }, [size]);\n\n  const onClickHandler = () => {\n    dispatch(actions.toggleElement('zoomFlyoutMenu'));\n  };\n\n  const onFlyoutToggle = () => {\n    const dataElement = elementRef.current.getAttribute('data-element');\n    dispatch(actions.setFlyoutToggleElement(dataElement));\n  };\n\n  const [zoomOptionsList, currentFlyout] = useSelector((state) => [\n    selectors.getZoomList(state),\n    selectors.getFlyout(state, 'zoomFlyoutMenu')\n  ]);\n\n  const onClickZoomLevelOption = (zoomLevel) => {\n    zoomTo(zoomLevel);\n    size === 0 && dispatch(actions.closeElement('zoomFlyoutMenu'));\n  };\n\n  const onMarqueeZoom = () => {\n    dispatch(actions.closeElement('zoomFlyoutMenu'));\n  };\n\n  const getCurrentZoom = () => {\n    return Math.ceil(core.getZoom() * 100).toString();\n  };\n\n  const onZoomInClicked = () => {\n    zoomIn();\n    setZoomValue(getCurrentZoom());\n  };\n\n  const onZoomOutClicked = () => {\n    zoomOut();\n    setZoomValue(getCurrentZoom());\n  };\n\n\n  const getZoomItems = () => {\n    const fitToWidthButton = {\n      icon: 'icon-header-zoom-fit-to-width',\n      label: 'action.fitToWidth',\n      title: 'action.fitToWidth',\n      onClick: fitToWidth,\n      dataElement: 'fitToWidthButton'\n    };\n    const fitToPageButton = {\n      icon: 'icon-header-zoom-fit-to-page',\n      label: 'action.fitToPage',\n      title: 'action.fitToPage',\n      onClick: fitToPage,\n      type: 'customButton',\n      dataElement: 'fitToPageButton'\n    };\n    const marqueeButton = {\n      icon: 'icon-header-zoom-marquee',\n      toolName: 'MarqueeZoomTool',\n      label: 'tool.Marquee',\n      onClick: onMarqueeZoom,\n      dataElement: 'marqueeButton'\n    };\n    const zoomInButton = {\n      icon: 'icon-header-zoom-in-line',\n      label: 'action.zoomIn',\n      dataElement: 'zoomInButton',\n      onClick: onZoomInClicked,\n    };\n    const zoomOutButton = {\n      icon: 'icon-header-zoom-out-line',\n      label: 'action.zoomOut',\n      dataElement: 'zoomOutButton',\n      onClick: onZoomOutClicked,\n    };\n\n    let zoomItems;\n    if (size === 0) {\n      const divider = 'divider';\n      zoomItems = [fitToWidthButton, fitToPageButton, divider];\n      zoomOptionsList.forEach((zoomValue) => {\n        const item = {\n          label: `${zoomValue * 100}%`,\n          onClick: () => {\n            onClickZoomLevelOption(zoomValue);\n          },\n          dataElement: `zoom-button-${zoomValue * 100}`\n        };\n        zoomItems.push(item);\n      });\n      zoomItems.push(divider);\n      zoomItems.push(marqueeButton);\n    } else if (size === 1) {\n      const zoomOptionsItem = {\n        dataElement: 'zoomOptionsButton',\n        children: zoomOptionsList.map((zoomValue) => {\n          return {\n            label: `${zoomValue * 100}%`,\n            onClick: () => {\n              onClickZoomLevelOption(zoomValue);\n            },\n            dataElement: `zoom-button-${zoomValue * 100}`\n          };\n        }),\n      };\n      zoomItems = [zoomOptionsItem, zoomInButton, zoomOutButton, fitToWidthButton, fitToPageButton, marqueeButton];\n    }\n    return zoomItems;\n  };\n\n  useEffect(() => {\n    const zoomFlyoutMenu = {\n      dataElement: 'zoomFlyoutMenu',\n      className: 'ZoomFlyoutMenu',\n      items: getZoomItems()\n    };\n\n    if (!currentFlyout) {\n      dispatch(actions.addFlyout(zoomFlyoutMenu));\n    } else {\n      dispatch(actions.updateFlyout(zoomFlyoutMenu.dataElement, zoomFlyoutMenu));\n    }\n  }, [size]);\n\n  return (\n    <ZoomControls\n      size={size}\n      elementRef={elementRef}\n      getZoom={core.getZoom}\n      setZoomHandler={setZoomValue}\n      zoomValue={zoomValue}\n      zoomTo={zoomTo}\n      getCurrentZoom={getCurrentZoom}\n      onZoomInClicked={onZoomInClicked}\n      onZoomOutClicked={onZoomOutClicked}\n      isZoomFlyoutMenuActive={isZoomFlyoutMenuActive}\n      dataElement={dataElement}\n      isActive={isActive}\n      onClick={onClickHandler}\n      onFlyoutToggle={onFlyoutToggle} />\n  );\n};\n\nexport default ZoomControlsContainer;\n","import ZoomControls from './ZoomControlsContainer';\n\nexport default ZoomControls;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Measure from 'react-measure';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport { JUSTIFY_CONTENT, ITEM_TYPE, DIRECTION, DEFAULT_GAP } from 'constants/customizationVariables';\nimport actions from 'actions';\nimport InnerItem from '../InnerItem';\nimport ToggleElementButton from '../ToggleElementButton';\nimport { getItemsToHide, getResponsiveItems, isThereAvailableSpace } from '../Helpers/responsiveness-helper';\nimport './GroupedTools.scss';\n\nconst GroupedTools = (props) => {\n  const {\n    dataElement,\n    items,\n    headerDirection,\n    gap = DEFAULT_GAP,\n    grow = 0,\n    justifyContent = JUSTIFY_CONTENT.START,\n    uniqueID,\n  } = props;\n\n  const OVERFLOW_FLYOUT = 'GroupedToolsOverflowFlyout';\n  const overflowFlyoutIdentifier = `${OVERFLOW_FLYOUT}-${uniqueID}`;\n  const moreButtonIdentifier = `${uniqueID}-moreItemsButton`;\n  const dispatch = useDispatch();\n  const moreButtonDefaultIcon = 'icon-tools-more';\n  const [itemsGap, setItemsGap] = useState(gap);\n  const itemValidTypes = Object.values(ITEM_TYPE);\n  const validItems = items?.filter((item) => {\n    const itemType = item?.type || item?.props?.type;\n    return itemValidTypes.includes(itemType);\n  });\n  const [moreButtonIcon, setMoreButtonIcon] = useState(moreButtonDefaultIcon);\n  const [itemsWidth, setItemsWidth] = useState(0);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [itemsHeight, setItemsHeight] = useState(0);\n  const [containerHeight, setContainerHeight] = useState(0);\n  const [overflowItems, setOverflowItems] = useState([]);\n  const [visibleItems, setVisibleItems] = useState(\n    items?.filter((item, index) => {\n      const itemType = item.type || item.props.type;\n      if (itemType !== ITEM_TYPE.TOOL_GROUP_BUTTON) {\n        const dataElement = item.dataElement || item.props.dataElement;\n        console.warn(`${dataElement} is not a valid tool button item.`);\n      }\n      item.sortIndex = index;\n      return itemType === ITEM_TYPE.TOOL_GROUP_BUTTON;\n    }),\n  );\n\n  const visibleItemsRef = useRef();\n  const containerRef = useRef();\n  const moreButtonRef = useRef();\n\n  const [flyoutMap, activeToolName] = useSelector((state) => [\n    selectors.getFlyoutMap(state),\n    selectors.getActiveToolName(state),\n  ]);\n\n  const parentRect = containerRef?.current?.parentElement?.getBoundingClientRect();\n  const parentWidth = parentRect?.width;\n  const parentHeight = parentRect?.height;\n\n  useEffect(() => {\n    // close flyout when visible items change so we don't get left with an open empty flyout\n    dispatch(actions.closeElements([overflowFlyoutIdentifier]));\n    const isHorizontalHeader = headerDirection === DIRECTION.ROW;\n    const itemsShown = visibleItemsRef?.current?.getElementsByClassName('ToolGroupButton');\n    const moreButtonRect = moreButtonRef.current.getBoundingClientRect();\n    const availableSpace = isThereAvailableSpace(itemsShown, parentRect, headerDirection, justifyContent);\n    const sizeNeededForButton = isHorizontalHeader ? moreButtonRect.width + gap : moreButtonRect.height + gap;\n\n    if (availableSpace < sizeNeededForButton && visibleItems.length > 1) {\n      const minAvailableSpaceRequired = availableSpace - sizeNeededForButton;\n      const itemsToHide = getItemsToHide(visibleItems, itemsShown, minAvailableSpaceRequired, headerDirection);\n      moveItemsToOverflow(itemsToHide);\n    } else if (overflowItems.length > 0) {\n      const shownItems = [].slice.call(itemsShown);\n      const largestItem = shownItems.reduce((largestItem, item) => {\n        if (isHorizontalHeader) {\n          return largestItem.getBoundingClientRect().width > item.getBoundingClientRect().width ? largestItem : item;\n        }\n        return largestItem.getBoundingClientRect().height > item.getBoundingClientRect().height ? largestItem : item;\n      });\n\n      const spaceForLargestItem = (isHorizontalHeader\n        ? largestItem.getBoundingClientRect().width\n        : largestItem.getBoundingClientRect().height) + gap;\n      if (availableSpace > spaceForLargestItem + sizeNeededForButton) {\n        moveItemsToContainer([overflowItems[0]]);\n      }\n    }\n\n    setOverflowFlyout();\n  }, [\n    parentWidth,\n    itemsWidth,\n    containerWidth,\n    parentHeight,\n    itemsHeight,\n    containerHeight,\n    visibleItemsRef,\n    containerRef,\n    moreButtonRef,\n    activeToolName,\n  ]);\n\n  useEffect(() => {\n    handleMoreButtonIcon(activeToolName);\n  }, [activeToolName]);\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  const handleMoreButtonIcon = (item) => {\n    if (isItemIntoOverflow(item)) {\n      setMoreButtonIcon('icon-tools-more-active');\n    } else {\n      setMoreButtonIcon(moreButtonDefaultIcon);\n    }\n  };\n\n  const isItemIntoOverflow = (activeItem) => {\n    let isItemIntoOverflow = false;\n    overflowItems.forEach((item) => {\n      item?.tools.forEach((tool) => {\n        if (tool.toolName === activeItem) {\n          isItemIntoOverflow = true;\n        }\n      });\n    });\n\n    return isItemIntoOverflow;\n  };\n\n  const moveItemsToOverflow = (items) => {\n    if (items) {\n      setOverflowItems(getResponsiveItems(items, overflowItems, true));\n      setVisibleItems(getResponsiveItems(items, visibleItems, false));\n    }\n  };\n\n  const moveItemsToContainer = (items) => {\n    if (items) {\n      setOverflowItems(getResponsiveItems(items, overflowItems, false));\n      setVisibleItems(getResponsiveItems(items, visibleItems, true));\n    }\n  };\n\n  const setOverflowFlyout = () => {\n    const OverflowFlyout = {\n      dataElement: overflowFlyoutIdentifier,\n      className: OVERFLOW_FLYOUT,\n      items: getOverflowItems(),\n    };\n    if (flyoutMap[overflowFlyoutIdentifier]) {\n      dispatch(actions.updateFlyout(overflowFlyoutIdentifier, OverflowFlyout));\n    } else {\n      dispatch(actions.addFlyout(OverflowFlyout, overflowFlyoutIdentifier));\n    }\n  };\n\n  const getOverflowItems = () => {\n    const items = overflowItems.map((item, index) => {\n      if (item.tools.length > 1) {\n        item.children = item.tools;\n      }\n      item.onClick = () => {\n        handleMoreButtonIcon(item.tools[0].toolName);\n        dispatch(actions.closeElements([overflowFlyoutIdentifier]));\n      };\n      item.key = `${overflowFlyoutIdentifier}-${index}`;\n      return item;\n    });\n    return items;\n  };\n\n  const renderContainerItems = () => {\n    return visibleItems.map((item) => {\n      const itemProps = item.props || item;\n      return <InnerItem key={`${dataElement}-${itemProps.dataElement}`} {...itemProps} headerDirection={headerDirection} callHandleClick={handleMoreButtonIcon} />;\n    });\n  };\n\n  if (validItems && validItems.length) {\n    return (\n      <div className={'GroupedTools'}\n        data-element={dataElement}\n        style={{\n          gap: `${itemsGap}px`,\n          flexDirection: headerDirection,\n          justifyContent: justifyContent,\n          flexGrow: grow\n        }}>\n        <Measure\n          bounds\n          innerRef={containerRef}\n          onResize={({ bounds }) => {\n            setContainerWidth(bounds.width);\n            setContainerHeight(bounds.height);\n          }}\n        >\n          {({ measureRef }) => (\n            <div ref={measureRef} className={'ResponsiveContainer'}>\n              <Measure\n                bounds\n                innerRef={visibleItemsRef}\n                onResize={({ bounds }) => {\n                  setItemsWidth(bounds.width);\n                  setItemsHeight(bounds.height);\n                }}\n              >\n                {({ measureRef }) => (\n                  <div className={'ResponsiveContainer__wrapper'} ref={measureRef} data-element={dataElement}>\n                    <div\n                      className={classNames({\n                        'ResponsiveContainerContent': true,\n                        'hidden': visibleItems.length <= 1 && overflowItems.length > 0,\n                      })}\n                      style={{\n                        gap: `${itemsGap}px`,\n                        flexDirection: headerDirection,\n                      }}\n                      onFocus={() => {\n                        setOverflowFlyout();\n                      }}\n                    >\n                      <div className='ItemsContainer' style={{ display: 'flex', flexDirection: headerDirection }}>\n                        {renderContainerItems()}\n                      </div>\n                      <div\n                        ref={moreButtonRef}\n                        className={classNames({\n                          'ResponsiveContainer__moreButton': true,\n                          'hidden': overflowItems.length === 0,\n                        })}\n                      >\n                        <ToggleElementButton\n                          dataElement={moreButtonIdentifier}\n                          toggleElement={overflowFlyoutIdentifier}\n                          title=\"action.more\"\n                          img={moreButtonIcon}\n                        />\n                      </div>\n                    </div>\n                  </div>\n                )}\n              </Measure>\n            </div>\n\n          )}\n        </Measure>\n      </div>);\n  }\n  return null;\n};\n\nGroupedTools.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n  headerDirection: PropTypes.string,\n  gap: PropTypes.number,\n  grow: PropTypes.number,\n  justifyContent: PropTypes.string,\n  uniqueID: PropTypes.string,\n};\n\nexport default GroupedTools;","import GroupedTools from './GroupedTools';\n\nexport default GroupedTools;","import React from 'react';\nimport '../../Button/Button.scss';\nimport './ToolButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { mapToolNameToKey } from 'constants/map';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport getToolStyles from 'helpers/getToolStyles';\nimport getColor from 'helpers/getColor';\nimport core from 'core';\n\nconst ToolButton = (props) => {\n  const {\n    title,\n    dataElement,\n    label,\n    img,\n    disabled,\n    className,\n    preset,\n    headerPlacement,\n    toolName,\n  } = props;\n  const [\n    isActive,\n    iconColorKey,\n    toolButtonObject,\n    customOverrides,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state) === toolName,\n      selectors.getIconColor(state, mapToolNameToKey(toolName)),\n      selectors.getToolButtonObject(state, toolName),\n      selectors.getCustomElementOverrides(state, selectors.getToolButtonDataElement(state, toolName)),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const handleClick = () => {\n    if (isActive) {\n      if (toolName !== 'AnnotationCreateStamp' && toolName !== 'AnnotationCreateRedaction' && toolName !== 'AnnotationEraserTool') {\n        if (toolStylesExist(toolName)) {\n          dispatch(actions.toggleElement('toolStylePopup'));\n        }\n      }\n    } else {\n      core.setToolMode(toolName);\n      if (toolName === 'AnnotationCreateRubberStamp') {\n        dispatch(actions.openElement('toolStylePopup'));\n      }\n    }\n  };\n\n\n  let color = '';\n  let fillColor = '';\n  let strokeColor = '';\n  const showColor = customOverrides?.showColor || toolButtonObject.showColor;\n  if (showColor === 'always' || (showColor === 'active' && isActive)) {\n    const toolStyles = getToolStyles(toolName);\n    color = toolStyles?.[iconColorKey]?.toHexString?.();\n    fillColor = getColor(toolStyles?.FillColor);\n    strokeColor = getColor(toolStyles?.StrokeColor);\n    if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n      // transparent\n      strokeColor = 'ff000000';\n    }\n  }\n\n  let forceTooltipPosition;\n\n  if (['left', 'right'].includes(headerPlacement)) {\n    forceTooltipPosition = headerPlacement === 'left' ? 'right' : 'left';\n  }\n\n  return (\n    <Button\n      className={classNames({\n        'ToolButton': true,\n        'Button': true,\n        [className]: className,\n        'confirm-button': preset === 'confirm',\n        'cancel-button': preset === 'cancel'\n      })}\n      img={img}\n      label={label}\n      title={title}\n      dataElement={dataElement}\n      onClick={handleClick}\n      disabled={disabled}\n      forceTooltipPosition={forceTooltipPosition}\n      isActive={isActive}\n      color={color}\n      fillColor={fillColor}\n      strokeColor={strokeColor}\n    />\n  );\n};\n\nToolButton.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  label: PropTypes.string,\n  img: PropTypes.string,\n  onClick: PropTypes.func,\n  disabled: PropTypes.bool,\n};\n\nexport default ToolButton;\n","import ToolButton from './ToolButton';\n\nexport default ToolButton;","import React from 'react';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\nimport CustomButton from '../CustomButton';\nimport StatefulButton from '../StatefulButton';\nimport GroupedItems from '../GroupedItems/GroupedItems';\nimport Divider from '../Divider';\nimport RibbonGroup from '../RibbonGroup';\nimport ToolGroupButton from '../ToolGroupButton';\nimport ToggleElementButton from '../ToggleElementButton';\nimport ZoomControls from '../ZoomControls';\nimport GroupedTools from '../GroupedTools';\nimport ToolButton from '../ToolButton';\n\nconst InnerItem = (props) => {\n  const { type, dataElement, headerDirection, headerPlacement } = props;\n  const key = `${type}-${dataElement}-${headerPlacement}`;\n\n  switch (type) {\n    case ITEM_TYPE.BUTTON:\n      return <CustomButton key={key} {...props} />;\n    case ITEM_TYPE.STATEFUL_BUTTON:\n      return <StatefulButton key={key} {...props} />;\n    case ITEM_TYPE.GROUPED_ITEMS:\n      return <GroupedItems key={key} {...props} headerDirection={headerDirection} />;\n    case ITEM_TYPE.RIBBON_ITEM:\n      console.warn(`${ITEM_TYPE.RIBBON_ITEM} needs to be added to a ${ITEM_TYPE.RIBBON_GROUP}`);\n    case ITEM_TYPE.DIVIDER:\n      return <Divider headerDirection={headerDirection} />;\n    case ITEM_TYPE.TOGGLE_BUTTON:\n      return <ToggleElementButton key={key} {...props} />;\n    case ITEM_TYPE.RIBBON_GROUP:\n      return <RibbonGroup key={key} {...props} />;\n    case ITEM_TYPE.TOOL_GROUP_BUTTON:\n      return <ToolGroupButton key={key} {...props} />;\n    case ITEM_TYPE.GROUPED_TOOLS:\n      return <GroupedTools key={key} uniqueID={key} {...props} headerDirection={headerDirection} />;\n    case ITEM_TYPE.ZOOM:\n      return <ZoomControls {...props} />;\n    case ITEM_TYPE.TOOL_BUTTON:\n      return <ToolButton key={key} {...props} />;\n    default:\n      console.warn(`${type} is not a valid item type.`);\n      return null;\n  }\n};\n\nexport default InnerItem;","import InnerItem from './InnerItem';\n\nexport default InnerItem;","import React, { useEffect, useState } from 'react';\nimport './ModularHeaderItems.scss';\nimport InnerItem from '../ModularComponents/InnerItem';\nimport { PLACEMENT, DIRECTION } from 'constants/customizationVariables';\n\nconst ModularHeaderItems = (props) => {\n  const { placement, gap, items, justifyContent, className = '', maxWidth, maxHeight } = props;\n  const [itemsGap, setItemsGap] = useState(gap);\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  const headerDirection = [PLACEMENT.LEFT, PLACEMENT.RIGHT].includes(placement) ? DIRECTION.COLUMN : DIRECTION.ROW;\n\n  const headerItems = items?.map((item, i) => {\n    /**\n     * We can think on a better solution later, but this is necessary\n     * because the user can either intantiate a CustomButton and add it\n     * to the header or add the plain object.\n     */\n    let itemProps = item.props || item;\n    itemProps = { headerPlacement: placement, justifyContent: justifyContent, ...itemProps };\n    const { type, dataElement } = itemProps;\n    const key = `${type}-${dataElement || i}-wrapper-${i}`;\n    return <InnerItem key={key} {...itemProps} headerDirection={headerDirection} />;\n  });\n\n  return (\n    <div className={`ModularHeaderItems ${className}`}\n      style={{\n        gap: `${itemsGap}px`,\n        flexDirection: headerDirection,\n        justifyContent: justifyContent,\n        maxWidth: `${maxWidth}px`,\n        maxHeight: `${maxHeight}px`,\n      }}>\n      {headerItems}\n    </div>\n  );\n};\n\nexport default ModularHeaderItems;","import ModularHeaderItems from './ModularHeaderItems';\n\nexport default ModularHeaderItems;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { JUSTIFY_CONTENT, PLACEMENT, DEFAULT_GAP } from 'constants/customizationVariables';\nimport ModularHeaderItems from '../../ModularHeaderItems';\nimport './ModularHeader.scss';\nimport DataElementWrapper from 'src/components/DataElementWrapper';\n\nconst ModularHeader = React.forwardRef((props, ref) => {\n  const { dataElement,\n    placement,\n    position = '', // This is to be used for floating headers\n    items = [],\n    gap = DEFAULT_GAP,\n    justifyContent = JUSTIFY_CONTENT.START,\n    style,\n    autohide = true,\n    stroke,\n  } = props;\n  const [loadedFirstTime, setLoadedFirstTime] = useState(true);\n\n  useEffect(() => {\n    setLoadedFirstTime(false);\n  }, []);\n\n  const [canRemoveItems, setCanRemoveItems] = useState(items.length);\n  const [canApplyAnimation, setApplyAnimation] = useState(false);\n  const key = `${dataElement}-${placement}`;\n\n  let isClosed = false;\n  if (!autohide) {\n    isClosed = false;\n  } else if (!items.length) {\n    isClosed = true;\n  }\n\n  let originalItems = [];\n  if (canRemoveItems) {\n    originalItems = items;\n  }\n  // Why is this here? This needs to be in the right header not the generic one\n  let headerStyle = style;\n  if (placement === PLACEMENT.RIGHT\n    && (canApplyAnimation || (isClosed && !loadedFirstTime))) {\n    headerStyle = Object.assign({}, style, { position: 'fixed', right: 0 });\n  }\n\n  return (\n    <DataElementWrapper\n      className={classNames({\n        'ModularHeader': true,\n        'closed': isClosed,\n        'TopHeader': placement === PLACEMENT.TOP,\n        'BottomHeader': placement === PLACEMENT.BOTTOM,\n        'LeftHeader': placement === PLACEMENT.LEFT,\n        'RightHeader': placement === PLACEMENT.RIGHT,\n        'stroke': stroke\n      }, `${position}`)}\n      data-element={dataElement}\n      key={key}\n      style={headerStyle}\n      ref={ref}\n      onTransitionEnd={() => {\n        setCanRemoveItems(!isClosed);\n        setApplyAnimation(isClosed);\n      }}\n    >\n      <ModularHeaderItems\n        className={classNames({ 'closed': isClosed })}\n        items={originalItems}\n        headerId={dataElement}\n        gap={gap}\n        placement={placement}\n        justifyContent={justifyContent} />\n    </DataElementWrapper>\n  );\n});\n\nModularHeader.propTypes = {\n  dataElement: PropTypes.string,\n  placement: PropTypes.string,\n  position: PropTypes.string,\n  items: PropTypes.array,\n  gap: PropTypes.number,\n  justifyContent: PropTypes.string,\n};\n\nModularHeader.displayName = 'ModularHeader';\n\nexport default React.memo(ModularHeader);\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport ModularHeader from './ModularHeader';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nconst ModularHeaderContainer = React.forwardRef((props, ref) => {\n  const { items } = props;\n\n  const [\n    activeGroupedItems,\n    fixedGroupedItems\n  ] = useSelector(\n    (state) => [\n      selectors.getCurrentGroupedItems(state),\n      selectors.getFixedGroupedItems(state),\n    ],\n    shallowEqual\n  );\n\n  // We memoize the items to avoid unneeded re-renders\n  const memoizedItems = React.useMemo(() => {\n    return items?.filter((item) => {\n      const itemProps = item.props || item;\n      if (itemProps.type === ITEM_TYPE.GROUPED_ITEMS && !itemProps.alwaysVisible) {\n        if (activeGroupedItems.length || fixedGroupedItems.length) {\n          return activeGroupedItems.includes(itemProps.dataElement) || fixedGroupedItems.includes(itemProps.dataElement);\n        }\n        return false;\n      }\n      return true;\n    });\n  }, [items, activeGroupedItems, fixedGroupedItems]);\n\n  return <ModularHeader ref={ref} {...props} items={memoizedItems} />;\n});\n\nModularHeaderContainer.displayName = 'ModularHeaderContainer';\n\nexport default ModularHeaderContainer;","import ModularHeader from './ModularHeaderContainer';\n\nexport default ModularHeader;\n","import useFloatingHeaderSelectors from './useFloatingHeaderSelectors';\n\nexport default useFloatingHeaderSelectors;","import { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst useFloatingHeaderSelectors = () => {\n  return useSelector((state) => ({\n    isLeftPanelOpen: selectors.isElementOpen(state, 'leftPanel'),\n    isRightPanelOpen: selectors.isRightPanelOpen(state),\n    leftPanelWidth: selectors.getLeftPanelWidthWithResizeBar(state),\n    rightPanelWidth: selectors.getOpenRightPanelWidth(state),\n    leftHeaderWidth: selectors.getActiveLeftHeaderWidth(state),\n    rightHeaderWidth: selectors.getActiveRightHeaderWidth(state),\n    topHeadersHeight: selectors.getTopHeadersHeight(state),\n    bottomHeadersHeight: selectors.getBottomHeadersHeight(state),\n    topFloatingContainerHeight: selectors.getTopFloatingContainerHeight(state),\n    bottomFloatingContainerHeight: selectors.getBottomFloatingContainerHeight(state),\n    topStartFloatingHeaders: selectors.getTopStartFloatingHeaders(state),\n    bottomStartFloatingHeaders: selectors.getBottomStartFloatingHeaders(state),\n    bottomEndFloatingHeaders: selectors.getBottomEndFloatingHeaders(state),\n    topEndFloatingHeaders: selectors.getTopEndFloatingHeaders(state),\n  }));\n};\n\nexport default useFloatingHeaderSelectors;","import React, { useEffect, useState } from 'react';\nimport './FloatingHeader.scss';\nimport classNames from 'classnames';\nimport ModularHeaderItems from 'components/ModularHeaderItems';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport { DEFAULT_GAP, OPACITY_LEVELS, OPACITY_MODES, PLACEMENT } from 'constants/customizationVariables';\nimport core from 'core';\nimport debounce from 'lodash/debounce';\n\nconst HIDE_FLOATING_HEADER_TIMEOUT = 4000;\nconst FloatingHeader = (props) => {\n  const { dataElement,\n    placement,\n    items = [],\n    gap = DEFAULT_GAP,\n    opacityMode = OPACITY_MODES.STATIC,\n    opacity = OPACITY_LEVELS.FULL,\n    maxWidth,\n    maxHeight,\n    style,\n  } = props;\n\n  const [isVisible, setIsVisible] = useState(false);\n  const scrollViewContainer = core.getScrollViewElement();\n\n  useEffect(() => {\n    const hideFloatingHeader = debounce(() => {\n      setIsVisible(false);\n    }, HIDE_FLOATING_HEADER_TIMEOUT);\n\n    const handleScroll = () => {\n      if (opacityMode === OPACITY_MODES.DYANMIC) {\n        setIsVisible(true);\n        hideFloatingHeader();\n      }\n    };\n\n    if (opacityMode === OPACITY_MODES.DYANMIC) {\n      scrollViewContainer.addEventListener('scroll', handleScroll);\n    }\n\n    return () => scrollViewContainer.removeEventListener('scroll', handleScroll);\n  }, [opacityMode]);\n\n  const className = classNames(\n    'FloatingHeader',\n    `opacity-${opacity}`,\n    `opacity-mode-${opacityMode}`,\n    'stroke',\n    {\n      isVisible,\n      'VerticalHeader': placement === PLACEMENT.LEFT || placement === PLACEMENT.RIGHT,\n    },\n  );\n\n  return (\n    <DataElementWrapper\n      dataElement={dataElement}\n      style={style}\n      className={className}>\n      <ModularHeaderItems\n        items={items}\n        gap={gap}\n        placement={placement}\n        maxWidth={maxWidth}\n        maxHeight={maxHeight} />\n    </DataElementWrapper >\n  );\n};\n\nexport default FloatingHeader;","import React, { useMemo } from 'react';\nimport useFloatingHeaderSelectors from 'hooks/useFloatingHeaderSelectors';\nimport FloatingHeader from './FloatingHeader';\nimport './FloatingHeader.scss';\nimport classNames from 'classnames';\nimport { PLACEMENT, POSITION, DEFAULT_GAP } from 'src/constants/customizationVariables';\n\nconst FloatSection = ({ position, isVertical, children, gap = DEFAULT_GAP }) => {\n  const className = classNames('FloatSection', position, { 'vertical': isVertical });\n  return (\n    <div className={className} style={{ gap: `${gap}px` }}>\n      {children}\n    </div>\n  );\n};\n\nconst FloatingHeaderContainer = React.forwardRef((props, ref) => {\n  const { floatingHeaders, placement } = props;\n  const isHorizontalHeader = [PLACEMENT.TOP, PLACEMENT.BOTTOM].includes(placement);\n  const selectors = useFloatingHeaderSelectors();\n\n  const style = useMemo(() => computeFloatContainerStyle({\n    ...selectors,\n    isHorizontalHeader,\n    placement,\n  }), [selectors, isHorizontalHeader, placement]);\n\n  const renderHeaders = (headers, positionPrefix) => (\n    <FloatSection position={`${positionPrefix}__${placement}`} isVertical={!isHorizontalHeader}>\n      {headers.map((header) => <FloatingHeader {...header} key={header.dataElement} />)}\n    </FloatSection>\n  );\n\n  return (\n    <div\n      className={classNames('FloatingHeaderContainer', placement, { 'vertical': !isHorizontalHeader })}\n      style={style}\n      ref={ref}\n    >\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.START), POSITION.START)}\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.CENTER), POSITION.CENTER)}\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.END), POSITION.END)}\n    </div>\n  );\n});\n\nFloatingHeaderContainer.displayName = 'FloatingHeaderContainer';\n\nfunction computeFloatContainerStyle(params) {\n  const {\n    isLeftPanelOpen,\n    leftPanelWidth,\n    isRightPanelOpen,\n    rightPanelWidth,\n    leftHeaderWidth,\n    rightHeaderWidth,\n    isHorizontalHeader,\n    topFloatingContainerHeight,\n    bottomFloatingContainerHeight,\n    topStartFloatingHeaders,\n    bottomStartFloatingHeaders,\n    topHeadersHeight,\n    bottomHeadersHeight,\n    bottomEndFloatingHeaders,\n    topEndFloatingHeaders,\n    placement\n  } = params;\n\n  const styles = {};\n  const verticalHeaderWidth = rightHeaderWidth + leftHeaderWidth;\n  let panelsWidth = 0;\n  let leftOffset = leftHeaderWidth;\n\n  if (isLeftPanelOpen) {\n    panelsWidth += leftPanelWidth;\n    leftOffset += leftPanelWidth;\n  }\n  if (isRightPanelOpen) {\n    panelsWidth += rightPanelWidth;\n  }\n\n  if (leftOffset !== 0) {\n    styles.transform = `translate(${leftOffset}px, 0px)`;\n  }\n  if (placement === PLACEMENT.RIGHT) {\n    styles.transform = 'translate(-48px, 0px)';\n  }\n  if (isHorizontalHeader && (panelsWidth || verticalHeaderWidth)) {\n    styles.width = `calc(100% - ${panelsWidth + verticalHeaderWidth}px)`;\n  }\n  if (!isHorizontalHeader) {\n    // if it is the left float header, and there are no top start floating headers, then we can take the full height\n    // otherwise the height must accotun for the floating header container\n    let topFloatingHeaderOffset = 0;\n    let bottomFloatingHeaderOffset = 0;\n\n    if (placement === PLACEMENT.LEFT) {\n      topFloatingHeaderOffset = topStartFloatingHeaders.length === 0 ? 0 : topFloatingContainerHeight;\n      bottomFloatingHeaderOffset = bottomStartFloatingHeaders.length === 0 ? 0 : bottomFloatingContainerHeight;\n    }\n\n    if (placement === PLACEMENT.RIGHT) {\n      topFloatingHeaderOffset = topEndFloatingHeaders.length === 0 ? 0 : topFloatingContainerHeight;\n      bottomFloatingHeaderOffset = bottomEndFloatingHeaders.length === 0 ? 0 : bottomFloatingContainerHeight;\n    }\n\n    styles.height = `calc(100% - ${topHeadersHeight + bottomHeadersHeight + topFloatingHeaderOffset + bottomFloatingHeaderOffset}px)`;\n    if (topFloatingHeaderOffset) {\n      styles.marginTop = `${topFloatingContainerHeight}px`;\n      styles.paddingTop = '0px';\n    }\n    if (bottomFloatingHeaderOffset) {\n      styles.paddingBottom = '0px';\n    }\n  }\n\n  return styles;\n}\n\nexport default FloatingHeaderContainer;","import FloatingHeaderContainer from './FloatingHeaderContainer';\n\nexport default FloatingHeaderContainer;","import { useEffect, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n  const [dimensions, setDimensions] = useState({ width: null, height: null });\n  const elementRef = useRef(null);\n\n  useEffect(() => {\n    const node = elementRef.current;\n\n    if (node) {\n      const observer = new ResizeObserver((entries) => {\n        for (const entry of entries) {\n          const observedWidth = entry.borderBoxSize[0].inlineSize;\n          const observedHeight = entry.borderBoxSize[0].blockSize;\n          setDimensions({\n            width: observedWidth,\n            height: observedHeight\n          });\n        }\n      });\n\n      observer.observe(node);\n\n      // Cleanup: stop observing when the component unmounts\n      return () => {\n        observer.unobserve(node);\n      };\n    }\n  }, [elementRef.current]);\n\n  return [elementRef, dimensions];\n};\n\nexport default useResizeObserver;\n","import useResizeObserver from './useResizeObserver';\n\nexport default useResizeObserver;","import React, { useMemo, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport DataElements from 'constants/dataElement';\nimport { RESIZE_BAR_WIDTH } from 'constants/panel';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport './LeftHeader.scss';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nfunction LeftHeaderContainer() {\n  const [\n    featureFlags,\n    isLeftPanelOpen,\n    leftPanelWidth,\n    leftHeaders,\n    bottomHeadersHeight,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.isElementOpen(state, DataElements.LEFT_PANEL),\n      selectors.getLeftPanelWidth(state),\n      selectors.getLeftHeader(state),\n      selectors.getBottomHeadersHeight(state),\n    ]);\n\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n  const floatingHeaders = leftHeaders.filter((header) => header.float);\n  const fullLengthHeaders = leftHeaders.filter((header) => !header.float);\n  if (fullLengthHeaders.length > 1) {\n    console.warn(`Left headers only support one full length header but ${fullLengthHeaders.length} were added. Only the first one will be rendered.`);\n  }\n\n  const leftHeader = fullLengthHeaders[0];\n  const userDefinedStyle = leftHeader ? leftHeader.style : {};\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.width !== null) {\n      dispatch(actions.setLeftHeaderWidth(dimensions.width));\n    }\n  }, [dimensions]);\n\n  let style = useMemo(() => {\n    const styleObject = {};\n    if (isLeftPanelOpen) {\n      styleObject['transform'] = `translateX(${leftPanelWidth + RESIZE_BAR_WIDTH}px)`;\n    }\n    if (bottomHeadersHeight !== 0) {\n      styleObject['height'] = `calc(100% - ${bottomHeadersHeight}px)`;\n    }\n    return styleObject;\n  }, [isLeftPanelOpen, leftPanelWidth, bottomHeadersHeight]);\n\n\n  style = Object.assign({}, style, userDefinedStyle);\n\n  if (customizableUI) {\n    const renderLeftHeader = () => {\n      if (leftHeader) {\n        const { dataElement } = leftHeader;\n        return (<ModularHeader ref={elementRef} {...leftHeader} key={dataElement} style={style} />);\n      }\n    };\n\n    return (\n      <>\n        {renderLeftHeader()}\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.LEFT} />\n      </>\n    );\n  }\n  return null;\n}\n\nexport default LeftHeaderContainer;","import LeftHeader from './LeftHeaderContainer';\n\nexport default LeftHeader;","import React, { useMemo, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport './RightHeader.scss';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nfunction RightHeaderContainer() {\n  const [\n    featureFlags,\n    rightHeaders,\n    bottomHeadersHeight,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getRightHeader(state),\n      selectors.getBottomHeadersHeight(state),\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n  const floatingHeaders = rightHeaders.filter((header) => header.float);\n  const fullLengthHeaders = rightHeaders.filter((header) => !header.float);\n  if (fullLengthHeaders.length > 1) {\n    console.warn(`Right headers only support one full length header but ${fullLengthHeaders.length} were added. Only the first one will be rendered.`);\n  }\n\n  const rightHeader = fullLengthHeaders[0];\n  const userDefinedStyle = rightHeader ? rightHeader.style : {};\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.width !== null) {\n      dispatch(actions.setRightHeaderWidth(dimensions.width));\n    }\n  }, [dimensions]);\n\n  // Memoize this since the ModularHeader is memoized, and we only want to re-render if the style actually changes\n  let style = useMemo(() => {\n    const styleObject = {};\n    if (bottomHeadersHeight !== 0) {\n      styleObject['height'] = `calc(100% - ${bottomHeadersHeight}px)`;\n    }\n    return styleObject;\n  }, [bottomHeadersHeight]);\n  style = Object.assign({}, style, userDefinedStyle);\n\n  if (customizableUI) {\n    const renderRightHeader = () => {\n      if (rightHeader) {\n        const { dataElement } = rightHeader;\n        return (<ModularHeader ref={elementRef} {...rightHeader} key={dataElement} style={style} />);\n      }\n    };\n    return (\n      <div>\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.RIGHT} />\n        {renderRightHeader()}\n      </div>\n    );\n  }\n  return null;\n}\n\nexport default RightHeaderContainer;","import RightHeader from './RightHeaderContainer';\n\nexport default RightHeader;","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './BottomHeader.scss';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport DataElementWrapper from '../../DataElementWrapper';\nimport { PLACEMENT } from 'constants/customizationVariables';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport actions from 'actions';\n\nconst BottomHeaderContainer = () => {\n  const [\n    featureFlags,\n    bottomHeaders\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getBottomHeaders(state)\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n\n  const floatingHeaders = bottomHeaders.filter((header) => header.float);\n  const fullLengthHeader = bottomHeaders.filter((header) => !header.float);\n\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.height !== null && floatingHeaders.length > 0) {\n      dispatch(actions.setBottomFloatingContainerHeight(dimensions.height));\n    }\n  }, [dimensions, floatingHeaders.length]);\n\n  if (customizableUI) {\n    const modularHeaders = fullLengthHeader.map((header) => {\n      const { dataElement } = header;\n      return (\n        <ModularHeader {...header} key={dataElement} />\n      );\n    });\n    return (\n      <DataElementWrapper dataElement=\"bottom-headers\" className=\"bottom-headers-wrapper\">\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.BOTTOM} ref={elementRef} />\n        {modularHeaders}\n      </DataElementWrapper>\n    );\n  }\n  return null;\n};\n\nexport default BottomHeaderContainer;","import BottomHeader from './BottomHeaderContainer';\n\nexport default BottomHeader;","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './TopHeader.scss';\nimport ModularHeader from '../ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport { PLACEMENT, POSITION } from 'constants/customizationVariables';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport actions from 'actions';\n\nconst TopHeaderContainer = () => {\n  const [\n    featureFlags,\n    topHeaders,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeaders(state)\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n\n  // Top headers can be either normal headers, or floating headers. You can have a max of two normal headers.\n  // There is one float container that can hold as many floating headers as you want.\n\n  // We first filter out the normal headers\n  const fullLengthHeaders = topHeaders.filter((header) => !header.float);\n  // Only two headers can be added to the top\n  if (fullLengthHeaders.length > 2) {\n    console.warn(`Top headers only support two full length headers but ${fullLengthHeaders.length} were added. Only the first two will be rendered.`);\n  }\n\n  // We sort the top headers by their order: start and end\n  const sortedTopHeaders = fullLengthHeaders.reduce((sortedHeaders, header, index) => {\n    if (index > 1) {\n      return sortedHeaders;\n    }\n\n    const { position } = header;\n    if (position === POSITION.START) {\n      sortedHeaders.unshift(header);\n    } else {\n      sortedHeaders.push(header);\n    }\n    return sortedHeaders;\n  }, []);\n\n  const floatingHeaders = topHeaders.filter((header) => header.float);\n\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.height !== null && floatingHeaders.length > 0) {\n      dispatch(actions.setTopFloatingContainerHeight(dimensions.height));\n    }\n  }, [dimensions, floatingHeaders.length]);\n\n  if (customizableUI) {\n    const modularHeaders = sortedTopHeaders.map((header, index) => {\n      const { dataElement } = header;\n      const autohide = index === 0 ? false : header.autohide;\n      return (\n        <ModularHeader {...header} key={dataElement} autohide={autohide} />\n      );\n    });\n    return (\n      <div>\n        {modularHeaders}\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.TOP} ref={elementRef} />\n      </div>\n    );\n  }\n  return null;\n};\n\nexport default TopHeaderContainer;","import TopHeader from './TopHeaderContainer';\n\nexport default TopHeader;","import React from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport { ItemTypes } from 'constants/dnd';\n\nconst layerStyles = {\n  position: 'fixed',\n  pointerEvents: 'none',\n  zIndex: 99999,\n  left: 0,\n  top: 0,\n  width: '100%',\n  height: '100%'\n};\n\nconst getItemStyles = (initialOffset, currentOffset) => {\n  if (!initialOffset || !currentOffset) {\n    return {\n      display: 'none'\n    };\n  }\n  const { x, y } = currentOffset;\n  const transform = `translate(calc(${x}px - 50%), calc(${y}px - 100%))`;\n  return {\n    transform,\n    WebkitTransform: transform,\n  };\n};\n\nexport const OutlinesDragLayer = () => {\n  const {\n    itemType,\n    item,\n    isDragging,\n    initialOffset,\n    currentOffset\n  } = useDragLayer((dragLayerState) => ({\n    itemType: dragLayerState.getItemType(),\n    item: dragLayerState.getItem(),\n    isDragging: dragLayerState.isDragging(),\n    initialOffset: dragLayerState.getInitialSourceClientOffset(),\n    currentOffset: dragLayerState.getClientOffset(),\n  }));\n\n  const renderDragItem = () => {\n    if (!item) {\n      return null;\n    }\n\n    const { dragOutline } = item;\n\n    switch (itemType) {\n      case ItemTypes.OUTLINE:\n        return (\n          <>\n            {dragOutline.getName()}\n          </>\n        );\n      default:\n        return null;\n    }\n  };\n\n  if (!isDragging) {\n    return null;\n  }\n\n  return (\n    <div style={layerStyles}>\n      <div\n        className=\"bookmark-outline-single-container preview\"\n        style={getItemStyles(initialOffset, currentOffset)}\n      >\n        {renderDragItem()}\n      </div>\n    </div>\n  );\n};\n","import React, { useState, useLayoutEffect, useRef, useEffect } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { DndProvider } from 'react-dnd';\nimport { isMobileDevice } from 'helpers/device';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport TouchBackEnd from 'react-dnd-touch-backend';\nimport OutlineControls from '../../OutlineControls';\nimport Outline from 'components/Outline';\nimport OutlineContext from 'components/Outline/Context';\nimport Button from 'components/Button';\nimport OutlineContent from 'src/components/OutlineContent';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport '../../../constants/bookmarksOutlinesShared.scss';\nimport './GenericOutlinesPanel.scss';\nimport { OutlinesDragLayer } from './OutlinesDragLayer';\n\nconst GenericOutlinesPanel = () => {\n  const [\n    isDisabled,\n    outlines,\n    outlineControlVisibility,\n    outlineEditingEnabled,\n    shouldAutoExpandOutlines,\n    currentPage,\n    pageLabels,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, 'outlines-panel'),\n      selectors.getOutlines(state),\n      selectors.isOutlineControlVisible(state),\n      selectors.getOutlineEditingEnabled(state),\n      selectors.shouldAutoExpandOutlines(state),\n      selectors.getCurrentPage(state),\n      selectors.getPageLabels(state),\n    ],\n    shallowEqual,\n  );\n\n  const defaultDestText = 'Full Page';\n  const areaDestinationText = 'Area Selection';\n  const defaultDestCoord = { x: 0, y: 0 };\n\n  const [currentDestText, setCurrentDestText] = useState(defaultDestText);\n  const [currentDestCoord, setCurrentDestCoord] = useState(defaultDestCoord);\n  const [currentDestPage, setCurrentDestPage] = useState(currentPage);\n  const [isOutlineEditable, setOutlineEditable] = useState(false);\n  const [activeOutlinePath, setActiveOutlinePath] = useState(null);\n  const [isAddingNewOutline, setAddingNewOutline] = useState(false);\n  const [editingOutlines, setEditingOutlines] = useState({});\n  const [isAnyOutlineRenaming, setAnyOutlineRenaming] = useState(false);\n  const [isMultiSelectMode, setMultiSelectMode] = useState(false);\n  const [selectedOutlines, setSelectedOutlines] = useState([]);\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n  const nextPathRef = useRef(null);\n  const TOOL_NAME = 'OutlineDestinationCreateTool';\n  const tool = core.getTool(TOOL_NAME);\n\n  useLayoutEffect(() => {\n    setAddingNewOutline(false);\n\n    if (nextPathRef.current !== null) {\n      setActiveOutlinePath(nextPathRef.current);\n      nextPathRef.current = null;\n    }\n\n    const shouldResetMultiSelectedMode = outlines.length === 0;\n    if (shouldResetMultiSelectedMode) {\n      setMultiSelectMode(false);\n    }\n  }, [outlines]);\n\n  useEffect(() => {\n    setOutlineEditable(core.isFullPDFEnabled() && outlineEditingEnabled);\n  }, [outlineEditingEnabled]);\n\n  useEffect(() => {\n    const isAnyEditing = Object.values(editingOutlines).some((value) => value);\n    setAnyOutlineRenaming(isAnyEditing);\n  }, [editingOutlines, outlines]);\n\n  useEffect(() => {\n    const onSetDestination = (annotation) => {\n      setCurrentDestText(annotation['IsText'] ? annotation.getCustomData('trn-annot-preview') : areaDestinationText);\n      setCurrentDestCoord({ x: annotation['X'], y: annotation['Y'] });\n      setCurrentDestPage(annotation['PageNumber']);\n    };\n\n    const onOutlinesBookmarksChanged = () => {\n      core.getOutlines((outlines) => {\n        dispatch(actions.setOutlines(outlines));\n      });\n    };\n\n    const onDocumentLoaded = () => {\n      setActiveOutlinePath(null);\n    };\n\n    core.addEventListener('outlineSetDestination', onSetDestination);\n    window.addEventListener('outlineBookmarksChanged', onOutlinesBookmarksChanged);\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => {\n      core.removeEventListener('outlineSetDestination', onSetDestination);\n      window.removeEventListener('outlineBookmarksChanged', onOutlinesBookmarksChanged);\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n    };\n  }, []);\n\n  const getCurrentDestViewerCoord = (pageNum, { x, y }) => {\n    const docViewer = core.getDocumentViewer().getDocument();\n    // convert annotation coordinates to viewerCoordinates because PDFNet used PDF coordinates\n    return docViewer.getViewerCoordinates(pageNum, x, y);\n  };\n\n  const addNewOutline = async (name) => {\n    const { x, y } = getCurrentDestViewerCoord(currentDestPage, currentDestCoord);\n    let nextPath;\n    let outlineName = name;\n    if (![defaultDestText, areaDestinationText].includes(currentDestText) && !name) {\n      outlineName = currentDestText.slice(0, 40);\n    } else if (!name) {\n      outlineName = t('message.untitled');\n    }\n    if (outlines.length === 0) {\n      nextPath = await outlineUtils.addRootOutline(outlineName, currentDestPage, x, y, 0);\n    } else {\n      nextPath = await outlineUtils.addNewOutline(outlineName, activeOutlinePath, currentDestPage, x, y, 0);\n    }\n\n    nextPathRef.current = nextPath;\n    updateOutlines();\n  };\n\n  const updateOutlines = () => {\n    core.getOutlines((outlines) => {\n      dispatch(actions.setOutlines(outlines));\n    });\n\n    clearOutlineDestination();\n    setEditingOutlines({});\n  };\n\n  const getPath = (outline) => {\n    return outlineUtils.getPath(outline);\n  };\n\n  const clearOutlineDestination = () => {\n    core.setToolMode(defaultTool);\n    setCurrentDestText(defaultDestText);\n    setCurrentDestCoord(defaultDestCoord);\n    setCurrentDestPage(currentPage);\n    tool.clearOutlineDestination();\n  };\n\n  const updateOutlineDest = async (outlinePath) => {\n    const { x, y } = getCurrentDestViewerCoord(currentDestPage, currentDestCoord);\n    await outlineUtils.setOutlineDestination(outlinePath, currentDestPage, x, y, 0);\n    nextPathRef.current = outlinePath;\n    updateOutlines();\n  };\n\n  useEffect(() => {\n    if (currentDestText === defaultDestText) {\n      setCurrentDestPage(currentPage);\n    }\n  }, [currentDestText, currentPage]);\n\n  useEffect(() => {\n    if (isAddingNewOutline) {\n      core.setToolMode(TOOL_NAME);\n    } else {\n      clearOutlineDestination();\n    }\n  }, [isAddingNewOutline]);\n\n  const generalMoveOutlineAction = (dragOutline, dropOutline, moveDirection) => {\n    const dragPath = getPath(dragOutline);\n    const dropPath = getPath(dropOutline);\n    setSelectedOutlines([]);\n\n    moveDirection.call(outlineUtils, dragPath, dropPath).then((path) => {\n      updateOutlines();\n      nextPathRef.current = path;\n    });\n    core.goToOutline(dragOutline);\n  };\n\n  const moveOutlineAfterTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineAfterTarget);\n  };\n\n  const moveOutlineBeforeTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineBeforeTarget);\n  };\n\n  const moveOutlineInward = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineInTarget);\n  };\n\n  const renameOutline = async (outlinePath, newName) => {\n    await outlineUtils.setOutlineName(outlinePath, newName);\n    updateOutlines();\n  };\n\n  const removeOutlines = async (outlinesToRemove) => {\n    outlinesToRemove.sort().reverse();\n    const confirmationWarning = {\n      message: t('warning.deleteOutline.message'),\n      title: t('warning.deleteOutline.title'),\n      confirmBtnText: t('action.delete'),\n      onConfirm: async () => {\n        for (let i = 0; i < outlinesToRemove.length; i++) {\n          const fullIndex = outlinesToRemove[i];\n          await outlineUtils.deleteOutline(fullIndex);\n        }\n        updateOutlines();\n        setActiveOutlinePath(null);\n        setSelectedOutlines([]);\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <div className=\"Panel GenericOutlinesPanel bookmark-outline-panel\">\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">{t('component.outlinesPanel')}</div>\n        {isOutlineEditable &&\n          (isMultiSelectMode ? (\n            <Button\n              className=\"bookmark-outline-control-button\"\n              dataElement={DataElements.OUTLINE_MULTI_SELECT}\n              label={t('option.bookmarkOutlineControls.done')}\n              disabled={isAddingNewOutline}\n              onClick={() => setMultiSelectMode(false)}\n            />\n          ) : (\n            <Button\n              className=\"bookmark-outline-control-button\"\n              dataElement={DataElements.OUTLINE_MULTI_SELECT}\n              label={t('action.edit')}\n              disabled={isAddingNewOutline || outlines.length === 0}\n              onClick={() => {\n                setMultiSelectMode(true);\n                setSelectedOutlines([]);\n              }}\n            />\n          ))}\n      </div>\n      <OutlineContext.Provider\n        value={{\n          currentDestPage: pageLabels[currentDestPage - 1],\n          currentDestText,\n          setActiveOutlinePath,\n          activeOutlinePath,\n          isOutlineActive: (outline) => getPath(outline) === activeOutlinePath,\n          setAddingNewOutline,\n          isAddingNewOutline,\n          setEditingOutlines,\n          editingOutlines,\n          selectedOutlines,\n          isAnyOutlineRenaming,\n          isMultiSelectMode,\n          shouldAutoExpandOutlines,\n          isOutlineEditable,\n          addNewOutline,\n          updateOutlines,\n          renameOutline,\n          updateOutlineDest,\n          removeOutlines,\n        }}\n      >\n        {outlineControlVisibility && <OutlineControls />}\n        <DndProvider backend={isMobileDevice ? TouchBackEnd : HTML5Backend}>\n          <OutlinesDragLayer />\n\n          <div className=\"bookmark-outline-row\">\n            {!isAddingNewOutline && outlines.length === 0 && (\n              <div className=\"msg msg-no-bookmark-outline\">{t('message.noOutlines')}</div>\n            )}\n            {outlines.map((outline) => (\n              <Outline\n                key={outlineUtils.getOutlineId(outline)}\n                outline={outline}\n                setMultiSelected={(path, value) => {\n                  if (selectedOutlines.find((outline) => outline === path)) {\n                    if (!value) {\n                      setSelectedOutlines(selectedOutlines.filter((outline) => outline !== path));\n                    }\n                  } else {\n                    if (value) {\n                      setSelectedOutlines([...selectedOutlines, path]);\n                    }\n                  }\n                }}\n                moveOutlineInward={moveOutlineInward}\n                moveOutlineBeforeTarget={moveOutlineBeforeTarget}\n                moveOutlineAfterTarget={moveOutlineAfterTarget}\n              />\n            ))}\n            {isAddingNewOutline && activeOutlinePath === null && (\n              <DataElementWrapper className=\"bookmark-outline-single-container editing\">\n                <OutlineContent isAdding={true} text={''} onCancel={() => setAddingNewOutline(false)} />\n              </DataElementWrapper>\n            )}\n          </div>\n        </DndProvider>\n\n        {isOutlineEditable && (\n          <DataElementWrapper\n            className=\"bookmark-outline-footer\"\n            dataElement={DataElements.OUTLINE_ADD_NEW_BUTTON_CONTAINER}\n          >\n            {isMultiSelectMode ? (\n              <>\n                <Button\n                  className=\"multi-selection-button\"\n                  img=\"icon-menu-add\"\n                  disabled={selectedOutlines.length > 0 || isAddingNewOutline}\n                  onClick={() => setAddingNewOutline(true)}\n                />\n                <Button\n                  className=\"multi-selection-button\"\n                  img=\"icon-delete-line\"\n                  disabled={selectedOutlines.length === 0}\n                  onClick={() => removeOutlines(selectedOutlines)}\n                />\n              </>\n            ) : (\n              <Button\n                className=\"bookmark-outline-control-button add-new-button\"\n                img=\"icon-menu-add\"\n                dataElement={DataElements.OUTLINE_ADD_NEW_BUTTON}\n                disabled={isAddingNewOutline}\n                label={`${t('action.add')} ${t('component.outlinePanel')}`}\n                onClick={() => setAddingNewOutline(true)}\n              />\n            )}\n          </DataElementWrapper>\n        )}\n      </OutlineContext.Provider>\n    </div>\n  );\n};\n\nexport default React.memo(GenericOutlinesPanel);\n","import GenericOutlinesPanel from './GenericOutlinesPanel';\n\nexport default GenericOutlinesPanel;\n","import React from 'react';\nimport selectors from 'selectors';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport './ZoomText.scss';\n\nexport default function ZoomText() {\n  const currentZoom = useSelector(selectors.getZoom);\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"ZoomText\">\n      <div className=\"label\">{t('action.zoom')}:</div>\n      &nbsp;\n      <div className=\"value\">{Math.ceil(currentZoom * 100)}%</div>\n    </div>\n  );\n}\n","import React, { useCallback, useState, useLayoutEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport './Flyout.scss';\nimport Icon from 'components/Icon';\nimport ToolButton from 'components/ToolButton';\nimport RibbonItem from '../RibbonItem';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport actions from 'actions';\nimport { useTranslation } from 'react-i18next';\nimport { FLYOUT_ITEM_HEIGHT } from 'constants/flyoutConstants';\nimport { ITEM_TYPE, DEFAULT_GAP } from 'constants/customizationVariables';\nimport getRootNode from 'helpers/getRootNode';\nimport ZoomText from '../Helpers/ZoomText';\nimport ToolGroupButton from '../ToolGroupButton';\nimport { getIconDOMElement, getSubMenuDOMElement } from '../Helpers/responsiveness-helper';\nimport { getFlyoutPositionOnElement } from 'helpers/flyoutHelper';\n\nconst Flyout = () => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [flyoutMap,\n    activeFlyout,\n    position,\n    activeToolGroup,\n    toggleElement,\n    topHeadersHeight,\n    bottomHeadersHeight\n  ] = useSelector((state) => [\n    selectors.getFlyoutMap(state),\n    selectors.getActiveFlyout(state),\n    selectors.getFlyoutPosition(state),\n    selectors.getActiveToolGroup(state),\n    selectors.getFlyoutToggleElement(state),\n    selectors.getTopHeadersHeight(state),\n    selectors.getBottomHeadersHeight(state)\n  ]);\n  const flyoutProperties = flyoutMap[activeFlyout];\n  const horizontalHeadersUsedHeight = topHeadersHeight + bottomHeadersHeight + DEFAULT_GAP;\n  const {\n    dataElement,\n    items,\n    className\n  } = flyoutProperties;\n  const [activeItem, setActiveItem] = useState(null);\n  const flyoutRef = React.createRef();\n  const [correctedPosition, setCorrectedPosition] = useState(position);\n  const [maxHeightValue, setMaxHeightValue] = useState(window.innerHeight - horizontalHeadersUsedHeight);\n\n  useLayoutEffect(() => {\n    const correctedPosition = { x: position.x, y: position.y };\n    const appRect = getRootNode().getElementById('app').getBoundingClientRect();\n    const maxHeightValue = appRect.height - horizontalHeadersUsedHeight;\n    setMaxHeightValue(maxHeightValue);\n\n    if (toggleElement) {\n      const { x, y } = getFlyoutPositionOnElement(toggleElement, flyoutRef);\n      correctedPosition.x = x;\n      correctedPosition.y = y;\n    } else {\n      const correctedPosition = { x: position.x, y: position.y };\n      const widthOverflow = position.x + flyoutRef.current?.offsetWidth - appRect.width;\n      const maxElementHeight = activeItem && activeItem.children.length > items.length ? activeItem.children.length : items.length;\n      const heightOverflow = position.y + maxElementHeight * (FLYOUT_ITEM_HEIGHT + 8) - appRect.height;\n      if (widthOverflow > 0) {\n        correctedPosition.x = position.x - widthOverflow;\n      }\n      if (heightOverflow > 0) {\n        correctedPosition.y = position.y - heightOverflow;\n      }\n      if (correctedPosition.x < 0) {\n        correctedPosition.x = 0;\n      }\n      if (correctedPosition.y < 0) {\n        correctedPosition.y = 0;\n      }\n    }\n    setCorrectedPosition(correctedPosition);\n  }, [activeItem, position]);\n\n  const onClickOutside = useCallback(() => {\n    dispatch(actions.closeElement(activeFlyout));\n  }, [dispatch, activeFlyout]);\n  useOnClickOutside(flyoutRef, onClickOutside);\n\n  const onClickHandler = (flyoutItem, isChild) => (e) => {\n    e.stopPropagation();\n    e.preventDefault();\n    if (flyoutItem.children && flyoutItem !== activeItem && !isChild) {\n      setActiveItem(flyoutItem);\n    } else if (!isChild) {\n      setActiveItem(null);\n    }\n    if (flyoutItem.onClick) {\n      flyoutItem.onClick();\n    }\n  };\n\n  const renderFlyoutItem = (flyoutItem, index, isChild = false) => {\n    const itemIsATool = !!flyoutItem.toolName;\n    const itemIsAToolGroup = !!flyoutItem.toolGroup;\n    const itemIsARibbonItem = flyoutItem.type === ITEM_TYPE.RIBBON_ITEM;\n    const itemIsAZoomOptionsButton = flyoutItem.dataElement === 'zoomOptionsButton';\n    const itemsToRender = isChild ? activeItem.children : items;\n\n    const getFlyoutItemWrapper = (elementDOM, additionalClass) => {\n      return (\n        <div key={flyoutItem.label} data-element={flyoutItem.dataElement}\n          onClick={onClickHandler(flyoutItem, isChild)}\n          className={classNames({\n            'flyout-item-container': true,\n            [additionalClass]: true\n          })}\n        >\n          {elementDOM}\n        </div>\n      );\n    };\n\n    if (itemIsAToolGroup) {\n      const isActiveClass = activeToolGroup === flyoutItem.toolGroup ? 'active' : '';\n      const toolGroupElement = <ToolGroupButton\n        key={flyoutItem.key}\n        {...flyoutItem}\n        onClick={onClickHandler()}\n        isFlyoutItem={true}\n        iconDOMElement={getIconDOMElement(flyoutItem, itemsToRender)}\n        subMenuDOMElement={getSubMenuDOMElement(flyoutItem, itemsToRender)}\n      />;\n      return getFlyoutItemWrapper(toolGroupElement, isActiveClass);\n    }\n    if (itemIsARibbonItem) {\n      const ribbonItemElement = <RibbonItem key={flyoutItem.label}\n        {...flyoutItem}\n        isFlyoutItem={true}\n        iconDOMElement={getIconDOMElement(flyoutItem, itemsToRender)}\n      />;\n      return getFlyoutItemWrapper(ribbonItemElement);\n    }\n    if (itemIsAZoomOptionsButton) {\n      const zoomOptionsElement = (\n        <>\n          <div className=\"menu-container\">\n            <ZoomText />\n          </div>\n          {flyoutItem.children && <Icon className=\"icon-open-submenu\" glyph=\"icon-chevron-right\" />}\n        </>\n      );\n      return getFlyoutItemWrapper(zoomOptionsElement, 'zoom-options');\n    }\n    return (flyoutItem === ITEM_TYPE.DIVIDER ? <div className=\"divider\" key={`divider-${index}`} /> : (\n      <div key={flyoutItem.label} className=\"flyout-item-container\"\n        data-element={flyoutItem.dataElement} onClick={onClickHandler(flyoutItem, isChild)}>\n        <div className=\"menu-container\">\n          {\n            itemIsATool ? (\n              // We should update when we have the customizable Tool Button component\n              <ToolButton\n                className={classNames({ ZoomItem: true })}\n                role=\"option\"\n                toolName={flyoutItem.toolName}\n                label={flyoutItem.label}\n                img={flyoutItem.icon}\n              />\n            ) : (\n              <div className=\"icon-label-wrapper\">\n                {getIconDOMElement(flyoutItem, itemsToRender)}\n                {<div className=\"flyout-item-label\">{t(flyoutItem.label)}</div>}\n              </div>\n            )\n          }\n        </div>\n        {getSubMenuDOMElement(flyoutItem, itemsToRender)}\n      </div>\n    ));\n  };\n\n  const renderBackButton = () => {\n    const isZoomOptions = activeItem.dataElement === 'zoomOptionsButton';\n    return <div className=\"back-button-container\" onClick={() => setActiveItem(null)}>\n      <Icon glyph=\"icon-chevron-left\" />\n      {isZoomOptions ? <ZoomText /> : <div className=\"back-button-label\">{t('action.back')}</div>}\n    </div>;\n  };\n\n  const flyoutStyles = {\n    left: correctedPosition.x,\n    top: correctedPosition.y,\n    maxHeight: maxHeightValue\n  };\n\n  return (\n    <div className=\"Flyout\" data-element={dataElement} ref={flyoutRef} style={flyoutStyles}>\n      <div id=\"FlyoutContainer\"\n        className={classNames({\n          'FlyoutContainer': true,\n          [className]: true\n        })}>\n        {activeItem ? (\n          <>\n            {renderBackButton()}\n            {activeItem.children.map(((activeChild, index) => renderFlyoutItem(activeChild, index, true)))}\n          </>\n        ) :\n          items.map((flyoutItem, index) => renderFlyoutItem(flyoutItem, index))\n        }\n      </div>\n    </div>\n  );\n};\n\nexport default Flyout;\n","import Flyout from './Flyout';\n\nexport default Flyout;\n","import getRootNode from 'helpers/getRootNode';\n\nexport function getFlyoutPositionOnElement(dataElement, flyoutRef) {\n  // Get the container, toggle element, and target elements\n  const appRect = getRootNode().getElementById('app').getBoundingClientRect();\n  const referenceElement = getRootNode().querySelector(`[data-element=\"${dataElement}\"]`);\n  const referenceButtonRect = referenceElement.getBoundingClientRect();\n  const parentHeader = referenceElement.closest('.ModularHeader');\n  const targetElement = flyoutRef.current;\n  const defaultOffset = 6;\n\n  // Calculate the available space on the left and right sides of the reference element within the container\n  const availableSpaceLeft = referenceButtonRect.left - appRect.left;\n  const availableSpaceRight = appRect.right - referenceButtonRect.right;\n  let flyoutX = referenceButtonRect.left;\n\n  if (parentHeader?.classList.contains('LeftHeader')) {\n    flyoutX += referenceButtonRect.width + defaultOffset;\n  } else if (parentHeader?.classList.contains('RightHeader')) {\n    flyoutX -= (targetElement.clientWidth + defaultOffset);\n  } else if (availableSpaceLeft >= availableSpaceRight) {\n    flyoutX = referenceButtonRect.right - targetElement.clientWidth;\n  }\n\n  // Calculate the available space above and below the reference element within the container\n  const availableSpaceAbove = referenceButtonRect.top - appRect.top;\n  const availableSpaceBelow = appRect.bottom - referenceButtonRect.bottom;\n  let flyoutY = referenceButtonRect.top;\n\n  if (parentHeader?.classList.contains('TopHeader')) {\n    flyoutY += referenceButtonRect.height + defaultOffset;\n  } else if (parentHeader?.classList.contains('BottomHeader')) {\n    flyoutY -= (targetElement.clientHeight + defaultOffset);\n  } else if (availableSpaceAbove >= availableSpaceBelow) {\n    flyoutY = referenceButtonRect.bottom - targetElement.clientHeight;\n  }\n\n  return { x: flyoutX, y: flyoutY };\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport Flyout from 'components/ModularComponents/Flyout';\n\nconst propTypes = {};\nconst FlyoutContainer = () => {\n  const [flyoutMap, activeFlyout] = useSelector((state) => [\n    selectors.getFlyoutMap(state),\n    selectors.getActiveFlyout(state),\n  ]);\n\n  return (\n    <div className=\"FlyoutContainer\">\n      {activeFlyout && flyoutMap[activeFlyout] && <Flyout/>}\n    </div>\n  );\n};\n\nFlyoutContainer.propTypes = propTypes;\n\nexport default FlyoutContainer;\n","import FlyoutContainer from './FlyoutContainer';\n\nexport default FlyoutContainer;\n","import RibbonOverflowFlyout from './RibbonOverflowFlyout';\n\nexport default RibbonOverflowFlyout;","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport './RibbonOverflowFlyout.scss';\n\nconst RibbonOverflowFlyout = (props) => {\n  const dispatch = useDispatch();\n  const { items } = props;\n\n  useEffect(() => {\n    const RibbonOverflowFlyout = {\n      dataElement: 'RibbonOverflowFlyout',\n      className: 'RibbonOverflowFlyout',\n      items: items || [],\n    };\n    dispatch(actions.addFlyout(RibbonOverflowFlyout));\n  }, []);\n\n  return null;\n};\n\nexport default RibbonOverflowFlyout;\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport './GroupedToolsOverflowFlyout.scss';\nimport PropTypes from 'prop-types';\n\nconst GroupedToolsOverflowFlyout = (props) => {\n  const dispatch = useDispatch();\n  const { items, dataElement } = props;\n\n  useEffect(() => {\n    const GroupedToolsOverflowFlyout = {\n      dataElement: dataElement,\n      className: 'GroupedToolsOverflowFlyout',\n      items: items || [],\n    };\n    dispatch(actions.addFlyout(GroupedToolsOverflowFlyout));\n  }, []);\n\n  return null;\n};\n\nGroupedToolsOverflowFlyout.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n};\n\nexport default GroupedToolsOverflowFlyout;\n","import GroupedToolsOverflowFlyout from './GroupedToolsOverflowFlyout';\n\nexport default GroupedToolsOverflowFlyout;","import useOnTextSelected from './useOnTextSelected';\n\nexport default useOnTextSelected;","import { useEffect, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnTextSelected() {\n  const [\n    popupItems,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.TEXT_POPUP),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const [selectedTextQuads, setSelectedTextQuads] = useState([]);\n\n  useEffect(() => {\n    const textSelectTool = core.getTool('TextSelect', activeDocumentViewerKey);\n    const onSelectionComplete = (startQuad, allQuads) => {\n      if (popupItems.length > 0) {\n        setSelectedTextQuads(allQuads);\n        dispatch(actions.openElement(DataElements.TEXT_POPUP));\n      }\n    };\n\n    textSelectTool.addEventListener('selectionComplete', onSelectionComplete);\n    return () => textSelectTool.removeEventListener('selectionComplete', onSelectionComplete);\n  }, [popupItems, activeDocumentViewerKey]);\n\n  return { selectedTextQuads };\n}","import { useEffect } from 'react';\nimport core from 'core';\nimport getRootNode from 'helpers/getRootNode';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nexport default (handler) => {\n  const [\n    activeDocumentViewerKey,\n    isMultiViewerMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveDocumentViewerKey(state),\n      selectors.isMultiViewerMode(state),\n    ],\n    shallowEqual,\n  );\n\n  useEffect(() => {\n    const listener = (e) => {\n      const { tagName } = e.target;\n      const clickedOnInput = tagName === 'INPUT';\n      const clickedOnTextarea = tagName === 'TEXTAREA';\n      const clickedOnFreeTextarea = !!((\n        e.target.className === 'ql-editor'\n        || e.target.parentNode.className === 'ql-editor'\n        || e.target.parentNode.parentNode.className === 'ql-editor'\n      ));\n\n      const documentContainer =\n        isMultiViewerMode\n          ? getRootNode().querySelector(`#DocumentContainer${activeDocumentViewerKey}`)\n          : getRootNode().querySelector('.DocumentContainer');\n      const clickedOnDocumentContainer = documentContainer.contains(e.target);\n\n      if (\n        clickedOnDocumentContainer &&\n        // when clicking on these two elements we want to display the default context menu so that users can use auto-correction, look up dictionary, etc...\n        !(clickedOnInput || clickedOnTextarea || clickedOnFreeTextarea)\n      ) {\n        e.preventDefault();\n        handler(e);\n      }\n    };\n\n    getRootNode().addEventListener('contextmenu', listener);\n    core.addEventListener('longTap', listener, null, activeDocumentViewerKey);\n    return () => {\n      getRootNode().removeEventListener('contextmenu', listener);\n      core.removeEventListener('longTap', listener, null, activeDocumentViewerKey);\n    };\n  }, [handler, activeDocumentViewerKey, isMultiViewerMode]);\n};\n","import useOnRightClick from './useOnRightClick';\n\nexport default useOnRightClick;","import useOnContextMenuOpen from './useOnContextMenuOpen';\n\nexport default useOnContextMenuOpen;","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nimport useOnRightClick from 'hooks/useOnRightClick';\n\nimport { isMobile as isMobileCSS, isMobileDevice } from 'helpers/device';\n\nexport default function useOnContextMenuOpen() {\n  const [\n    popupItems,\n    isRightClickAnnotationPopupEnabled,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.CONTEXT_MENU_POPUP),\n      selectors.isRightClickAnnotationPopupEnabled(state),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const [clickPosition, setClickPosition] = useState({ left: 0, top: 0 });\n\n  // if right click menu is not turned on, on tablet + phone, ContextMenuPopup won't be available\n  // if it's on, on tablet + phone, it will be available without being draggable\n  const isMobile = !!isMobileDevice || isMobileCSS();\n\n  // Use this to store isRightClickAnnotationPopupEnabled value to avoid stale closure\n  const isRightClickAnnotationPopupEnabledRef = useRef();\n\n  useEffect(() => {\n    isRightClickAnnotationPopupEnabledRef.current = isRightClickAnnotationPopupEnabled;\n  }, [isRightClickAnnotationPopupEnabled]);\n\n  useOnRightClick(\n    useCallback((e) => {\n      const { pageX: left, pageY: top } = e;\n\n      const annotationUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n      if ((!isRightClickAnnotationPopupEnabledRef.current && !isMobile) || (isRightClickAnnotationPopupEnabledRef.current && !annotationUnderMouse)) {\n        if (popupItems.length > 0) {\n          setClickPosition({ left, top });\n          dispatch(actions.openElement(DataElements.CONTEXT_MENU_POPUP));\n        }\n      }\n    }, [popupItems, activeDocumentViewerKey])\n  );\n\n  return { clickPosition };\n}","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport debounce from 'lodash/debounce';\nimport useOnRightClick from 'hooks/useOnRightClick';\nimport { isMac } from 'helpers/device';\nimport getGroupedLinkAnnotations from 'helpers/getGroupedLinkAnnotations';\nimport DataElements from 'constants/dataElement';\n\nconst { ToolNames } = window.Core.Tools;\nconst { Annotations } = window.Core;\n\nexport default function useOnAnnotationPopupOpen() {\n  const [\n    popupItems,\n    isRightClickAnnotationPopupEnabled,\n    isNotesPanelOpen,\n    isMeasurementOverlayOpen,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.ANNOTATION_POPUP),\n      selectors.isRightClickAnnotationPopupEnabled(state),\n      selectors.isElementOpen(state, DataElements.NOTES_PANEL),\n      selectors.isElementOpen(state, DataElements.MEASUREMENT_OVERLAY),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  // focusedAnnotation is selectedAnnotation by default and right-clicked annotation (even when there're multiple annotations selected) when API is on\n  const [focusedAnnotation, setFocusedAnnotation] = useState(null);\n  const [selectedMultipleAnnotations, setSelectedMultipleAnnotations] = useState(false);\n  const [canModify, setCanModify] = useState(false);\n  const [isStylePopupOpen, setIsStylePopupOpen] = useState(false);\n  const [isDatePickerOpen, setDatePickerOpen] = useState(false);\n  const [isDatePickerMount, setDatePickerMount] = useState(false);\n  const [hasAssociatedLink, setHasAssociatedLink] = useState(true);\n  const [includesFormFieldAnnotation, setIncludesFormFieldAnnotation] = useState(false);\n  const [stylePopupRepositionFlag, setStylePopupRepositionFlag] = useState(false);\n\n  // calling this function will always rerender this component\n  // because the position state always has a new object reference\n  const openPopup = () => {\n    if (popupItems.length > 0) {\n      dispatch(actions.openElement(DataElements.ANNOTATION_POPUP));\n    }\n  };\n\n  const closePopup = () => {\n    dispatch(actions.closeElement(DataElements.ANNOTATION_POPUP));\n    setFocusedAnnotation(null);\n    setSelectedMultipleAnnotations(false);\n    setCanModify(false);\n    setIsStylePopupOpen(false);\n    setDatePickerOpen(false);\n    setDatePickerMount(false);\n    setHasAssociatedLink(false);\n    setIncludesFormFieldAnnotation(false);\n  };\n\n  const canAnnotationBeModified = (annotation) => {\n    const isSignedByAppearance = annotation instanceof Annotations.SignatureWidgetAnnotation && annotation.isSignedByAppearance();\n    return core.canModify(annotation) && !isSignedByAppearance;\n  };\n\n  const groupedLinkAnnotations = (annotation) => getGroupedLinkAnnotations(annotation);\n\n  const isInContentEditFocusMode = (annotation) => {\n    // for annotations that are placeholders of content edit, when they are focused, the popup will not open\n    const contentEditManager = core.getContentEditManager();\n    return annotation.isInContentEditFocusMode(contentEditManager);\n  };\n\n  useEffect(() => {\n    if (focusedAnnotation && !isInContentEditFocusMode(focusedAnnotation)) {\n      openPopup();\n    }\n    // stylePopupRepositionFlag is needed here in order to re-open the popup on scroll\n  }, [focusedAnnotation, stylePopupRepositionFlag]);\n\n  useEffect(() => {\n    if (focusedAnnotation) {\n      setHasAssociatedLink(!!groupedLinkAnnotations(focusedAnnotation).length);\n    }\n  }, [focusedAnnotation, groupedLinkAnnotations]);\n\n  // Use this to store isRightClickAnnotationPopupEnabled value to avoid stale closure\n  const isRightClickAnnotationPopupEnabledRef = useRef();\n\n  useEffect(() => {\n    isRightClickAnnotationPopupEnabledRef.current = isRightClickAnnotationPopupEnabled;\n  }, [isRightClickAnnotationPopupEnabled]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (annotations.length === 0 || annotations[0].ToolName === ToolNames.CROP || annotations[0].ToolName === ToolNames.SNIPPING) {\n        return;\n      }\n\n      if (action === 'selected') {\n        if (!isRightClickAnnotationPopupEnabledRef.current) {\n          setFocusedAnnotation(annotations[0]);\n        }\n\n        setSelectedMultipleAnnotations(annotations.length > 1);\n        setIncludesFormFieldAnnotation(annotations.some((annotation) => annotation.isFormFieldPlaceholder()));\n        setCanModify(canAnnotationBeModified(annotations[0]));\n\n        if (isNotesPanelOpen) {\n          setTimeout(() => dispatch(actions.openElement(DataElements.ANNOTATION_NOTE_CONNECTOR_LINE)), 300);\n        }\n\n        const isAnnotationSelectedWithDatePickerOpen = annotations[0] === focusedAnnotation && isDatePickerOpen;\n        if (isAnnotationSelectedWithDatePickerOpen) {\n          closePopup();\n        }\n      }\n\n      const actionOnOtherAnnotation = focusedAnnotation && !annotations.includes(focusedAnnotation);\n      if (action === 'deselected' && !actionOnOtherAnnotation) {\n        closePopup();\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    core.addEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n      core.removeEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n    };\n  }, [focusedAnnotation, isNotesPanelOpen, isDatePickerOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      if (!core.isAnnotationSelected(focusedAnnotation)) {\n        return;\n      }\n\n      if (action === 'modify' && !isMeasurementOverlayOpen) {\n        openPopup();\n      }\n\n      const hasLinkAnnotation = annotations.some((annotation) => annotation instanceof Annotations.Link);\n      if (!hasLinkAnnotation) {\n        return;\n      }\n      if (action === 'add') {\n        setHasAssociatedLink(true);\n      }\n      if (action === 'delete') {\n        setHasAssociatedLink(false);\n      }\n    };\n\n    const onUpdateAnnotationPermission = () => {\n      if (focusedAnnotation) {\n        setCanModify(canAnnotationBeModified(focusedAnnotation));\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n    core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, null, activeDocumentViewerKey);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, null, activeDocumentViewerKey);\n    };\n  }, [canModify, focusedAnnotation, isMeasurementOverlayOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onMouseLeftUp = (e) => {\n      // clicking on the selected annotation is considered clicking outside of this component\n      // so this component will close due to useOnClickOutside\n      // this handler is used to make sure that if we click on the selected annotation, this component will show up again\n      if (focusedAnnotation) {\n        const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n\n        const shouldShowPopup =\n          !isRightClickAnnotationPopupEnabledRef.current\n          && annotUnderMouse === focusedAnnotation\n          && !isInContentEditFocusMode(focusedAnnotation);\n        if (shouldShowPopup) {\n          openPopup();\n        }\n\n        // clicking on full page redactions again should close the stylePopup if it is already open\n        if (focusedAnnotation['redactionType'] === 'fullPage' && isStylePopupOpen) {\n          setIsStylePopupOpen(false);\n        }\n      }\n    };\n\n    core.addEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n    return () => core.removeEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n  }, [focusedAnnotation, isStylePopupOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n    const onScroll = debounce(() => {\n      setStylePopupRepositionFlag((flag) => !flag);\n    }, 100);\n\n    scrollViewElement?.addEventListener('scroll', onScroll, null, activeDocumentViewerKey);\n    return () => scrollViewElement?.removeEventListener('scroll', onScroll, null, activeDocumentViewerKey);\n  }, [activeDocumentViewerKey]);\n\n  useOnRightClick(\n    useCallback((e) => {\n      if (!isRightClickAnnotationPopupEnabledRef.current) {\n        return;\n      }\n\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n      if (annotUnderMouse && annotUnderMouse.ToolName !== ToolNames.CROP) {\n        if (e.ctrlKey && isMac) {\n          return;\n        }\n\n        if (annotUnderMouse !== focusedAnnotation) {\n          if (!core.isAnnotationSelected(annotUnderMouse, activeDocumentViewerKey)) {\n            core.deselectAllAnnotations();\n          }\n          core.selectAnnotation(annotUnderMouse, activeDocumentViewerKey);\n          setFocusedAnnotation(annotUnderMouse);\n        }\n        if (annotUnderMouse === focusedAnnotation && !isInContentEditFocusMode(annotUnderMouse)) {\n          openPopup();\n        }\n      } else {\n        closePopup();\n      }\n    }, [focusedAnnotation, activeDocumentViewerKey])\n  );\n\n  return {\n    focusedAnnotation,\n    selectedMultipleAnnotations,\n    canModify,\n    isStylePopupOpen,\n    setIsStylePopupOpen,\n    isDatePickerOpen,\n    setDatePickerOpen,\n    isDatePickerMount,\n    setDatePickerMount,\n    hasAssociatedLink,\n    includesFormFieldAnnotation,\n    stylePopupRepositionFlag,\n    setStylePopupRepositionFlag,\n    closePopup,\n  };\n}","import useOnAnnotationPopupOpen from './useOnAnnotationPopupOpen';\n\nexport default useOnAnnotationPopupOpen;","import useOnFormFieldAnnotationAddedOrSelected from './useOnFormFieldAnnotationAddedOrSelected';\n\nexport default useOnFormFieldAnnotationAddedOrSelected;","import { useCallback, useEffect, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport useOnRightClick from '../useOnRightClick';\nimport core from 'core';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default function useOnFormFieldAnnotationAddedOrSelected() {\n  const dispatch = useDispatch();\n  const isRightClickAnnotationPopupEnabled = useSelector(\n    (state) => selectors.isRightClickAnnotationPopupEnabled(state)\n  );\n\n  const [currentFormAnnotation, setCurrentlyEditingFormAnnotation] = useState(null);\n\n  const openFormFieldPopup = () => {\n    dispatch(actions.disableElement(DataElements.ANNOTATION_POPUP, PRIORITY_THREE));\n    dispatch(actions.openElement(DataElements.FORM_FIELD_EDIT_POPUP));\n  };\n\n  const closeFormFieldPopup = () => {\n    dispatch(actions.enableElement(DataElements.ANNOTATION_POPUP, PRIORITY_THREE));\n    dispatch(actions.closeElement(DataElements.FORM_FIELD_EDIT_POPUP));\n  };\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.isFormFieldPlaceholder() && annotation.getCustomData('trn-editing-widget-id') === '') {\n        // If for some reason we are drawing a new form field place holder before filling the name for the previous one, we will not switch\n        // to the new annotation until that name is filled\n        if (currentFormAnnotation?.getCustomData('trn-form-field-name') === '') {\n          return;\n        }\n        setCurrentlyEditingFormAnnotation(annotations[0]);\n        openFormFieldPopup();\n      } else if (action === 'delete' && annotation.isFormFieldPlaceholder()) {\n        closeFormFieldPopup();\n        setCurrentlyEditingFormAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      if (isRightClickAnnotationPopupEnabled) {\n        return;\n      }\n\n      if (action === 'selected' && annotations.length && annotations[0].isFormFieldPlaceholder()) {\n        // If the currently set form field annotation has no name set, we don't want to switch it out\n        // as the form field edit popup will show the info for the wrong annotation, as we added logic to prevent\n        // the popup from closing when the field name is empty\n        if (currentFormAnnotation?.getCustomData('trn-form-field-name') === '') {\n          // de-select the form field annotation that was recently selected to avoid confusion\n          core.deselectAnnotation(annotations[0]);\n          return;\n        }\n        setCurrentlyEditingFormAnnotation(annotations[0]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, [currentFormAnnotation]);\n\n  useOnRightClick(\n    useCallback((e) => {\n      if (!isRightClickAnnotationPopupEnabled) {\n        return;\n      }\n\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n      if (annotUnderMouse && annotUnderMouse !== currentFormAnnotation && annotUnderMouse.isFormFieldPlaceholder()) {\n        setCurrentlyEditingFormAnnotation(annotUnderMouse);\n      }\n    }, [currentFormAnnotation, isRightClickAnnotationPopupEnabled])\n  );\n\n  return { annotation: currentFormAnnotation };\n}","import useOnFreeTextEdit from './useOnFreeTextEdit';\n\nexport default useOnFreeTextEdit;","import { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnFreeTextEdit() {\n  const dispatch = useDispatch();\n\n  const [annotation, setAnnotation] = useState(null);\n  const [editor, setEditor] = useState(null);\n\n  useEffect(() => {\n    const handleEditorFocus = (editor, annotation) => {\n      // Use setTimeout to make sure Free Text annotations have time to resize before opening popup\n      setTimeout(() => {\n        if (\n          annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n          !annotation.getContentEditAnnotationId() &&\n          annotation.ToolName !== window.Core.Tools.ToolNames.ADD_PARAGRAPH\n        ) {\n          setAnnotation(annotation);\n          setEditor(editor);\n          dispatch(actions.openElements(DataElements.RICH_TEXT_POPUP));\n        }\n      }, 0);\n    };\n\n    core.addEventListener('editorFocus', handleEditorFocus);\n    return () => {\n      core.removeEventListener('editorFocus', handleEditorFocus);\n    };\n  }, [dispatch]);\n\n  return { editor, annotation };\n}","import useOnInlineCommentPopupOpen from './useOnInlineCommentPopupOpen';\n\nexport default useOnInlineCommentPopupOpen;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnInlineCommentPopupOpen() {\n  const [\n    isNotesPanelOpen,\n    notesInLeftPanel,\n    leftPanelOpen,\n    activeLeftPanel,\n    inlineCommentFilter,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, DataElements.NOTES_PANEL),\n      selectors.getNotesInLeftPanel(state),\n      selectors.isElementOpen(state, DataElements.LEFT_PANEL),\n      selectors.getActiveLeftPanel(state),\n      selectors.getInlineCommentFilter(state),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  const [annotation, setAnnotation] = useState(null);\n  const [isFreeTextAnnotationAdded, setFreeTextAnnotationAdded] = useState(false);\n  const { ToolNames } = window.Core.Tools;\n\n  const isNotesPanelOpenOrActive = isNotesPanelOpen || (notesInLeftPanel && leftPanelOpen && activeLeftPanel === 'notesPanel');\n\n  const closeAndReset = () => {\n    dispatch(actions.closeElement(DataElements.INLINE_COMMENT_POPUP));\n    setAnnotation(null);\n    setFreeTextAnnotationAdded(false);\n  };\n\n  const isFreeTextAnnotation = (annot) => {\n    return annot instanceof window.Core.Annotations.FreeTextAnnotation;\n  };\n\n  useEffect(() => {\n    const onAnnotationDoubleClicked = (annot) => {\n      if (isFreeTextAnnotation(annot)) {\n        closeAndReset();\n      }\n    };\n\n    core.addEventListener('annotationDoubleClicked', onAnnotationDoubleClicked, null, activeDocumentViewerKey);\n    return () => core.removeEventListener('annotationDoubleClicked', onAnnotationDoubleClicked, null, activeDocumentViewerKey);\n  }, [activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      const selectedAnnotationTool = annotations[0].ToolName;\n      const shouldSetCommentingAnnotation =\n        action === 'selected'\n        && annotations.length\n        && !isFreeTextAnnotationAdded\n        && selectedAnnotationTool !== ToolNames.CROP;\n      if (shouldSetCommentingAnnotation) {\n        setAnnotation(annotations[0]);\n      }\n\n      if (action === 'deselected' && annotations.length) {\n        setFreeTextAnnotationAdded(false);\n        if (annotations.some((annot) => annot === annotation)) {\n          closeAndReset();\n        }\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    };\n  }, [annotation, isFreeTextAnnotationAdded, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    setFreeTextAnnotationAdded(false);\n    const onMouseLeftUp = (e) => {\n      // WILL BE TRIGGERED ON MOBILE: happens before annotationSelected\n      // clicking on the selected annotation is considered clicking outside of this component\n      // so this component will close due to useOnClickOutside\n      // this handler is used to make sure that if we click on the selected annotation, this component will show up again\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n\n      if (annotation) {\n        if (!annotUnderMouse) {\n          closeAndReset();\n        }\n\n        if (core.isAnnotationSelected(annotUnderMouse) && annotUnderMouse !== annotation) {\n          setAnnotation(annotUnderMouse);\n        }\n      }\n    };\n\n    const onAnnotationChanged = (annotations, action) => {\n      setFreeTextAnnotationAdded(action === 'add' && isFreeTextAnnotation(annotations[0]));\n      const isCommentingAnnotationSelected = core.isAnnotationSelected(annotation);\n      if (annotation && !isCommentingAnnotationSelected) {\n        closeAndReset();\n      }\n    };\n\n    core.addEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n    core.addEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n    return () => {\n      core.removeEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n      core.removeEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n    };\n  }, [annotation, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    if (!isNotesPanelOpenOrActive && annotation && inlineCommentFilter(annotation)) {\n      dispatch(actions.openElement(DataElements.INLINE_COMMENT_POPUP));\n    }\n  }, [annotation, inlineCommentFilter]);\n\n  return { annotation, closeAndReset };\n}","import { useState, useCallback } from 'react';\nimport core from 'core';\nimport useOnRightClick from 'hooks/useOnRightClick';\n\nexport default () => {\n  const [rightClickedAnnotation, setRightClickedAnnotation] = useState(null);\n\n  useOnRightClick(\n    useCallback((e) => {\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n      if (annotUnderMouse && annotUnderMouse.ToolName !== window.Core.Tools.ToolNames.CROP) {\n        if (annotUnderMouse !== rightClickedAnnotation) {\n          setRightClickedAnnotation(annotUnderMouse);\n        }\n      }\n    }, [rightClickedAnnotation])\n  );\n\n  return { rightClickedAnnotation, setRightClickedAnnotation };\n};\n","import useOnRightClickAnnotation from './useOnRightClickAnnotation';\n\nexport default useOnRightClickAnnotation;","import useOnAnnotationContentOverlayOpen from './useOnAnnotationContentOverlayOpen';\n\nexport default useOnAnnotationContentOverlayOpen;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnAnnotationContentOverlayOpen() {\n  // Clients have the option to customize how the tooltip is rendered by passing a handler\n  const customHandler = useSelector((state) => selectors.getAnnotationContentOverlayHandler(state));\n\n  const dispatch = useDispatch();\n  const [annotation, setAnnotation] = useState(null);\n  const [clientXY, setClientXY] = useState({ clientX: 0, clientY: 0 });\n  const isUsingCustomHandler = customHandler !== null;\n\n  useEffect(() => {\n    const viewElement = core.getViewerElement();\n\n    const onMouseHover = (e) => {\n      if (e.buttons !== 0) {\n        return;\n      }\n      let annotation = core.getAnnotationManager().getAnnotationByMouseEvent(e);\n\n      if (annotation && viewElement.contains(e.target)) {\n        // if hovered annot is grouped, pick the \"primary\" annot to match Adobe's behavior\n        const groupedAnnots = core.getAnnotationManager().getGroupAnnotations(annotation);\n        const ungroupedAnnots = groupedAnnots.filter((annot) => !annot.isGrouped());\n        annotation = ungroupedAnnots.length > 0 ? ungroupedAnnots[0] : annotation;\n\n        const isFreeTextAnnotation = annotation instanceof window.Core.Annotations.FreeTextAnnotation;\n        if (isUsingCustomHandler || !isFreeTextAnnotation) {\n          setClientXY({ clientX: e.clientX, clientY: e.clientY });\n          setAnnotation(annotation);\n          dispatch(actions.openElement(DataElements.ANNOTATION_CONTENT_OVERLAY));\n        }\n      } else {\n        setAnnotation(null);\n        dispatch(actions.closeElement(DataElements.ANNOTATION_CONTENT_OVERLAY));\n      }\n    };\n\n    core.addEventListener('mouseMove', onMouseHover);\n    return () => core.removeEventListener('mouseMove', onMouseHover);\n  }, [annotation, isUsingCustomHandler]);\n\n  return { annotation, clientXY };\n}","import MultiViewerWrapper from 'src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper';\n\nexport default MultiViewerWrapper;","import React from 'react';\nimport './MultiViewerWrapper.scss';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst MultiViewerWrapper = ({ children }) => {\n  const isMultiViewerReady = useSelector((state) => selectors.isMultiViewerReady(state));\n  return isMultiViewerReady ? <>{children}</> : null;\n};\n\nexport default MultiViewerWrapper;","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\n\nconst TextEditingWrapper = ({ children }) => {\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    dispatch(actions.disableElement(DataElements.TEXT_EDITING_PANEL));\n  }, []);\n\n  return <>{children}</>;\n};\n\nexport default TextEditingWrapper;","import { hot } from 'react-hot-loader/root';\nimport React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport core from 'core';\nimport actions from 'actions';\n\nimport LogoBar from 'components/LogoBar';\nimport Accessibility from 'components/Accessibility';\nimport Header from 'components/Header';\nimport DocumentContainer from 'components/DocumentContainer';\nimport LeftPanel from 'components/LeftPanel';\nimport RightPanel from 'components/RightPanel';\nimport FilePickerHandler from 'components/FilePickerHandler';\nimport CopyTextHandler from 'components/CopyTextHandler';\nimport PrintHandler from 'components/PrintHandler';\nimport FontHandler from 'components/FontHandler';\nimport RedactionPanel from 'components/RedactionPanel';\nimport TextEditingPanel from 'components/TextEditingPanel';\nimport Wv3dPropertiesPanel from 'components/Wv3dPropertiesPanel';\nimport AudioPlaybackPopup from 'components/AudioPlaybackPopup';\nimport DocumentCropPopup from 'components/DocumentCropPopup';\nimport SnippingToolPopup from '../SnippingToolPopup';\nimport FormFieldIndicatorContainer from 'components/FormFieldIndicator';\nimport MultiTabEmptyPage from 'components/MultiTabEmptyPage';\nimport MultiViewer from 'components/MultiViewer';\nimport ComparePanel from 'components/MultiViewer/ComparePanel';\nimport WatermarkPanel from 'components/WatermarkPanel';\nimport CustomElement from 'components/CustomElement';\nimport Panel from 'components/Panel';\nimport LeftHeader from 'components/ModularComponents/LeftHeader';\nimport RightHeader from 'components/ModularComponents/RightHeader';\nimport BottomHeader from 'components/ModularComponents/BottomHeader';\nimport TopHeader from 'components/ModularComponents/TopHeader';\nimport GenericOutlinesPanel from 'components/ModularComponents/GenericOutlinesPanel';\nimport FlyoutContainer from 'components/ModularComponents/FlyoutContainer';\nimport RibbonOverflowFlyout from 'components/ModularComponents/RibbonOverflowFlyout';\nimport GroupedToolsOverflowFlyout from 'components/ModularComponents/GroupedToolsOverflowFlyout';\nimport ProgressModal from 'components/ProgressModal';\nimport LazyLoadWrapper, { LazyLoadComponents } from 'components/LazyLoadWrapper';\n\nimport useOnTextSelected from 'hooks/useOnTextSelected';\nimport useOnContextMenuOpen from 'hooks/useOnContextMenuOpen';\nimport useOnAnnotationPopupOpen from 'hooks/useOnAnnotationPopupOpen';\nimport useOnFormFieldAnnotationAddedOrSelected from 'hooks/useOnFormFieldAnnotationAddedOrSelected';\nimport useOnFreeTextEdit from 'hooks/useOnFreeTextEdit';\nimport useOnMeasurementToolOrAnnotationSelected from 'hooks/useOnMeasurementToolOrAnnotationSelected';\nimport useOnInlineCommentPopupOpen from 'hooks/useOnInlineCommentPopupOpen';\nimport useOnRightClickAnnotation from 'hooks/useOnRightClickAnnotation';\nimport useOnAnnotationContentOverlayOpen from 'hooks/useOnAnnotationContentOverlayOpen';\n\nimport loadDocument from 'helpers/loadDocument';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { prepareMultiTab } from 'helpers/TabManager';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport setDefaultDisabledElements from 'helpers/setDefaultDisabledElements';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport { isMobileDevice } from 'helpers/device';\n\nimport Events from 'constants/events';\nimport overlays from 'constants/overlays';\nimport { panelNames } from 'constants/panel';\nimport DataElements from 'constants/dataElement';\n\nimport setLanguage from 'src/apis/setLanguage';\n\nimport './App.scss';\nimport SignaturePanel from 'components/SignaturePanel';\nimport BookmarksPanel from 'components/BookmarksPanel';\nimport FileAttachmentPanel from 'components/FileAttachmentPanel';\nimport ThumbnailsPanel from 'components/ThumbnailsPanel';\nimport LayersPanel from 'components/LayersPanel';\nimport MultiViewerWrapper from 'components/MultiViewer/MultiViewerWrapper';\nimport TextEditingWrapper from 'components/TextEditingPanel/TextEditingWrapper';\n\n// TODO: Use constants\nconst tabletBreakpoint = window.matchMedia('(min-width: 641px) and (max-width: 900px)');\n\nconst propTypes = {\n  removeEventHandlers: PropTypes.func.isRequired,\n};\n\nconst App = ({ removeEventHandlers }) => {\n  const store = useStore();\n  const dispatch = useDispatch();\n  let timeoutReturn;\n\n  const [\n    isInDesktopOnlyMode,\n    isMultiViewerMode,\n    customFlxPanels,\n    customModals,\n    notesInLeftPanel,\n  ] = useSelector((state) => [\n    selectors.isInDesktopOnlyMode(state),\n    selectors.isMultiViewerMode(state),\n    selectors.getCustomFlxPanels(state),\n    selectors.getCustomModals(state),\n    selectors.getNotesInLeftPanel(state),\n  ]);\n\n  useEffect(() => {\n    const isOfficeEditingEnabled = getHashParameters('enableOfficeEditing', false);\n    if (isOfficeEditingEnabled && isMobileDevice) {\n      dispatch(actions.showWarningMessage({\n        message: 'officeEditor.notSupportedOnMobile',\n      }));\n    }\n  }, []);\n\n  useEffect(() => {\n    // To avoid race condition with window.dispatchEvent firing before window.addEventListener\n    setTimeout(() => {\n      fireEvent(Events.VIEWER_LOADED);\n    }, 300);\n    window.isApryseWebViewerWebComponent ?\n      fireEvent('ready', undefined, getInstanceNode()) :\n      window.parent.postMessage(\n        {\n          type: 'viewerLoaded',\n          id: parseInt(getHashParameters('id'), 10),\n        },\n        '*',\n      );\n\n    async function loadInitialDocument() {\n      let initialDoc = getHashParameters('d', '');\n      const isOfficeEditingEnabled = getHashParameters('enableOfficeEditing', false);\n      if (!initialDoc && isOfficeEditingEnabled) {\n        loadDocument(dispatch, null, {\n          filename: 'Untitled.docx',\n          isOfficeEditingEnabled: true,\n        });\n\n        return;\n      }\n\n      const state = store.getState();\n      const doesAutoLoad = getHashParameters('auto_load', true);\n      initialDoc = initialDoc ? JSON.parse(initialDoc) : '';\n      initialDoc = Array.isArray(initialDoc) ? initialDoc : [initialDoc];\n      const isMultiTabAlreadyEnabled = state.viewer.isMultiTab;\n      const isMultiDoc = initialDoc.length > 1;\n      const startOffline = getHashParameters('startOffline', false);\n      const basePath = getHashParameters('basePath', '');\n      window.Core.setBasePath(basePath);\n\n      if (isMultiDoc && !isMultiTabAlreadyEnabled) {\n        prepareMultiTab(initialDoc, store);\n        initialDoc = initialDoc[0];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n          };\n          loadDocument(dispatch, initialDoc, options);\n        }\n      } else {\n        const activeTab = state.viewer.activeTab || 0;\n        initialDoc = initialDoc[activeTab];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            extension: getHashParameters('extension', null),\n            filename: getHashParameters('filename', null),\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n            showInvalidBookmarks: getHashParameters('showInvalidBookmarks', false),\n          };\n\n          loadDocument(dispatch, initialDoc, options);\n        }\n      }\n    }\n\n    function loadDocumentAndCleanup() {\n      loadInitialDocument();\n      window.removeEventListener('message', messageHandler);\n      clearTimeout(timeoutReturn);\n    }\n\n    function messageHandler(event) {\n      if (event.isTrusted && typeof event.data === 'object' && event.data.type === 'viewerLoaded') {\n        loadDocumentAndCleanup();\n      }\n    }\n\n    window.addEventListener('blur', () => {\n      dispatch(actions.closeElements(overlays));\n    });\n    window.addEventListener('message', messageHandler, false);\n\n    // When a user switches tabs, the focused element can cause unexpected behavior,\n    // such as triggering keyboard events or displaying tooltips, when they return\n    // to the tab. Blurring the focused element before switching tabs helps to\n    // prevent these unwanted interactions.\n    document.addEventListener('visibilitychange', () => {\n      if (document.visibilityState === 'hidden') {\n        if (document.activeElement) {\n          document.activeElement.blur();\n        }\n      }\n    });\n\n    // In case WV is used outside of iframe, postMessage will not\n    // receive the message, and this timeout will trigger loadInitialDocument\n    timeoutReturn = setTimeout(loadDocumentAndCleanup, 500);\n\n    return removeEventHandlers;\n  }, []);\n\n  useEffect(() => {\n    const setTabletState = () => {\n      // TODO: Use constants\n      dispatch(actions.setLeftPanelWidth(251));\n      dispatch(actions.setNotesPanelWidth(293));\n      dispatch(actions.setSearchPanelWidth(293));\n    };\n\n    const onBreakpoint = () => {\n      if (tabletBreakpoint.matches) {\n        setTabletState();\n      }\n    };\n    tabletBreakpoint.addListener(onBreakpoint);\n  }, []);\n\n  // These need to be done here to wait for the persisted values loaded in redux\n  useEffect(() => {\n    setLanguage(store)(store.getState().viewer.currentLanguage);\n    hotkeysManager.initialize(store);\n    setDefaultDisabledElements(store);\n  }, []);\n\n  useEffect(() => {\n    const onError = (error) => {\n      error = error.detail?.message || error.detail || error.message;\n\n      let errorMessage;\n\n      if (typeof error === 'string') {\n        errorMessage = error;\n\n        // provide a more specific error message\n        if (errorMessage.includes('File does not exist')) {\n          errorMessage = 'message.notSupported';\n        }\n      } else if (error?.type === 'InvalidPDF') {\n        errorMessage = 'message.badDocument';\n      }\n\n      if (errorMessage) {\n        dispatch(actions.showErrorMessage(errorMessage));\n      }\n    };\n\n    window.addEventListener('loaderror', onError);\n    return () => window.removeEventListener('loaderror', onError);\n  }, []);\n\n  const renderPanel = (panelName, dataElement) => {\n    switch (panelName) {\n      case panelNames.OUTLINE:\n        return <GenericOutlinesPanel/>;\n      case panelNames.SIGNATURE:\n        return <SignaturePanel/>;\n      case panelNames.BOOKMARKS:\n        return <BookmarksPanel panelSelector={dataElement}/>;\n      case panelNames.FILE_ATTACHMENT:\n        return <FileAttachmentPanel/>;\n      case panelNames.THUMBNAIL:\n        return <ThumbnailsPanel panelSelector={dataElement} />;\n      case panelNames.LAYERS:\n        return <LayersPanel/>;\n      case panelNames.TEXT_EDITING:\n        return <TextEditingWrapper><TextEditingPanel dataElement={dataElement}/></TextEditingWrapper>;\n      case panelNames.CHANGE_LIST:\n        return <MultiViewerWrapper><ComparePanel dataElement={dataElement}/></MultiViewerWrapper>;\n    }\n  };\n\n  const panels = customFlxPanels.map((panel, index) => {\n    return (\n      panel.render && (\n        <Panel key={index} dataElement={panel.dataElement} location={panel.location}>\n          {Object.values(panelNames).includes(panel.render) ? renderPanel(panel.render, panel.dataElement) : (\n            <CustomElement\n              key={panel.dataElement || index}\n              className={`Panel ${panel.dataElement}`}\n              display={panel.dataElement}\n              dataElement={panel.dataElement}\n              render={panel.render}\n            />\n          )}\n        </Panel>\n      )\n    );\n  });\n\n  return (\n    <>\n      <div\n        className={classNames({\n          'App': true,\n          'is-in-desktop-only-mode': isInDesktopOnlyMode,\n          'is-web-component': window.isApryseWebViewerWebComponent,\n        })}\n      >\n        <FlyoutContainer />\n        <RibbonOverflowFlyout />\n        <GroupedToolsOverflowFlyout />\n        <Accessibility />\n        <Header />\n        {isOfficeEditorMode() && (\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.OfficeEditorToolsHeader}\n            dataElement={DataElements.OFFICE_EDITOR_TOOLS_HEADER}\n          />\n        )}\n        <TopHeader />\n        <div className=\"content\">\n          <LeftHeader />\n          <LeftPanel />\n          {panels}\n          {!isMultiViewerMode && <DocumentContainer />}\n          {window?.ResizeObserver && <MultiViewer />}\n          <RightHeader />\n          <RightPanel dataElement={DataElements.SEARCH_PANEL} onResize={(width) => dispatch(actions.setSearchPanelWidth(width))}>\n            <LazyLoadWrapper\n              Component={LazyLoadComponents.SearchPanel}\n              dataElement={DataElements.SEARCH_PANEL}\n            />\n          </RightPanel>\n          <RightPanel dataElement=\"notesPanel\" onResize={(width) => dispatch(actions.setNotesPanelWidth(width))}>\n            {!notesInLeftPanel && <LazyLoadWrapper\n              Component={LazyLoadComponents.NotesPanel}\n              dataElement={DataElements.NOTES_PANEL}\n            />}\n          </RightPanel>\n          <RightPanel dataElement=\"redactionPanel\" onResize={(width) => dispatch(actions.setRedactionPanelWidth(width))}>\n            <RedactionPanel />\n          </RightPanel>\n          <RightPanel dataElement=\"watermarkPanel\" onResize={(width) => dispatch(actions.setWatermarkPanelWidth(width))}>\n            <WatermarkPanel />\n          </RightPanel>\n          <RightPanel\n            dataElement=\"wv3dPropertiesPanel\"\n            onResize={(width) => dispatch(actions.setWv3dPropertiesPanelWidth(width))}\n          >\n            <Wv3dPropertiesPanel />\n          </RightPanel>\n          <MultiTabEmptyPage />\n          <RightPanel\n            dataElement=\"textEditingPanel\"\n            onResize={(width) => dispatch(actions.setTextEditingPanelWidth(width))}\n          >\n            <TextEditingPanel />\n          </RightPanel>\n          <MultiViewerWrapper>\n            <RightPanel dataElement=\"comparePanel\" onResize={(width) => dispatch(actions.setComparePanelWidth(width))}>\n              <ComparePanel />\n            </RightPanel>\n          </MultiViewerWrapper>\n          <BottomHeader />\n        </div>\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ViewControlsOverlay}\n          dataElement={DataElements.VIEW_CONTROLS_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.MenuOverlay}\n          dataElement={DataElements.MENU_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ZoomOverlay}\n          dataElement={DataElements.ZOOM_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.AnnotationContentOverlay}\n          dataElement={DataElements.ANNOTATION_CONTENT_OVERLAY}\n          onOpenHook={useOnAnnotationContentOverlayOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageManipulationOverlay}\n          dataElement={DataElements.PAGE_MANIPULATION_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.RotatePopup}\n          dataElement={DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ThumbnailMoreOptionsPopup}\n          dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ThumbnailMoreOptionsPopupSmall}\n          dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL}\n        />\n        <FormFieldIndicatorContainer />\n        {/* Popups */}\n        {/* AnnotationPopup should be the first so that other popups can lay on top of it */}\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.AnnotationPopup}\n          dataElement={DataElements.ANNOTATION_POPUP}\n          onOpenHook={useOnAnnotationPopupOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.TextPopup}\n          dataElement={DataElements.TEXT_POPUP}\n          onOpenHook={useOnTextSelected}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ContextMenuPopup}\n          dataElement={DataElements.CONTEXT_MENU_POPUP}\n          onOpenHook={useOnContextMenuOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.FormFieldEditPopup}\n          dataElement={DataElements.FORM_FIELD_EDIT_POPUP}\n          onOpenHook={useOnFormFieldAnnotationAddedOrSelected}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.RichTextPopup}\n          dataElement={DataElements.RICH_TEXT_POPUP}\n          onOpenHook={useOnFreeTextEdit}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.InlineCommentingPopup}\n          dataElement={DataElements.INLINE_COMMENT_POPUP}\n          onOpenHook={useOnInlineCommentPopupOpen}\n        />\n        <AudioPlaybackPopup />\n        <DocumentCropPopup />\n        <SnippingToolPopup />\n        {/* Modals */}\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ScaleModal}\n          dataElement={DataElements.SCALE_MODAL}\n          onOpenHook={useOnMeasurementToolOrAnnotationSelected}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.ContentEditLinkModal} dataElement={DataElements.CONTENT_EDIT_LINK_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SignatureModal} dataElement={DataElements.SIGNATURE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.PrintModal} dataElement={DataElements.PRINT_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.ErrorModal} dataElement={DataElements.ERROR_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.PasswordModal} dataElement={DataElements.PASSWORD_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.CreateStampModal}\n          dataElement={DataElements.CUSTOM_STAMP_MODAL}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageReplacementModal}\n          dataElement={DataElements.PAGE_REPLACEMENT_MODAL}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.LinkModal}\n          dataElement={DataElements.LINK_MODAL}\n          onOpenHook={useOnRightClickAnnotation}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.FilterAnnotModal} dataElement={DataElements.FILTER_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageRedactionModal}\n          dataElement={DataElements.PAGE_REDACT_MODAL}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.CalibrationModal} dataElement={DataElements.CALIBRATION_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SettingsModal} dataElement={DataElements.SETTINGS_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SaveModal} dataElement={DataElements.SAVE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.InsertPageModal} dataElement={DataElements.INSERT_PAGE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.LoadingModal} dataElement={DataElements.LOADING_MODAL} />\n\n        {\n          /*\n            There were issues appearing in WebViewer BIM add-on with lazy loading ProgressModal.\n            The BIM add-on relies on ProgressModal styling which wouldn't not get loaded explicitly.\n            This caused styling issues when loading a 3D model and would impact the UI of the BIM add-on.\n\n            See https://apryse.atlassian.net/browse/WVR-3094\n          */\n        }\n        <ProgressModal />\n\n        <LazyLoadWrapper Component={LazyLoadComponents.WarningModal} dataElement={DataElements.WARNING_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.Model3DModal} dataElement={DataElements.MODEL3D_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ColorPickerModal}\n          dataElement={DataElements.COLOR_PICKER_MODAL}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.OpenFileModal} dataElement={DataElements.OPEN_FILE_MODAL} />\n        {customModals.length > 0 && (\n          <LazyLoadWrapper Component={LazyLoadComponents.CustomModal} dataElement={DataElements.CUSTOM_MODAL} />\n        )}\n        {core.isFullPDFEnabled() && (\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.SignatureValidationModal}\n            dataElement={DataElements.SIGNATURE_VALIDATION_MODAL}\n          />\n        )}\n        <LogoBar />\n        <LazyLoadWrapper Component={LazyLoadComponents.CreatePortfolioModal} dataElement={DataElements.CREATE_PORTFOLIO_MODAL} />\n      </div>\n\n      <PrintHandler />\n      <FilePickerHandler />\n      <CopyTextHandler />\n      <FontHandler />\n    </>\n  );\n};\n\nApp.propTypes = propTypes;\n\nexport default hot(App);\n","import core from 'core';\r\nimport createDisableFeatures from 'src/apis/disableFeatures';\r\nimport getHashParameters from 'helpers/getHashParameters';\r\nimport { isIOS, isMobileDevice } from 'helpers/device';\r\nimport { PRIORITY_THREE, PRIORITY_TWO, PRIORITY_ONE } from 'constants/actionPriority';\r\nimport Feature from 'constants/feature';\r\nimport actions from 'actions';\r\n\r\nexport default (store) => {\r\n  const { dispatch, getState } = store;\r\n  const state = getState();\r\n\r\n  const disableFeatures = createDisableFeatures(store);\r\n\r\n  if (state.advanced.defaultDisabledElements) {\r\n    const elements = state.advanced.defaultDisabledElements.split(',');\r\n    dispatch(actions.disableElements(elements, PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling/enabling elements will be handled in onUpdateAnnotationPermission.js\r\n  // the reason for doing this is to avoid duplicate code for handling the `enableReadOnly` constructor option\r\n  // and the effect of programmatically calling instance.setReadOnly\r\n  if (state.viewer.isReadOnly) {\r\n    core.setReadOnly(state.viewer.isReadOnly);\r\n  }\r\n\r\n  const notesInLeftPanel = getHashParameters('notesInLeftPanel', false);\r\n  if (notesInLeftPanel) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'toggleNotesButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const annotationDisabled = !getHashParameters('a', false);\r\n  if (annotationDisabled) {\r\n    disableFeatures([Feature.Annotations]);\r\n  }\r\n\r\n  const filePickerDisabled = !getHashParameters('filepicker', false);\r\n  if (filePickerDisabled) {\r\n    disableFeatures([Feature.FilePicker]);\r\n  }\r\n\r\n  const hideAnnotationPanel = getHashParameters('hideAnnotationPanel', false);\r\n  if (hideAnnotationPanel) {\r\n    disableFeatures([Feature.NotesPanel]);\r\n  }\r\n\r\n  const toolGroupReorderingDisabled = getHashParameters('disableToolGroupReordering', false);\r\n  if (toolGroupReorderingDisabled) {\r\n    dispatch(actions.setEnableToolGroupReordering(false));\r\n  }\r\n\r\n  const measurementsDisabled = !getHashParameters('enableMeasurement', false);\r\n  if (measurementsDisabled) {\r\n    disableFeatures([Feature.Measurement]);\r\n  } else {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'cloudyRectangleAreaToolGroupButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const redactionsDisabled = !(\r\n    getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled()\r\n  );\r\n  if (redactionsDisabled) {\r\n    disableFeatures([Feature.Redaction]);\r\n  }\r\n\r\n  const contentEditDisabled = !getHashParameters('enableContentEdit', false);\r\n  if (contentEditDisabled) {\r\n    disableFeatures([Feature.ContentEdit]);\r\n  }\r\n\r\n  const toolBarDisabled = !getHashParameters('toolbar', true);\r\n  if (toolBarDisabled) {\r\n    dispatch(actions.disableElement('header', PRIORITY_ONE));\r\n  }\r\n\r\n  if (isMobileDevice) {\r\n    dispatch(actions.disableElement('marqueeToolButton', PRIORITY_THREE));\r\n  } else {\r\n    // we could have used the 'hidden' property in the initialState.js to hide this button by css,\r\n    // but that actually checks the window.innerWidth to hide the button, not based on the actual device.\r\n    // we could potentially improve the 'hidden' property in the future.\r\n    dispatch(actions.disableElement('textSelectButton', PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling the fullscreen button in iOS because it only has partial support for the fullscreen mode\r\n  // which is also buggy in WebViewer the last time we tested it\r\n  if (isIOS) {\r\n    dispatch(actions.disableElements(['fullscreenButton'], PRIORITY_THREE));\r\n  }\r\n\r\n  if (!core.isFullPDFEnabled()) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'measurementSnappingOption',\r\n          'signaturePanel',\r\n          'signaturePanelButton',\r\n        ],\r\n        PRIORITY_THREE,\r\n      ),\r\n    );\r\n    disableFeatures([Feature.OutlineEditing]);\r\n  }\r\n\r\n  dispatch(actions.disableElements(['contentEditButton', 'searchAndReplace'], PRIORITY_TWO));\r\n\r\n  dispatch(\r\n    actions.disableElements(\r\n      [\r\n        // disable layersPanel by default, it will be enabled in onDocumentLoaded.js\r\n        'layersPanel',\r\n        'layersPanelButton',\r\n        'bookmarksPanel',\r\n        'bookmarksPanelButton',\r\n        'wildCardSearchOption',\r\n        'readerPageTransitionButton',\r\n        'mathSymbolsButton',\r\n        'threeDToolGroupButton',\r\n        'attachmentPanelButton',\r\n        'signatureOptionsDropdown',\r\n        'savedSignatureAndInitialsTabs',\r\n      ],\r\n      PRIORITY_ONE,\r\n    ),\r\n  );\r\n\r\n  disableFeatures([\r\n    Feature.InlineComment,\r\n    Feature.WatermarkPanel,\r\n    Feature.WatermarkPanelImageTab,\r\n    Feature.Portfolio,\r\n  ]);\r\n\r\n  const enableChangeView = getHashParameters('ChangeView', false);\r\n  if (!enableChangeView) {\r\n    disableFeatures([Feature.ChangeView]);\r\n  }\r\n};","import App from './App';\n\nexport default App;","/**\n * Contains all possible modes for fitting/zooming pages to the viewer. The behavior may vary depending on the LayoutMode.\n * @name UI.FitMode\n * @property {string} FitPage A fit mode where the zoom level is fixed to the width or height of the page, whichever is smaller.\n * @property {string} FitWidth A fit mode where the zoom level is fixed to the width of the page.\n * @property {string} Zoom A fit mode where the zoom level is not fixed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var FitMode = instance.UI.FitMode;\n    instance.UI.setFitMode(FitMode.FitWidth);\n  });\n */\n\nexport default {\n  FitPage: 'FitPage',\n  FitWidth: 'FitWidth',\n  Zoom: 'Zoom',\n};","/**\n * Contains string enums for all toolbar options for WebViewer.\n * @name UI.ToolbarGroup\n * @property {string} VIEW Sets the current toolbar as the view group.\n * @property {string} ANNOTATE Sets the current toolbar as the annotate group.\n * @property {string} SHAPES Sets the current toolbar as the shapes group.\n * @property {string} INSERT Sets the current toolbar as the insert group.\n * @property {string} MEASURE Sets the current toolbar as the measure group.\n * @property {string} EDIT Sets the current toolbar as the edit group.\n * @property {string} FILL_AND_SIGN Sets the current toolbar as the fill and sign group.\n * @property {string} FORMS Sets the current toolbar as the forms group.\n * @property {string} REDACT Sets the current toolbar as the redact group.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolbarGroup(instance.UI.ToolbarGroup.VIEW);\n  });\n */\n\nimport DataElements from './dataElement';\n\nexport default {\n  VIEW: DataElements.VIEW_TOOLBAR_GROUP,\n  ANNOTATE: DataElements.ANNOTATE_TOOLBAR_GROUP,\n  SHAPES: DataElements.SHAPES_TOOLBAR_GROUP,\n  INSERT: DataElements.INSERT_TOOLBAR_GROUP,\n  MEASURE: DataElements.MEASURE_TOOLBAR_GROUP,\n  EDIT: DataElements.EDIT_TOOLBAR_GROUP,\n  EDIT_TEXT: DataElements.EDIT_TEXT_TOOLBAR_GROUP,\n  FILL_AND_SIGN: DataElements.FILL_AND_SIGN_TOOLBAR_GROUP,\n  FORMS: DataElements.FORMS_TOOLBAR_GROUP,\n  REDACT: DataElements.REDACT_TOOLBAR_GROUP\n};","/**\n* Available search patterns that can be passed to {@link UI.replaceRedactionSearchPattern UI.replaceRedactionSearchPattern}. <br/><br/>\n* @name UI.RedactionSearchPatterns\n* @enum {string}\n* @property {string} EMAILS Search pattern for emails\n* @property {string} CREDIT_CARDS Search pattern for credit card numbers\n* @property {string} PHONE_NUMBERS Search pattern for phone numbers\n*/\nexport default {\n  EMAILS: 'emails',\n  CREDIT_CARDS: 'creditCards',\n  PHONE_NUMBERS: 'phoneNumbers',\n};","/**\n * Adds a listener function to be called when search is completed.\n * @method UI.addSearchListener\n * @param {UI.searchListener} searchListener Callback function that will be triggered when search completed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n  });\n */\n/**\n * Callback that gets passed to {@link UI.addSearchListener addSearchListener}.\n * @callback UI.searchListener\n * @param {string} searchValue Search value\n * @param {object} options Search options object, which includes 'caseSensitive', 'wholeWord', 'wildcard' and 'regex'\n * @param {Array.<object>} results Search results\n */\n\nimport { addSearchListener as addSearchListenerHelper } from 'helpers/search';\n\nexport default function addSearchListener(listener) {\n  addSearchListenerHelper(listener);\n}\n","/**\n * Adds a sorting strategy in notes panel.\n * @method UI.addSortStrategy\n * @param {object} sortStrategy Sorting strategy that will be used to sort notes\n * @param {string} sortStrategy.name Name of the strategy, which will be shown in notes panel's dropdown\n * @param {UI.getSortedNotes} sortStrategy.getSortedNotes Function that takes unsorted notes (annotations) and returns them sorted\n * @param {UI.shouldRenderSeparator} sortStrategy.shouldRenderSeparator Function that returns when a separator should be rendered\n * @param {UI.getSeparatorContent} sortStrategy.getSeparatorContent Function that returns the content of a separator\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var mySortStrategy = {\n      name: 'annotationType',\n      getSortedNotes: function(notes) {\n        return notes.sort(function(a ,b) {\n          if (a.Subject < b.Subject) return -1;\n          if (a.Subject > b.Subject) return 1;\n          if (a.Subject === b.Subject) return 0;\n        });\n      },\n      shouldRenderSeparator: function(prevNote, currNote) {\n        return prevNote.Subject !== currNote.Subject;\n      },\n      getSeparatorContent: function(prevNote, currNote) {\n        return currNote.Subject;\n      }\n    };\n\n    instance.UI.addSortStrategy(mySortStrategy);\n  });\n */\n/**\n * Callback that gets passed to `sortStrategy.getSortedNotes` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSortedNotes\n * @param {Array<Core.Annotations.Annotation>} notes List of unsorted notes (annotations)\n * @return {Array<Core.Annotations.Annotation>} Sorted notes (annotations)\n */\n/**\n * Callback that gets passed to `sortStrategy.shouldRenderSeparator` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.shouldRenderSeparator\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @return {boolean} Whether a separator should be rendered or not\n */\n/**\n * Callback that gets passed to `sortStrategy.getSeparatorContent` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSeparatorContent\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @param {object} options Optional values\n * @param {Array.<string>} options.pageLabels List of page label\n * @return {(string|number)} Content to be rendered in a separator\n */\n\nimport { addSortStrategy } from 'constants/sortStrategies';\nimport actions from 'actions';\n\nexport default (store) => (newStrategy) => {\n  if (newStrategy.name) {\n    addSortStrategy(newStrategy);\n    store.dispatch(actions.setNotesPanelSortStrategy(newStrategy.name));\n  } else {\n    console.warn('The argument for addSortStrategy must have a \"name\" property, see https://docs.apryse.com/api/web/WebViewerInstance.html#addsortstrategy');\n  }\n};\n","/**\n * A class which contains popup APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a popup, use {@link UI.disableElements disableElements}.\n * @interface UI.Popup\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store, popupDataElement) => Object.create(PopupAPI).initialize(store, popupDataElement);\n\nconst PopupAPI = {\n  initialize(store, popupDataElement) {\n    this.store = store;\n    this.popupDataElement = popupDataElement;\n    return this;\n  },\n  /**\n   * Add an array of items after the item that has the given data element.\n   * @method UI.Popup#add\n   * @param {Array.<object>} items Same as <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>header items</a>\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.contextMenuPopup.add({\n      type: 'actionButton',\n      img: 'path/to/image',\n      onClick: instance.downloadPdf,\n    });\n  });\n   */\n  add(buttons, dataElement) {\n    if (!Array.isArray(buttons)) {\n      buttons = [buttons];\n    }\n\n    const index = this._getIndexByDataElement(dataElement);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...buttons);\n\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Update all the items in the popup.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.Popup#update\n   * @param {Array.<object>} [items] the items that will be rendered in the popup\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    // replace existing items with a new array of items\n    instance.contextMenuPopup.update([\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.downloadPdf,\n      },\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.print,\n      },\n    ]);\n  });\n   */\n  update(items) {\n    if (!items) {\n      items = [];\n    }\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Return the array of items in the popup.\n   * @method UI.Popup#getItems\n   * @returns {Array.<object>} Current items in the popup.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.annotationPopup.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPopupItems(this.store.getState(), this.popupDataElement)];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors\n        .getPopupItems(state, this.popupDataElement)\n        .findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * An instance of Popup that can be used to edit items in the annotation popup component\n * @name UI.annotationPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.annotationPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'annotationPopup');","const castStringToArray = (input) => {\n  if (!Array.isArray(input)) {\n    input = [input];\n  }\n  return input;\n};\n\nexport default castStringToArray;\n","import castStringToArray from 'helpers/castStringToArray';\n/**\n * Sets visibility states of the elements to be hidden. Note that closeElements works only for panel/overlay/popup/modal elements.\n * @method UI.closeElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // closes (hides) text popup and left panel in the UI\n    instance.UI.closeElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElements) => {\n  const dataElementArray = castStringToArray(dataElements);\n  store.dispatch(actions.closeElements(dataElementArray));\n};\n","/**\n * An instance of Popup that can be used to edit items in the context menu popup component\n * @name UI.contextMenuPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.contextMenuPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'contextMenuPopup');","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Download]);\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.disableElement(dataElement, PRIORITY_THREE));\n};","import { PRIORITY_ONE } from 'constants/actionPriority';\nimport actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.disableElements(['filePickerHandler', 'filePickerButton'], PRIORITY_ONE));\n};\n","import actions from 'actions';\n\n/**\n * Turns high contrast mode off.\n * @method UI.disableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableHighContrastMode();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setHighContrastMode(false));\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Measurement]);\n};","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Disable native mobile device scrolling behavior if it had previously been enabled. Note that native mobile device scrolling behavior is off by default.\n * @method UI.disableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    UI.disableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = false;\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.NotesPanel]);\n};\n","import actions from 'actions';\n\n/**\n * Disable the ability to submit notes by only pressing Enter if it had previously been enabled.\n * This will revert note submission to the default which is Ctrl/Cmd + Enter.\n * @method UI.disableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableNoteSubmissionWithEnter();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(false));\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Print]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.TextSelection]);\n};\n","import disableTools from './disableTools';\n\nexport default (store) => (toolName) => {\n  disableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.TouchScrollLock]);\n};","/**\n * Displays the custom error message\n * @method UI.displayErrorMessage\n * @param {string} message An error message\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.displayErrorMessage('My error message');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (message) => {\n  store.dispatch(actions.showErrorMessage(message));\n};\n","/**\n * Downloads the pdf document with or without annotations added by WebViewer UI.\n * @method UI.downloadPdf\n * @param {object} [options] An object that contains the following download options.\n * @param {string} [options.filename] The filename of the downloaded document.\n * @param {string} [options.downloadType='pdf'] The type to download the file as, by default this is \"pdf\". PDF and image files can only be downloaded as PDFs, but office files can be downloaded as \"pdf\" or as \"office\" if you want to get the original file without annotations.\n * @param {string} [options.xfdfString] An xfdf string containing annotation data to be used when downloading. Use this option instead of `includeAnnotations` if not all annotations need to be contained in the downloaded file.\n * @param {boolean} [options.includeAnnotations=true] Whether or not to include annotations added by WebViewer UI.\n * @param {boolean} [options.flatten] Whether or not to flatten all the annotations in the downloaded document. Only useful fullAPI is enabled and either `xfdfString` or `includeAnnotations` is used.\n * @param {Core.Document} [options.documentToBeDownloaded] A document to be download instead of the one loaded by Document Viewer.\n * @param {boolean} [options.useDisplayAuthor] Whether to export annotations with the Display Author name from annotationManager.getDisplayAuthor()\n * @param {number} [options.flags=Core.SaveOptions.REMOVE_UNUSED] The flags with which to save the document. Possible values include `Core.SaveOptions.REMOVE_UNUSED` (remove unused objects during save) and `Core.SaveOptions.LINEARIZED` (optimize the document for fast web view and remove unused objects).\n * @returns {Promise<any>} A promise that is resolved once the document is downloaded.\n * @example\nWebViewer(...)\n  .then(async function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const annotManager = instance.Core.annotationManager;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', async function() {\n      // download pdf without annotations added by WebViewer UI\n      await instance.UI.downloadPdf({\n        includeAnnotations: false,\n      });\n\n      console.log('Downloaded the first time!')\n\n      // download pdf with all annotations flattened\n      await instance.UI.downloadPdf({\n        includeAnnotations: true,\n        flatten: true,\n      });\n\n      console.log('Downloaded a second time!')\n\n      // download pdf without links\n      const xfdfString = await annotManager.exportAnnotations({ links: false });\n      await instance.UI.downloadPdf({\n        xfdfString: xfdfString,\n      });\n\n      console.log('Downloaded a third time!')\n    });\n  });\n */\n\nimport downloadPdf from 'helpers/downloadPdf';\nimport { workerTypes } from 'constants/types';\nimport core from 'core';\n\nexport default (store) => async (options = { includeAnnotations: true }) => {\n  const documentType = core.getDocument()?.getType();\n  const { PDF, WEBVIEWER_SERVER, OFFICE, OFFICE_EDITOR, IMAGE } = workerTypes;\n\n  if (\n    documentType !== PDF &&\n    documentType !== IMAGE &&\n    documentType !== OFFICE &&\n    documentType !== OFFICE_EDITOR &&\n    documentType !== WEBVIEWER_SERVER\n  ) {\n    console.warn('Document type is not PDF. Cannot be downloaded.');\n    return Promise.reject();\n  }\n\n  // legacy interface: instance.downloadPdf(true);\n  if (typeof options === 'boolean') {\n    options = {\n      includeAnnotations: options,\n    };\n  }\n\n  return downloadPdf(store.dispatch, options);\n};\n","import actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.enableAllElements());\n};","import Feature from 'constants/feature';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  if (isOfficeEditorMode()) {\n    console.warn('Office Editor doesn\\'t support annotations');\n    return;\n  }\n  enableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Download]);\n  } else {\n    disableFeatures(store)([Feature.Download]);\n  }\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.enableElement(dataElement, PRIORITY_THREE));\n};","import actions from 'actions';\n\n/**\n * Turns high contrast mode on to help with accessibility.\n * @method UI.enableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableHighContrastMode();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setHighContrastMode(true));\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.FilePicker]);\n  } else {\n    disableFeatures(store)([Feature.FilePicker]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.Measurement]);\n};\n","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Enable native mobile device scrolling behavior. By default custom behavior is used to handle vertical and horizontal scroll locking.\n * @method UI.enableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = true;\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.NotesPanel]);\n  } else {\n    disableFeatures(store)([Feature.NotesPanel]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Print]);\n  } else {\n    disableFeatures(store)([Feature.Print]);\n  }\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.TextSelection]);\n  } else {\n    disableFeatures(store)([Feature.TextSelection]);\n  }\n};\n","import enableTools from './enableTools';\n\nexport default (store) => (toolName) => {\n  enableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.TouchScrollLock]);\n};\n","/**\n * Extract pages from the current document\n * @method UI.extractPagesWithAnnotations\n * @param {Array<number>} pageNumbersToExtract An array of pages to extract from the document. Annotations on the pages are included\n * @return {Promise<File>} A promise that resolve to a <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a>\n * @example // 6.0 and after\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.extractPagesWithAnnotations ([1,2,3]).then(function(fileData){\n    });\n  });\n */\n\nimport extractPagesWithAnnotations from '../helpers/extractPagesWithAnnotations';\n\nexport default (pageNumbersToExtract) => extractPagesWithAnnotations(pageNumbersToExtract);","/**\n * Focuses a note input field for the annotation. If the notes panel is closed, it is automatically opened before focusing.\n * @method UI.focusNote\n * @param {string} annotationId Id of an annotation.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var annotManager = instance.Core.annotationManager;\n\n    annotManager.addEventListener('annotationChanged', function(annotations, action) {\n      annotations.forEach(function(annotation) {\n        // Focus the note when annotation is created\n        if (action === 'add' && annotation.Listable) {\n          instance.UI.focusNote(annotation.Id); // note it is a capital i\n        }\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => (id) => {\n  // store.dispatch(actions.triggerNoteEditing());\n  const annotation = core.getAnnotationById(id);\n  store.dispatch(actions.openElement('notesPanel'));\n  core.selectAnnotation(annotation);\n};\n","import core from 'core';\n\nexport default () => {\n  return core.getCurrentUser();\n};\n","import getHashParameters from 'helpers/getHashParameters';\nimport core from 'core';\n\nexport default () => {\n  const documentViewer = core.getDocumentViewer();\n  console.warn('Deprecated and will be removed in version 9.0');\n  if (!window.bbAnnotManager) {\n    const serverURL = getHashParameters('webviewerServerURL', '');\n    window.bbAnnotManager = new window.Core.BlackBoxAnnotationManager(serverURL, documentViewer);\n  }\n\n  return window.bbAnnotManager;\n};","/**\n * Return the current language used in WebViewer.\n * @method UI.getCurrentLanguage\n * @return {string} Current language code\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getCurrentLanguage());\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getCurrentLanguage(store.getState());\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getCurrentPage(store.getState());\n};\n","/**\n * Return the current fit mode of the WebViewerInstance UI.\n * @method UI.getFitMode\n * @return {string} Current fit mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getFitMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getFitMode(store.getState());","/**\n * Return the current layout mode of the WebViewerInstance.\n * @method UI.getLayoutMode\n * @return {string} Current layout mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getLayoutMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getDisplayMode(store.getState());\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getTotalPages(store.getState());\n};\n","import exposedSelectors from 'selectors';\n\nexport default (store) => mapExposedSelectors(store);\n\nconst mapExposedSelectors = (store) => Object.keys(exposedSelectors).reduce((acc, selector) => {\n  acc[selector] = (...params) => {\n    const state = store.getState();\n    return exposedSelectors[selector](state, ...params);\n  };\n  return acc;\n}, {});\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return !!selectors.isElementOpen(store.getState(), 'leftPanel');\n};\n","import getSideWindowVisibility from './getSideWindowVisibility';\n\nexport default (store) => () => {\n  return getSideWindowVisibility(store)();\n};\n","/**\n * Return the current tool object.\n * @method UI.getToolMode\n * @return {Core.Tools.Tool} Instance of the current tool\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getToolMode().name, instance.UI.getToolMode());\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getToolMode();","/**\n * Return the current zoom level\n * @method UI.getZoomLevel\n * @return {number} Zoom level (0 ~ 1)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getZoomLevel());\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getZoom();\n","/**\n * Return the max zoom level\n * @method UI.getMaxZoomLevel\n * @return {number} max zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMaxZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMaxZoomLevel();","/**\n * Return the min zoom level\n * @method UI.getMinZoomLevel\n * @return {number} min zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMinZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMinZoomLevel();","import core from 'core';\n\nexport default () => {\n  core.setCurrentPage(1);\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  core.setCurrentPage(selectors.getTotalPages(store.getState()));\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  const state = store.getState();\n  const currentPage = selectors.getCurrentPage(state);\n\n  if (currentPage === selectors.getTotalPages(state)) {\n    console.warn('you are at the last page');\n  } else {\n    const nextPage = currentPage + 1;\n    core.setCurrentPage(nextPage);\n  }\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  const currentPage = selectors.getCurrentPage(store.getState());\n\n  if (currentPage === 1) {\n    console.warn('You are at the first page');\n  } else {\n    const prevPage = currentPage - 1;\n    core.setCurrentPage(prevPage);\n  }\n};","import actions from 'actions';\n\n/**\n * hide outline control\n * @method UI.hideOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.hideOutlineControl();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setOutlineControlVisibility(false));\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsAdminUser();\n};","/**\n * Returns whether the element is disabled.\n * @method UI.isElementDisabled\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementDisabled('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (dataElement) => !!selectors.isElementDisabled(store.getState(), dataElement);","/**\n * Returns whether the element is open.\n * @method UI.isElementOpen\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is open.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementOpen('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (dataElement) => !!selectors.isElementOpen(store.getState(), dataElement);\n","import selectors from 'selectors';\n\n/**\n * Check whether high contrast mode is enabled or not.\n * @method UI.isHighContrastModeEnabled\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isHighContrastModeEnabled();\n  });\n */\n\nexport default (store) => () => {\n  return selectors.getIsHighContrastMode(store.getState());\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsReadOnly();\n};","/**\n * Returns whether the tool is disabled.\n * @method UI.isToolDisabled\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @returns {boolean} Whether the tool is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isToolDisabled());\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (toolName) => {\n  const state = store.getState();\n  const dataElement = selectors.getToolButtonDataElement(state, toolName);\n\n  return selectors.isElementDisabled(state, dataElement);\n};\n","import isFullscreen from 'helpers/isFullscreen';\n\n/**\n * Returns whether in fullscreen mode.\n * @method UI.isFullscreen\n * @returns {boolean} Whether in fullscreen mode.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isFullscreen());\n  });\n */\nexport default () => {\n  return isFullscreen();\n};\n","/**\n * Load a document inside WebViewer UI.\n * @method UI.loadDocument\n * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} documentPath Path to the document OR <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a> if opening local file.\n * @param {UI.loadDocumentOptions} [options] Additional options\n\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.loadDocument('https://myserver.com/files/test.pdf', {\n      documentId: '1',\n      filename: 'sample-1.pdf'\n    });\n  });\n */\n\nimport loadDocument from 'helpers/loadDocument';\n\nexport default (store) => (src, options) => {\n  loadDocument(store.dispatch, src, options);\n};\n\n/**\n * @typedef {Object} UI.loadDocumentOptions inherits from {@link Core.loadDocumentOptions}\n * @property {string} [extension] The extension of the file. If file is a blob/file object or a URL without an extension then this is necessary so that WebViewer knows what type of file to load.\n * @property {string} [filename] Filename of the document, which is used when downloading the PDF.\n * @property {object} [customHeaders] An object of custom HTTP headers to use when retrieving the document from the specified url.\n * @property {object} [webViewerServerCustomQueryParameters] An object of custom query parameters to be appended to every WebViewer Server request.\n * @property {string} [documentId] Unique id of the document. Same as docId (For backward compatibility).\n * @property {string} [docId] Unique id of the document.\n * @property {boolean} [loadAnnotations=true] Whether to load document with or without annotations.\n * @property {function} [onLoadingProgress] A callback function for loading progress (Only for files loaded over network), function signature: function(percent) {}.\n * @property {boolean} [withCredentials] Whether or not cross-site requests should be made using credentials.\n * @property {string} [cacheKey] A key that will be used for caching the document on WebViewer Server.\n * @property {object} [officeOptions] An object that contains the options for an Office document.\n * @property {object} [rasterizerOptions] An object that contains the rasterizer options for WebViewer Server.\n * @property {Core.TemplateData} [officeOptions.templateValues] If set, will perform template replacement with the data specified by this parameter.\n * @property {Core.TemplateOptions} [officeOptions.templateOptions] If set, it will interpret the office document as a template document and compile all of the template tags in the document using the provided options.\n * @property {boolean} [officeOptions.doTemplatePrep] If set, it will interpret the office document as a template document and compile all of the template tags in the document.\n * @property {boolean} [officeOptions.disableBrowserFontSubstitution] By default, office viewing takes a lightweight approach to font substitution, allowing the browser to select fonts when they are not embedded in the document itself.\n * While this means that WebViewer has access to all the fonts on the user's system, it also means that an office document may have a different \"look\" on different systems (depending on the fonts available) and when it is converted to PDF (as the PDF conversion routine cannot obtain low-level access to user fonts, for security reasons).\n * disableBrowserFontSubstitution prevents this browser substitution, forcing the WebViewer backend to handle all fonts. This means that viewing and conversion to PDF will be 100% consistent from system-to-system, at the expense of a slightly slower initial viewing time and higher bandwidth usage.\n * Using https://docs.apryse.com/documentation/web/faq/self-serve-substitute-fonts/ along with this option allows you to fully customize the substitution behaviour for all office files.\n * @property {object} [officeOptions.formatOptions] An object that contains formatting options for an Office document. Same options as allowed here {@link Core.PDFNet.Convert.OfficeToPDFOptions}.\n * @property {boolean} [officeOptions.formatOptions.hideTotalNumberOfPages] If true will hide total number of pages from page number labels (i.e, Page 1, Page 2, vs Page 1 of 2, Page 2 of 2)\n * @property {boolean} [officeOptions.formatOptions.applyPageBreaksToSheet] If true will split Excel worksheets into pages so that the output resembles print output.\n * @property {boolean} [officeOptions.formatOptions.displayChangeTracking] If true will display office change tracking markup present in the document (i.e, red strikethrough of deleted content and underlining of new content). Otherwise displays the resolved document content, with no markup. Defaults to true.\n * @property {boolean} [officeOptions.formatOptions.displayHiddenText] If true will display hidden text in document. Otherwise hidden text will not be shown. Defaults to false.\n * @property {number} [officeOptions.formatOptions.excelDefaultCellBorderWidth] Cell border width for table cells that would normally be drawn with no border. In units of points. Can be used to achieve a similar effect to the \"show gridlines\" display option within Microsoft Excel.\n * @property {number} [officeOptions.formatOptions.excelMaxAllowedCellCount] An exception will be thrown if the number of cells in an Excel document is above the value. Used for early termination of resource intensive documents. Setting this value to 250000 will allow the vast majority of Excel documents to convert without issue, while keeping RAM usage to a reasonable level. By default there is no limit to the number of allowed cells.\n * @property {string} [officeOptions.formatOptions.locale] Sets the value for Locale in the options object ISO 639-1 code of the current system locale. For example: 'en-US', 'ar-SA', 'de-DE', etc.\n * @property {boolean} [enableOfficeEditing] If true, will load docx files with editing capabilities.\n * @property {string} [password] A string that will be used to as the password to load a password protected document.\n * @property {function} [onError] - A callback function that will be called when error occurs in the process of loading a document. The function signature is `function(e) {}`\n * @property {object} [xodOptions] - An object that contains the options for a XOD document.\n * @property {boolean} [xoddecrypt] - Function to be called to decrypt a part of the XOD file. For default XOD AES encryption pass Core.Encryption.decrypt.\n * @property {boolean} [xoddecryptOptions] -  An object with options for the decryption e.g. {p: \"pass\", type: \"aes\"} where is p is the password.\n * @property {boolean} [xodstreaming] - A boolean indicating whether to use http or streaming PartRetriever, it is recommended to keep streaming false for better performance. https://docs.apryse.com/documentation/web/guides/streaming-option/.\n * @property {boolean} [xodazureWorkaround] - Whether or not to workaround the issue of Azure not accepting range requests of a certain type. Enabling the workaround will add an extra HTTP request of overhead but will still allow documents to be loaded from other locations.\n * @property {boolean} [xodstartOffline] - Whether to start loading the document in offline mode or not. This can be set to true if the document had previously been saved to an offline database using WebViewer APIs. You'll need to use this option to load from a completely offline state.\n */\n","import core from 'core';\nimport mentionsManager from 'helpers/MentionsManager';\n\n/**\n * An instance of MentionsManager that can be used to allow mentioning people in a textarea in the notes panel.\n * @name UI.mentions\n * @see UI.MentionsManager\n * @type {UI.MentionsManager}\n */\n\nexport default (store) => {\n  mentionsManager.initialize(store, core.getAnnotationManager());\n\n  return expose(mentionsManager, [\n    'setUserData',\n    'getUserData',\n    'setAllowedTrailingCharacters',\n    'getAllowedTrailingCharacters',\n    'on',\n    'one',\n    'off',\n    'trigger',\n    'addEventListener',\n    'setEventListener',\n    'removeEventListener',\n    'setMentionLookupCallback',\n    'getMentionLookupCallback'\n  ]);\n};\n\nconst expose = (obj, methodsToExpose) => {\n  const result = {};\n\n  for (const methodName of methodsToExpose) {\n    result[methodName] = (...args) => obj[methodName](...args);\n  }\n\n  return result;\n};\n","/**\r\n * An instance of MenuOverlay that can be used to edit items in the settings menu overlay component.\r\n * @name UI.settingsMenuOverlay\r\n * @implements {UI.MenuOverlay}\r\n * @type {UI.MenuOverlay}\r\n * @example\r\nWebViewer(...)\r\n  .then(function (instance) {\r\n    instance.UI.settingsMenuOverlay.someAPI();\r\n  });\r\n */\r\n\r\n\r\n/**\r\n * A class which contains MenuOverlay APIs.<br/><br/>\r\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a MenuOverlay, use {@link UI.disableElements disableElements}.\r\n * @interface UI.MenuOverlay\r\n */\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\nexport default (store) => Object.create(MenuOverlayAPI).initialize(store);\r\n\r\nconst MenuOverlayAPI = {\r\n  initialize(store) {\r\n    this.store = store;\r\n    return this;\r\n  },\r\n  /**\r\n   * Add an array of Actions Buttons after the item that has the given data element.\r\n   * @method UI.MenuOverlay#add\r\n   * @param {Array.<object>} items Same as <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#actionbutton' target='_blank'>ActionButton</a>\r\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.add({\r\n      type: 'actionButton',\r\n      className:\"row\",\r\n      img: 'icon-header-print-line',\r\n      onClick: () => {\r\n        alert('Printing...');\r\n      },\r\n      dataElement: 'alertButton',\r\n      label:'print button'\r\n    });\r\n  });\r\n   */\r\n  add(buttons, dataElement) {\r\n    if (!Array.isArray(buttons)) {\r\n      buttons = [buttons];\r\n    }\r\n\r\n    const index = this._getIndexByDataElement(dataElement);\r\n    const items = this.getItems();\r\n\r\n    items.splice(index + 1, 0, ...buttons);\r\n\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Update all the items in the menuOverlay dropdown.\r\n   * To update an individual item, use {@link UI.updateElement updateElement}\r\n   * @method UI.MenuOverlay#update\r\n   * @param {Array.<object>} [items] the items that will be rendered in the menuOverlay dropdown\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // replace existing items with a new array of items\r\n    instance.UI.settingsMenuOverlay.update([\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton',\r\n        label:'test button',\r\n        role:\"option\"\r\n      },\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton2',\r\n        label:'test button 2',\r\n        role:\"option\"\r\n      },\r\n    ]);\r\n  });\r\n   */\r\n  update(items) {\r\n    if (!items) {\r\n      items = [];\r\n    }\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Return the array of items in the menuOverlay dropdown.\r\n   * @method UI.MenuOverlay#getItems\r\n   * @returns {Array.<object>} Current items in the menuOverlay dropdown.\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.getItems();\r\n  });\r\n   */\r\n  getItems() {\r\n    return [...selectors.getMenuOverlayItems(this.store.getState())];\r\n  },\r\n  _getIndexByDataElement(dataElement) {\r\n    let index;\r\n\r\n    if (typeof dataElement === 'undefined') {\r\n      index = -1;\r\n    } else {\r\n      const state = this.store.getState();\r\n      index = selectors.getMenuOverlayItems(state).findIndex((obj) => obj.dataElement === dataElement);\r\n    }\r\n\r\n    return index;\r\n  },\r\n};\r\n","import actions from 'actions';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.openElement(dataElement));\n};","/**\n * Sets visibility states of the elements to be visible. Note that openElements works only for panel/overlay/popup/modal elements.\n * @method UI.openElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // opens (shows) text popup and annotation popup in the UI\n    instance.UI.openElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElements) => {\n  store.dispatch(actions.openElements(dataElements));\n};","/**\n * Print the current document.\n * @method UI.print\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  print(\n    store.dispatch,\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n  );\n};\n","/**\n * Programmatically print the document without opening a modal with the print options provided. Not supported by legacy-ui\n * @method UI.printInBackground\n * @param {object} [options] Options for the printing.\n * @param {Array.<number>} [options.pagesToPrint] Optionally pass in the pages you want to print. By default, all pages will be printed.\n * @param {boolean} [options.includeAnnotations=false] If true, will print the documents with the annotations\n * @param {boolean} [options.includeComments=false] If true, will append comments to the document printed\n * @param {boolean} [options.isPrintCurrentView] If true, will print the current viewport view of the current page\n * @param {boolean} [options.maintainPageOrientation] If true, will maintain the pages orientation as set in the webviewer during printing\n * @param {function} [options.onProgress] A callback function that is executed on each page processed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.printInBackground({\n        includeComments:true,\n        includeAnnotations: true,\n        maintainPageOrientation: true,\n        onProgress: function(pageNumber, htmlElement) {},\n      });\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default (store) => (options) => {\n  const defaultOptions = {\n    includeAnnotations: false,\n    includeComments: false,\n    maintainPageOrientation: false,\n  };\n\n  const printOptions = {\n    ...defaultOptions,\n    ...options,\n    printWithoutModal: true,\n    printQuality: selectors.getPrintQuality(store.getState()),\n    printedNoteDateFormat: selectors.getPrintedNoteDateFormat(store.getState()),\n  };\n\n  const { pagesToPrint } = printOptions;\n\n  if (pagesToPrint && pagesToPrint.length === 0) {\n    console.warn('No pages to be printed were found in the \"pagesToPrint\" array provided. If you want to print all pages, please set this to undefined or null.');\n    return;\n  }\n\n  print(\n    store.dispatch,\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n    printOptions,\n  );\n};\n","/**\n * Stops on-going page processing to cancel a print job.\n * @method UI.cancelPrint\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n      instance.UI.cancelPrint();\n    });\n  });\n */\n\nimport { cancelPrint } from 'helpers/print';\n\nexport default () => {\n  cancelPrint();\n};\n","/**\n * Registers tool in the document viewer tool mode map, and adds a button object to be used in the header. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-tools/' target='_blank'>Customizing tools</a> to learn how to make a tool.\n * <br/><br/>\n * If you are using using multiviewer mode, you will have to register the tool to each document viewer.\n * @method UI.registerTool\n * @param {object} properties Tool properties.\n * @param {string} properties.toolName Name of the tool.\n * @param {Core.Tools.Tool} properties.toolObject Instance of the tool.\n * @param {string} properties.buttonImage Path to an image or base64 data for the tool button.\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element.\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to.\n * @param {string} [properties.tooltip] Tooltip of the tool button.\n * @param {number} [properties.documentViewerNumber] The document viewer number when there are multiple viewers. Default is 1.\n * @param {'always'|'active'|'never'} [properties.showColor] Controls when the tool button should show the color.\n * @param {boolean} [properties.showPresets] Option to whether show or hide preset styles. Default is true.\n * @param {function} [annotationConstructor] Deprecated Please use customAnnotationCheckFunc instead. Will be removed in the future.\n * @param {function} [customAnnotationCheckFunc] Function that takes in a parameter of an annotation. Returns a boolean if the specified annotation is a certain type of annotation. This function is used by the viewer to check if the annotation passed in is associated(created) with the registered tool.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // assume myCustomTool and myCustomAnnotation are already defined\n    const myTool = {\n      toolName: 'MyTool',\n      toolObject: myCustomTool,\n      buttonImage: 'path/to/image',\n      buttonName: 'myToolButton',\n      buttonGroup: 'miscTools',\n      tooltip: 'MyTooltip'\n    };\n\n    instance.UI.registerTool(myTool, undefined, annot => annot && annot.isCustomAnnot);\n  });\n */\n\nimport core from 'core';\nimport { register, copyMapWithDataProperties } from 'constants/map';\nimport actions from 'actions';\nimport { setDefaultToolStyle } from 'src/helpers/setDefaultToolStyles';\n\nexport default (store) => (tool, annotationConstructor, customAnnotationCheckFunc) => {\n  registerToolInToolModeMap(tool);\n  registerToolInRedux(store, tool);\n  register(tool, annotationConstructor, customAnnotationCheckFunc);\n  updateColorMapInRedux(store);\n  setDefaultToolStyle(tool.toolName);\n};\n\nconst registerToolInRedux = (store, tool) => {\n  store.dispatch(actions.registerTool(tool));\n};\n\nconst registerToolInToolModeMap = ({ toolObject, toolName, documentViewerNumber }) => {\n  if (core.getDocumentViewers().length > 1) {\n    console.warn('Multiple document viewers detected. If you plan to register tools with all document viewers, please use the documentViewerNumber parameter to register with each of them.');\n  }\n  let viewer = core.getDocumentViewer(documentViewerNumber);\n  if (!viewer) {\n    documentViewerNumber = 1;\n    viewer = core.getDocumentViewer(documentViewerNumber);\n  }\n  // Cannot create tools with their constructor since parameters can vary. Especially for custom tools.\n  const toolModeMap = viewer.getToolModeMap();\n  toolModeMap[toolName] = toolObject;\n  toolModeMap[toolName].name = toolName;\n};\n\nconst updateColorMapInRedux = (store) => {\n  store.dispatch(actions.setColorMap(copyMapWithDataProperties('iconColor', 'currentStyleTab')));\n};\n","/**\n * Removes the search listener function.\n * @method UI.removeSearchListener\n * @param {UI.searchListener} listener Search listener function that was added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n    instance.UI.removeSearchListener(searchListener);\n  });\n */\n\nimport { removeSearchListener as removeSearchListenerHelper } from 'helpers/search';\n\nexport default function removeSearchListener(listener) {\n  removeSearchListenerHelper(listener);\n}\n","import core from 'core';\n\nexport default () => {\n  core.rotateClockwise();\n};\n","import core from 'core';\n\nexport default () => {\n  core.rotateCounterClockwise();\n};\n","import core from 'core';\n\nexport default (store) => () => new Promise((resolve, reject) => {\n  const state = store.getState();\n  const { id: docId } = state.document;\n  const { serverUrl, serverUrlHeaders } = state.advanced;\n  const docIdQuery = docId ? { did: docId } : {};\n\n  if (!serverUrl) {\n    console.warn('serverUrl option is not defined. Please pass this option in WebViewer constructor to save/load annotations. See https://docs.apryse.com/documentation/web/guides/annotation/import-export/overview/ for details.');\n    reject();\n    return;\n  }\n\n  core.exportAnnotations((xfdfString) => {\n    fetch(serverUrl, {\n      method: 'POST',\n      headers: serverUrlHeaders,\n      body: {\n        ...docIdQuery,\n        data: xfdfString,\n      },\n      credentials: 'include'\n    }).then((response) => {\n      if (response.ok) {\n        resolve();\n      } else {\n        reject(response);\n      }\n    }).catch(reject);\n  });\n});\n","/**\n * Searches the document one by one for the text matching searchValue. To go to the next result this\n * function must be called again. Once document end is reach it will jump back to the first found result.\n *\n * @method UI.searchText\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @param {boolean} [options.searchUp=false] Search up the document (backwards).\n * @param {boolean} [options.ambientString=false] Get the ambient string in the result.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchText('test', {\n        caseSensitive: true,\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\nimport { getSearchListeners } from 'helpers/search';\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  const searchMode = [SearchMode.PAGE_STOP, SearchMode.HIGHLIGHT];\n\n  if (options.caseSensitive) {\n    searchMode.push(SearchMode.CASE_SENSITIVE);\n  }\n  if (options.wholeWord) {\n    searchMode.push(SearchMode.WHOLE_WORD);\n  }\n  if (options.wildcard) {\n    searchMode.push(SearchMode.WILD_CARD);\n  }\n  if (options.regex) {\n    searchMode.push(SearchMode.REGEX);\n  }\n  if (options.searchUp) {\n    searchMode.push(SearchMode.SEARCH_UP);\n  }\n  if (options.ambientString) {\n    searchMode.push(SearchMode.AMBIENT_STRING);\n  }\n  return searchMode;\n}\n\nexport default (dispatch) => (searchValue, options) => {\n  let searchOptions = {};\n  if (typeof options === 'string') {\n    const modes = options.split(',');\n    modes.forEach((mode) => {\n      searchOptions[lowerCaseFirstLetter(mode)] = true;\n    });\n  } else {\n    searchOptions = { ...options };\n  }\n\n  const searchMode = buildSearchModeFlag(searchOptions);\n\n  if (dispatch) {\n    // dispatch is only set when doing search through API (instance.searchText())\n    // When triggering search through UI, then redux updates are already handled inside component\n    dispatch(actions.openElement('searchPanel'));\n    dispatch(actions.searchText(searchValue, searchOptions));\n  }\n\n  function onResult(result) {\n    core.displaySearchResult(result);\n    // when full search is done, we make first found result to be the active result\n    core.setActiveSearchResult(result);\n    const optionsForSearchListener = {\n      // default values\n      caseSensitive: false,\n      wholeWord: false,\n      wildcard: false,\n      regex: false,\n      searchUp: false,\n      ambientString: false,\n      // override values with those user gave\n      ...searchOptions,\n    };\n    const searchListeners = getSearchListeners() || [];\n    searchListeners.forEach((listener) => {\n      try {\n        listener(searchValue, optionsForSearchListener, [result]);\n      } catch (e) {\n        console.error(e);\n      }\n    });\n  }\n\n  function onDocumentEnd() {\n    core.getDocumentViewer().trigger('endOfDocumentResult', true);\n  }\n  function handleSearchError(error) {\n    console.error(error);\n  }\n  const textSearchInitOptions = {\n    'fullSearch': false,\n    onResult,\n    onDocumentEnd,\n    'onError': handleSearchError,\n  };\n\n  core.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n};\n\n\nconst lowerCaseFirstLetter = (mode) => `${mode.charAt(0).toLowerCase()}${mode.slice(1)}`;\n","/**\n * Set the WV3D Properties Panel with an array of model data objects\n * @method UI.setWv3dPropertiesPanelModelData\n * @param {array} modelData Array of objects defining 3d metadata properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelModelData([{'name':'roof', 'height':'55cm'}, {'name':'wall', 'height':'100cm'}]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (modelData) => {\n  store.dispatch(actions.setWv3dPropertiesPanelModelData(modelData));\n};\n","/**\n * Set the configuration schema for the WV3D Properties Panel\n * @method UI.setWv3dPropertiesPanelSchema\n * @param {object} schema Object containing options for configuring the 3d properties panel.\n * @param {string} schema.headerName Sets the Title Header\n * @param {object} schema.defaultValues Defines the key/value pairs that will appear under the title, outside of a group.\n * @param {object} schema.groups Defines the collapsible groups that appear below the default values.\n * @param {array} schema.groupOrder Defines the order of the groups. If a group is not included it is appended to the end of the defined groups.\n * @param {boolean} schema.removeEmptyRows Defines whether to remove rows that contain empty string values.\n * @param {boolean} schema.removeEmptyGroups Defines whether to remove groups that contain only empty string values.\n * @param {boolean} schema.createRawValueGroup Defines whether to create a final group that has all the raw values.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelSchema({\n      headerName: 'Name',\n      defaultValues: {\n        Description: 'Description',\n        GlobalID: 'GlobalId',\n        Handle: 'handle',\n        EmptyRow1: 'EmptyRow1',\n      },\n      groups: {\n        SampleGroup01: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n          EmptyRow2: 'EmptyRow2',\n          GrossFootprintArea: 'GrossFootprintArea',\n          GrossSideArea: 'GrossSideArea',\n          GrossVolume: 'GrossVolume',\n        },\n        SampleGroup02: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n        },\n        SampleGroup03: {\n          ObjectType: 'Elephants',\n          EmptyRow3: 'Tigers',\n          ObjectPlacement: 'Bears',\n        },\n      },\n      groupOrder: ['Dimensions', 'RandomStuff'],\n      removeEmptyRows: false,\n      removeEmptyGroups: true,\n      createRawValueGroup: true,\n    })\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (schema) => {\n  store.dispatch(actions.setWv3dPropertiesPanelSchema(schema));\n};\n","/**\n * Sets a header group to be rendered in the Header element. This API comes useful when replacing the entire header items in small screens.\n * @method UI.setActiveHeaderGroup\n * @param {string} headerGroup Name of the header group to be rendered. Default WebViewer UI has eight header groups: 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActiveHeaderGroup('toolbarGroup-Annotate'); // switch to 'Annotate' group header\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (headerGroup) => {\n  store.dispatch(actions.setActiveHeaderGroup(headerGroup));\n};","/**\n * Sets a panel to be active in the leftPanel element. Note that this API does not include opening the leftPanel.\n * @method UI.setActiveLeftPanel\n * @param {string} dataElement Name of the panel to be active in leftPanel. Default WebViewer UI has three panel options: thumbnailsPanel, outlinesPanel and notesPanel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // open left panel\n    instance.UI.openElements([ 'leftPanel' ]);\n    // view outlines panel\n    instance.UI.setActiveLeftPanel('outlinesPanel');\n */\n\nimport actions from 'actions';\n\nexport default (store) => (headerGroup) => {\n  store.dispatch(actions.setActiveLeftPanel(headerGroup));\n};","/**\n * Sets the timezone that will be used in the UI anywhere a date is displayed.\n * A list of timezone names can be found {@link https://momentjs.com/timezone/ at momentjs docs}.\n * @method UI.setTimezone\n * @param {string} timezone Name of the timezone, e.g. \"America/New_York\", \"America/Los_Angeles\", \"Europe/London\".\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTimezone('Europe/London');\n */\n\nimport actions from 'actions';\n\nexport default (store) => (timezone) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([timezone], [TYPES.STRING], 'UI.setTimezone');\n  store.dispatch(actions.setTimezone(timezone));\n};","import core from 'core';\n\nexport default (isAdmin) => {\n  core.setIsAdminUser(isAdmin);\n};\n","import core from 'core';\n\nexport default (userName) => {\n  core.setCurrentUser(userName);\n};\n","export default {\n  border: 'StrokeColor',\n  fill: 'FillColor',\n  text: 'TextColor',\n};","export default {\n  StrokeColor: 'border',\n  FillColor: 'fill',\n  TextColor: 'text',\n};","import actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\n/**\n * Sets the active color palette of a tool and its associated annotation\n * @method UI.setActivePalette\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {'text'|'border'|'fill'} colorPalette The palette to be activated. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActivePalette('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nexport default (store) => (toolName, colorPalette) => {\n  const styleTabs = getDataWithKey(mapToolNameToKey(toolName)).styleTabs;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n\n  if (styleTabs.includes(property)) {\n    store.dispatch(actions.setActivePalette(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have the ${colorPalette} color. The available colors are: ${styleTabs.map((palette) => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","import { mapToolNameToKey } from 'constants/map';\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\n/**\r\n * @typedef UI.PaletteOption\r\n * @property {string[]} toolNames Tools that will have the same colors in the palette.\r\n * @property {string[]} colors An array of hex colors. Use 'transparency' for a transparent color.\r\n */\r\n\r\n/**\r\n * Sets the colors in the palette globally or for specific tools and their associated annotations\r\n * @method UI.setColorPalette\r\n * @param {string[]|UI.PaletteOption} An array of hex colors that will override the default colors for every tool.\r\n * An object can be passed to specify colors for particular tools.\r\n * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // this sets the palette globally. All the tools will use these colors. Can use empty string for blank spaces and 'transparency' for a transparent color.\r\n    instance.UI.setColorPalette(['#FFFFFF', '', '#DDDDDD', 'transparency']);\r\n\r\n    // use a different set of colors for the freetext and rectangle tool.\r\n    instance.UI.setColorPalette({\r\n      toolNames: ['AnnotationCreateFreeText', 'AnnotationCreateRectangle'],\r\n      colors: ['#333333'],\r\n    })\r\n  });\r\n */\r\n\r\nexport default (store) => (overrides) => {\r\n  const currentOverride = {\r\n    ...(selectors.getCustomElementOverrides(store.getState(), 'colorPalette') || {}),\r\n  };\r\n\r\n  if (Array.isArray(overrides)) {\r\n    if (overrides.every(isValidColor)) {\r\n      currentOverride.global = overrides;\r\n    } else {\r\n      return console.warn(\r\n        'An array is passed to setColorPalette, but some colors are invalid. A color must be \\'transparency\\' or a hex color string. For example #F0F0F0'\r\n      );\r\n    }\r\n  } else if (typeof overrides === 'object') {\r\n    if (overrides.toolNames && overrides.colors) {\r\n      overrides.toolNames.forEach((toolName) => {\r\n        const key = mapToolNameToKey(toolName);\r\n        currentOverride[key] = overrides.colors;\r\n      });\r\n    } else {\r\n      return console.warn(\r\n        'An object is passed to setColorPalette, but it doesn\\'t have a toolNames or colors property.'\r\n      );\r\n    }\r\n  }\r\n\r\n  store.dispatch(actions.setCustomElementOverrides('colorPalette', currentOverride));\r\n};\r\n\r\n// examples of valid colors are: '#f0f0f0', '#FFFFFF'\r\nconst isValidColor = (color) => color === 'transparency' || (color.startsWith('#') && color.split('#')[1].length === 6);\r\n","import actions from 'actions';\n/**\n * Add a list of documents to the dropdown element of Page Replacement modal and provide a\n * way to retreive document for displaying Page Replacement modal.\n * @method UI.setPageReplacementModalFileList\n * @param {Array} list An array of object for selection element. Object must have \"id\", \"filename\" properties and \"onSelect\" method.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const list = [\n      {id: '12', filename: 'file-one.pdf'},\n      {id: '13', filename: 'file-two.pdf'},\n      {id: '14', filename: 'foobar.pdf'}\n    ];\n\n    const options = list.map(item => {\n      // Add \"onSelect\" method to each item, and return Document instance\n      item.onSelect = () => instance.Core.createDocument('https://localhost/files/webviewer-demo.pdf');\n      return item;\n    });\n\n    instance.UI.setPageReplacementModalFileList(options);\n  });\n */\n\nexport default (store) => (list) => {\n  if (Array.isArray(list)) {\n    if (!list.every(isValidObject)) {\n      return console.warn(\n        'An array is passed to setPageReplacementModalFileList is invalid'\n      );\n    }\n  }\n\n  store.dispatch(actions.setPageReplacementModalFileList(list));\n};\n\nconst isValidObject = (item) => {\n  return Object.prototype.hasOwnProperty.call(item, 'id')\n    || Object.prototype.hasOwnProperty.call(item, 'filename')\n    || Object.prototype.hasOwnProperty.call(item, 'onSelect')\n    || typeof item.onSelect === 'function';\n};","import core from 'core';\n\nexport default (pageNumber) => {\n  core.setCurrentPage(pageNumber);\n};\n","import actions from 'actions';\n\n/**\n * Add custom modal element to WebViewer.\n * <br /><br />\n * Controlling custom modals is done using the element API, for example {@link UI.openElements openElements}, {@link UI.closeElements closeElements}, {@link UI.toggleElementVisibility toggleElementVisibility}, and {@link UI.disableElements disableElements}.\n * dateElement string passed on these function should be same as you set in options.dataElement.\n * <br /><br />\n * Every custom modal will add new &lt;div&gt; element with <b>CustomModal</b> and <b>&lt;options.dataElement string&gt;</b> set as class attribute\n * Modal with identical <em>options.dataElement</em> will get replaced by the latest modal options.\n * <br /><br />\n * For styling these components, see <a href=\"https://docs.apryse.com/documentation/web/guides/customizing-styles/\" target=\"_blank\">Customizing WebViewer UI Styles</a>\n *<br /><br />\n * Note that in most cases WebViewer is run inside an iframe and in order for <i>options.disableEscapeKeyDown</i> to automatically work, the iframe must be the\n * active element. This can be done by setting the focus to the iframe programmatically.\n *\n * @example\n   WebViewer(...).then(function(instance) {\n    const modal = {\n      dataElement: 'meanwhileInFinlandModal',\n      header: {\n        title: 'Modal header',\n        className: 'myCustomModal-header',\n        style: {}, // optional inline styles\n        children: []\n      },\n      body: {\n        className: 'myCustomModal-body',\n        style: {}, // optional inline styles\n        children: [  divInput1, divInput2 ], // HTML dom elements\n      },\n      footer: {\n        className: 'myCustomModal-footer footer',\n        style: {}, // optional inline styles\n        children: [\n          {\n            title: 'Cancel',\n            button: true,\n            style: {},\n            className: 'modal-button cancel-form-field-button',\n            onClick: (e) => { console.log('ff') }\n          },\n          {\n            title: 'OK',\n            button: true,\n            style: {},\n            className: 'modal-button confirm ok-btn',\n            onClick: (e) => { console.log('xx') }\n          },\n        ]\n      }\n    };\n    instance.UI.addCustomModal(modal);\n    instance.UI.openElements([modal.dataElement]);\n  });\n * @method UI.addCustomModal\n * @param {object} options\n * @param {string} options.dataElement Unique name of custom modal.\n * @param {boolean} [options.disableBackdropClick=false] Disable closing modal when user clicks outside of content area\n * @param {boolean} [options.disableEscapeKeyDown=false] Disable closing modal when user hit escape from keyboard\n * @param {UI.renderCustomModal} options.render Function rendering custom model contents, this is optional\n * @param {object} options.header JSON object with title, className, style and children parameter\n * @param {object} options.body JSON object with title, className, style and children parameter\n * @param {object} options.footer JSON object with title, className, style and children parameter\n */\nconst addCustomModal = (store) => (customModal) => {\n  store.dispatch(actions.addCustomModal(customModal));\n};\n\n\n/**\n * Callback that gets passed to `options.render` in {@link UI.addCustomModal addCustomModal}.\n * @callback UI.renderCustomModal\n * @returns {(HTMLElement|string)} Modal element. If string is returned, it will be displayed as is inside the modal. Accepts React components as the return value as well.\n */\n\nexport {\n  addCustomModal as default\n};\n","/**\n * Filter the annotations shown in the notes panel\n * @method UI.setCustomNoteFilter\n * @param {UI.filterAnnotation} filterAnnotation Function that takes an annotation and returns if the annotation(note) should be shown in the notes panel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // only show annotations that are created by John\n    instance.UI.setCustomNoteFilter(function(annotation) {\n      return annotation.Author === 'John';\n    });\n  });\n */\n/**\n * Callback that gets passed to {@link UI.setCustomNoteFilter setCustomNoteFilter}.\n * @callback UI.filterAnnotation\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} Whether the annotation should be kept.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (filterFunc) => {\n  store.dispatch(actions.setCustomNoteFilter(filterFunc));\n};","/**\n * Return the annotations that have inline comment enabled on select\n * @method UI.setInlineCommentFilter\n * @param {UI.filterAnnotation} filterAnnotation Function that takes an annotation and returns if the annotation should have inline comment feature enabled when it's selected\n * @example\n  WebViewer(...)\n  .then(function(instance) {\n    // only enable inline comment for free-hand annotations on select\n    instance.UI.setInlineCommentFilter((annotation) => {\n      return annotation.ToolName === instance.Core.Tools.ToolNames.FREEHAND;\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.setInlineCommentFilter setInlineCommentFilter}.\n * @callback UI.filterAnnotation\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} Whether the annotation should have inline comment feature enabled on select.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (filterFunc) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([filterFunc], [TYPES.FUNCTION], 'UI.setInlineCommentFilter');\n  store.dispatch(actions.setInlineCommentFilter(filterFunc));\n};","/**\n * Adds a custom panel in left panel\n * @method UI.setCustomPanel\n * @param {object} options\n * @param {object} options.tab Tab options.\n * @param {string} options.tab.dataElement data-element for tab.\n * @param {string} options.tab.title Tooltip for tab.\n * @param {string} options.tab.img Url for an image.\n * @param {object} options.panel Panel options.\n * @param {string} options.panel.dataElement data-element for panel.\n * @param {UI.renderCustomPanel} options.panel.render Function that returns panel element.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var myCustomPanel = {\n      tab:{\n        dataElement: 'customPanelTab',\n        title: 'customPanelTab',\n        img: '/favicon-32x32.png',\n      },\n      panel: {\n        dataElement: 'customPanel',\n        render: function() {\n          var div = document.createElement('div');\n          div.innerHTML = 'Hello World';\n          return div;\n        }\n      }\n    };\n\n    instance.UI.setCustomPanel(myCustomPanel);\n  });\n */\n/**\n * Callback that gets passed to `options.panel.render` in {@link UI.setCustomPanel setCustomPanel}.\n * @callback UI.renderCustomPanel\n * @returns {HTMLElement} Panel element.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (customPanel) => {\n  store.dispatch(actions.setCustomPanel(customPanel));\n};","/**\n * Returns a dictionary with page indices as keys and the bookmark text as the values\n * @method UI.exportBookmarks\n * @return {Object} A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Save the annotation data for doc123\n    const bookmarks = instance.UI.exportBookmarks();\n    const bookmarksString = JSON.stringify(bookmarks);\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'POST',\n      body: bookmarksString // written into a json file on server\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getBookmarks(store.getState());\n};\n","/**\n * Imports user bookmarks\n * @method UI.importBookmarks\n * @param {object} bookmarks A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}. Behaviour is undefined otherwise.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // load the user bookmarks data for id 'doc123'\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'GET'\n    }).then(function(response) {\n      if (response.status === 200) {\n        response.text().then(function(bookmarksString) {\n          // {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n          const bookmarks = JSON.parse(bookmarksString);\n          instance.UI.importBookmarks(bookmarks);\n        });\n      }\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (bookmarks) => {\n  store.dispatch(actions.setBookmarks(bookmarks));\n};\n","/**\n * Sets the fit mode of the viewer.\n * @method UI.setFitMode\n * @param {string} fitMode Fit mode of WebViewer.\n * @see UI.FitMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    var FitMode = instance.UI.FitMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setFitMode(FitMode.FitWidth);\n    });\n  });\n */\n\nimport core from 'core';\nimport FitMode from 'constants/fitMode';\n\nexport default (mode) => {\n  const fitModeToFunctionMap = {\n    [FitMode.FitWidth]: core.fitToWidth,\n    [FitMode.FitPage]: core.fitToPage,\n    [FitMode.Zoom]: core.fitToZoom,\n  };\n  const fitFunction = fitModeToFunctionMap[mode];\n\n  if (!fitFunction) {\n    console.warn(`Unsupported fit mode: ${mode}`);\n    return;\n  }\n\n  fitFunction();\n};\n","/**\n * Customize header. Refer to <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/' target='_blank'>Customizing header</a> for details.\n * @method UI.setHeaderItems\n * @param {UI.headerCallback} headerCallback Callback function to perform different operations on the header.\n * @example\n// Adding save annotations button to the end of the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      var myCustomButton = {\n        type: 'actionButton',\n        img: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        onClick: function() {\n\n        }\n      }\n\n      header.push(myCustomButton);\n    });\n  });\n * @example\n// Removing existing buttons from the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.update([]);\n    });\n  });\n * @example\n// Appending logo to the 'Annotate' toolbar group and shifting existing buttons to the right\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').unshift({\n        type: 'customElement',\n        render: function() {\n          var logo = document.createElement('img');\n          logo.src = '/logo.svg';\n          logo.style.width = '200px';\n          logo.style.marginLeft = '10px';\n          logo.style.cursor = 'pointer';\n          logo.onclick = function() {\n            window.open('https://www.apryse.com', '_blank');\n          }\n          return logo;\n        }\n      }, {\n        type: 'spacer'\n      });\n    });\n  });\n * @example\n// Moving the line tool from the 'Shapes' toolbar group to the 'Annotate' toolbar group\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').push({ type: 'toolGroupButton', toolGroup: 'lineTools', dataElement: 'lineToolGroupButton', title: 'annotation.line' });\n      header.getHeader('toolbarGroup-Shapes').delete(6);\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.setHeaderItems setHeaderItems}.\n * @callback UI.headerCallback\n * @param {UI.Header} header Header instance with helper functions\n */\n\nimport actions from 'actions';\n\nexport default (store) => (callback) => {\n  const state = store.getState();\n  const headerGroups = Object.keys(state.viewer.headers);\n  const header = Object.create(Header).initialize(state.viewer, headerGroups);\n\n  callback(header);\n  headerGroups.forEach((headerGroup) => {\n    store.dispatch(actions.setHeaderItems(headerGroup, [...header.headers[headerGroup]]));\n  });\n};\n\n/**\n * A class which contains header APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> You must NOT instantiate this yourself. Access the header instance in {@link UI.setHeaderItems setHeaderItems} as follows:\n * @name Header\n * @memberof UI\n * @class\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      // instance of Header is passed to the callback\n    });\n  });\n */\nconst Header = {\n  initialize(viewerState) {\n    this.headers = viewerState.headers;\n    this.toolButtonObjects = viewerState.toolButtonObjects;\n    this.headerGroup = 'default';\n    this.index = -1;\n\n    return this;\n  },\n  /**\n   * Select a button from header to edit.\n   * @method UI.Header#get\n   * @param {string} dataElement data-element of the button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#insertBefore insertBefore}, {@link UI.Header#insertAfter insertAfter} and {@link UI.Header#delete delete} to perform an operation on the button.\n   */\n  get(dataElement) {\n    if (this.index !== -1) {\n      // get(dataElement) has been called before so we need to reset this\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach((key) => {\n        delete this[key];\n      });\n    }\n\n    this._setIndex(dataElement);\n\n    if (this.index === -1) {\n      console.warn(`${dataElement} does not exist in ${this.headerGroup} header`);\n    } else {\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach((key) => {\n        this[key] = item[key];\n      });\n    }\n\n    return this;\n  },\n  /**\n   * Get all list of header items from a group selected from {@link UI.Header#getHeader getHeader}. By default, it returns the items from 'default' group.\n   * @method UI.Header#getItems\n   * @returns {Array.<object>} List of header item objects. You can edit it using normal array operations and update the whole header by passing it to {@link UI.Header#update update}.\n   */\n  getItems() {\n    return this.headers[this.headerGroup];\n  },\n  /**\n   * Select a header group to edit.\n   * @method UI.Header#getHeader\n   * @param {string} headerGroup Name of the header group. Possible options are 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  getHeader(headerGroup) {\n    const headerGroups = Object.keys(this.headers);\n\n    if (headerGroups.includes(headerGroup)) {\n      this.headerGroup = headerGroup;\n      this._resetIndex();\n    } else {\n      console.warn(`Header must be one of: ${headerGroups.join(' or ')}.`);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button before the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertBefore\n   * @param {object} obj A header object. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertBefore(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertBefore');\n    } else {\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button after the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertAfter\n   * @param {object} obj A header object. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertAfter(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertAfter');\n    } else {\n      this.index++;\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Delete a button.\n   * @method UI.Header#delete\n   * @param {(number|string)} [id] You can either pass an index or `data-element` of the button to delete. If you already selected a button from {@link UI.Header#get get}, passing null would delete the selected button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  delete(arg) {\n    let index;\n\n    if (typeof arg === 'number') {\n      index = arg;\n    } else if (typeof arg === 'string') {\n      if (this._getIndexOfElement(arg) === -1) {\n        console.warn(`${arg} does not exist in ${this.headerGroup} header`);\n      } else {\n        index = this._getIndexOfElement(arg);\n      }\n    } else if (typeof arg === 'undefined') {\n      if (this.index === -1) {\n        console.warn('Please use .get(dataElement) first before using delete()');\n      } else {\n        index = this.index;\n      }\n    } else if (Array.isArray(arg)) {\n      arg.forEach((arg) => {\n        if (typeof arg === 'number' || typeof arg === 'string') {\n          this.delete(arg);\n        }\n      });\n    } else {\n      console.warn('Argument must be empty, a number, a string or an array');\n    }\n\n    if (index !== undefined && index !== -1) {\n      this.headers[this.headerGroup].splice(index, 1);\n      this._resetIndex();\n    }\n\n    return this;\n  },\n  /**\n   * Removes the first button in the header.\n   * @method UI.Header#shift\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  shift() {\n    this.headers[this.headerGroup].shift();\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the beginning of the header.\n   * @method UI.Header#unshift\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  unshift(...newItem) {\n    this.headers[this.headerGroup].unshift(...newItem);\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the end of the header.\n   * @method UI.Header#push\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  push(...newItem) {\n    this.headers[this.headerGroup].push(...newItem);\n\n    return this;\n  },\n  /**\n   * Removes the last button in the header.\n   * @method UI.Header#pop\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  pop() {\n    this.headers[this.headerGroup].pop();\n\n    return this;\n  },\n  /**\n   * Updates the header with new list of header items.\n   * @method UI.Header#update\n   * @param {Array.<object>} headerObjects List of header objects to replace the exising header. You can use {@link UI.Header#getItems getItems} to refer to existing header objects.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  update(arg) {\n    if (Array.isArray(arg)) {\n      this._updateItems(arg);\n    } else {\n      console.warn('Argument must be an array');\n    }\n\n    return this;\n  },\n  _updateItems(items) {\n    this.headers[this.headerGroup] = items;\n\n    return this;\n  },\n  _setIndex(dataElement) {\n    this.index = this._getIndexOfElement(dataElement);\n  },\n  _getIndexOfElement(dataElement) {\n    return this.headers[this.headerGroup].findIndex((item) => {\n      let dataElementOfItem;\n\n      if (item.type === 'toolButton') {\n        dataElementOfItem = this.toolButtonObjects[item.toolName].dataElement;\n      } else {\n        dataElementOfItem = item.dataElement;\n      }\n\n      return dataElementOfItem === dataElement;\n    });\n  },\n  _resetIndex() {\n    this.index = -1;\n  },\n};\n","/**\n * Sets the color palette that will be used as a tool button's icon color.\n * @method UI.setIconColor\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {string} colorPalette The palette which will be used as a tool button's icon color. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // sets the color in fill palette to be used as freetext tool button's icon color\n    // by default freetext tool button will use the color in text palette as its icon color\n    instance.UI.setIconColor('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nimport actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\nexport default (store) => (toolName, colorPalette) => {\n  const styleTabs = getDataWithKey(mapToolNameToKey(toolName)).styleTabs;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n  if (styleTabs.includes(property)) {\n    store.dispatch(actions.setIconColor(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have ${colorPalette} color, available colors are: ${styleTabs.map((palette) => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","/**\n * Add/Edit translations data for a specific language\n * @method UI.setTranslations\n * @param {string} language The language code for which you want to add/edit translation data\n * @param {Object<string, string>} translationObject <p> A key/value object with the new/updated translations. </p>\n * <p> The key values of the translation object will be the translation key for the new/updated translation.\n * Refer to the lib/ui/i18n folder to find the existing keys in the translation files </p>\n * <p> The values of the translation object will be the value of the new/updated translation</p>\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTranslations('es',\n    {\n      'option.colorPalette.colorLabel': 'Etiqueta de color', //updates a pre-existing translation data\n      'action.newButton': 'Nuevo botón' // adds a new translation data\n    });\n  });\n */\n\nimport i18next from 'i18next';\n\nexport default (language, translationObject) => {\n  i18next.on('loaded', () => {\n    i18next.addResources(\n      language,\n      'translation',\n      translationObject\n    );\n  });\n\n  i18next.reloadResources([language]);\n};","/**\n * Sets the layout mode of the viewer.\n * @method UI.setLayoutMode\n * @param {string} layoutMode Layout mode of WebViewerInstance UI.\n * @see UI.LayoutMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const LayoutMode = instance.UI.LayoutMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setLayoutMode(LayoutMode.FacingContinuous);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default (mode) => {\n  core.setDisplayMode(mode);\n};\n","/**\n * Sets the maximum zoom level allowed by the UI. Default is 9999%.\n * @method UI.setMaxZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxZoomLevel('150%'); // or setMaxZoomLevel(1.5)\n  });\n */\n\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\n\nexport default (store) => setMaxZoomLevel(store.dispatch);\n","/**\n * Sets the minimum zoom level allowed by the UI. Default is 5%.\n * @method UI.setMinZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMinZoomLevel('10%'); // or setMinZoomLevel(0.1)\n  });\n */\n\nimport actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default (store) => (zoomLevel) => {\n  const minZoom = getActualZoomLevel(zoomLevel);\n\n  if (minZoom) {\n    const maxZoom = zoomFactors.getMaxZoomLevel();\n    const zoomList = defaultZoomList.filter((zoom) => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMinZoomLevel(minZoom);\n    store.dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMinZoomLevel(minZoom);\n  } else {\n    console.warn('Type of the argument for setMinZoomLevel must be either string or number');\n  }\n};","/**\n * Sets the format for displaying the date when a note is create/modified. A list of formats can be found {@link https://github.com/iamkun/dayjs/blob/master/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.setNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (noteDateFormat) => {\n  store.dispatch(actions.setNoteDateFormat(noteDateFormat));\n};\n","/**\n * Sets the format for displaying the date when a note is printed. A list of formats can be found {@link https://github.com/iamkun/dayjs/blob/master/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.setPrintedNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintedNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (noteDateFormat) => {\n  store.dispatch(actions.setPrintedNoteDateFormat(noteDateFormat));\n};\n","import addSortStrategy from './addSortStrategy';\n\nexport default (store) => (newStrategy) => {\n  addSortStrategy(store)(newStrategy);\n};\n","/**\n * Sets page labels that will be displayed in UI. You may want to use this API if the document's page labels start with characters/numbers other than 1.\n * @method UI.setPageLabels\n * @param {Array.<string>} pageLabels Page labels that will be displayed in UI.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setPageLabels(['i', 'ii', 'iii', '4', '5']); // assume a document has 5 pages\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (pageLabels) => {\n  store.dispatch(actions.setPageLabels(pageLabels));\n};","/**\n * Sets the print quality. Higher values are higher quality but takes longer to complete and use more memory. The viewer's default quality is 1.\n * @method UI.setPrintQuality\n * @param {number} quality The quality of the document to print. Must be a positive number.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintQuality(2);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (quality) => {\n  if (quality <= 0) {\n    throw Error('Value must be a positive number');\n  }\n  store.dispatch(actions.setPrintQuality(quality));\n};\n","/**\n * Sets the default print options.\n * @method UI.setDefaultPrintOptions\n * @param {object} options - The default print options of the document to print. Must be an object.\n * @param {boolean} [options.includeComments] - Whether or not will print the documents with the comments\n * @param {boolean} [options.includeAnnotations] - Whether or not will print the documents with the annotations\n * @param {boolean} [options.maintainPageOrientation] - Whether or not will maintain the pages orientation as set in the webviewer\n *\n * @example\nWebViewer(...) .then(function(instance) {\n  instance.UI.setDefaultPrintOptions({ includeComments: true, includeAnnotations: true });\n});\n */\n\nimport actions from 'actions';\n\nexport default (store) => (options) => {\n  if (typeof options !== 'object' || options === undefined || Object.keys(options).filter((option) => option !== 'includeComments' && option !== 'includeAnnotations' && option !== 'maintainPageOrientation').length !== 0 || Object.values(options).filter((val) => val !== true && val !== false).length !== 0) {\n    throw Error('Invalid options provided');\n  } else {\n    store.dispatch(actions.setDefaultPrintOptions(options));\n  }\n};","/**\n * Sets the currently selected tab of a Tabs component.\n * @method UI.setSelectedTab\n * @param {string} id The id of the Tabs component to set.\n * @param {string} dataElement The 'dataElement' attribute of the TabPanel component to select.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Set the currently selected tab of 'signatureModal' to be the 'Type' panel.\n    instance.UI.setSelectedTab('signatureModal', 'textSignaturePanelButton'); //'inkSignaturePanelButton', 'imageSignaturePanelButton'\n    // Set the currently selected tab of 'linkModal' to be the 'Page' panel.\n    instance.UI.setSelectedTab('linkModal', 'PageNumberPanelButton'); //'URLPanelButton'\n    // Set the currently selected tab of 'rubberStampTab' to be the 'Custom' panel.\n    instance.UI.setSelectedTab('rubberStampTab', 'customStampPanelButton'); //'standardStampPanelButton'\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (id, dataElement) => {\n  store.dispatch(actions.setSelectedTab(id, dataElement));\n};\n","import actions from 'actions';\n\nexport default (store) => (value) => {\n  if (value) {\n    store.dispatch(actions.openElement('leftPanel'));\n  } else {\n    store.dispatch(actions.closeElement('leftPanel'));\n  }\n};","/**\n * Sets a sorting algorithm for the Notes Panel.\n * @method UI.setNotesPanelSortStrategy\n * @param {string} sortStrategy Name of the sort strategy algorithm. Check [UI.NotesPanelSortStrategy]{@link UI.NotesPanelSortStrategy} for the options or use your own strategy.\n * @see UI.NotesPanelSortStrategy\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.TYPE); // sort notes by type\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (sortStrategy) => {\n  if (!sortStrategy) {\n    throw new Error('Unsupported sort strategy.');\n  }\n\n  store.dispatch(actions.setNotesPanelSortStrategy(sortStrategy));\n};","/**\n * Sets the swipe orientation between pages of WebViewer UI on mobile devices. Default is horizontal.\n * @method UI.setSwipeOrientation\n * @param {string} swipeOrientation The swipe orientation to navigate between pages. Available orientations are: horizontal, vertical and both.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSwipeOrientation('vertical'); // set the swipe orientation to vertical.\n  });\n */\nimport TouchEventManager from 'helpers/TouchEventManager';\n\nexport default (swipeOrientation) => {\n  if (swipeOrientation === 'both') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else if (swipeOrientation === 'vertical') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = false;\n  } else if (swipeOrientation === 'horizontal') {\n    TouchEventManager.allowVerticalSwipe = false;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else {\n    console.warn(`${swipeOrientation} is not a valid orientation. Try 'vertical,' 'horizontal,' or 'both.`);\n  }\n};","// MIT License\n\n// Copyright (c) 2017 Nikita Gusakov\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport postcss from 'postcss';\n\nconst isInsideRoot = (rule) => {\n  return (\n    rule.selectors.length !== 1 ||\n    rule.selectors[0] !== ':root' ||\n    rule.parent.type !== 'root'\n  );\n};\n\nconst isVariableDeclaration = (decl) => {\n  return Boolean(decl.value) && decl.prop.startsWith('--');\n};\n\nconst parse = (css, options) => {\n  const root = postcss.parse(css, {\n    from: options.from,\n    parser: options.parser\n  });\n\n  const variables = {};\n  root.walkRules((rule) => {\n    if (isInsideRoot(rule)) {\n      return;\n    }\n\n    rule.each((decl) => {\n      if (isVariableDeclaration(decl)) {\n        const name = decl.prop.slice(2);\n        variables[name] = decl.value;\n      }\n    });\n  });\n\n  return variables;\n};\n\nexport {\n  parse,\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nimport { parse } from 'helpers/cssVariablesParser';\n\nimport lightModeString from '!!raw-loader!../constants/light.scss';\nimport highContastLightModeString from '!!raw-loader!../constants/highContrastLight.scss';\nimport darkModeString from '!!raw-loader!../constants/dark.scss';\nimport highContrastDarkModeString from '!!raw-loader!../constants/highContrastDark.scss';\nimport Theme from '../constants/theme';\n\n/**\n * Sets the theme of WebViewer UI. Please note that this does not work in IE11.\n * @method UI.setTheme\n * @param {string} theme Theme of WebViewerInstance UI.\n * @see UI.Theme\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default (store) => {\n  let previousActiveTheme = Theme.LIGHT; // default\n  let previousIsHighContrastMode = false; // default\n\n  store.subscribe(() => {\n    const activeTheme = selectors.getActiveTheme(store.getState());\n    const isHighContrastMode = selectors.getIsHighContrastMode(store.getState());\n\n    if (previousActiveTheme !== activeTheme || previousIsHighContrastMode !== isHighContrastMode || window.isApryseWebViewerWebComponent) {\n      previousActiveTheme = activeTheme;\n      previousIsHighContrastMode = isHighContrastMode;\n      updateColors(activeTheme, isHighContrastMode);\n    }\n  });\n  return (theme) => {\n    const values = Object.values(Theme);\n    if (values.indexOf(theme) < 0) {\n      throw new Error(`${theme} is not one of: ${values.join(',')}}`);\n    }\n    store.dispatch(actions.setActiveTheme(theme));\n  };\n};\n\nconst setVariables = (themeVarString = '') => {\n  const root = document.documentElement;\n  const themeVariables = parse(themeVarString, {});\n  Object.keys(themeVariables).forEach((key) => {\n    const themeVariable = themeVariables[key];\n    root.style.setProperty(`--${key}`, themeVariable);\n  });\n};\n\nconst updateColors = (activeTheme, isHighContrastMode) => {\n  if (activeTheme === Theme.LIGHT) {\n    setVariables(isHighContrastMode ? highContastLightModeString : lightModeString);\n  } else if (activeTheme === Theme.DARK) {\n    setVariables(isHighContrastMode ? highContrastDarkModeString : darkModeString);\n  }\n};\n","export default \":root {\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n  --blue-7: #2651A1;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --signature-draw-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-8);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --primary-button: var(--blue-7);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-7);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--box-shadow);\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n}\\n\";","export default \":root {\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-7);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-5);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-5);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --reply-divider: var(--gray-3);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-5);\\n  --file-picker-drop-background: var(--blue-1);\\n  --file-picker-drop-border: var(--blue-5);\\n  --signature-draw-background: var(--gray-2);\\n  --modal-stroke-and-border: var(--gray-5);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--gray-7);\\n  --note-box-shadow-expanded: rgba(134, 142, 150, 0.24);\\n\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --outline-color: var(--blue-5);\\n  --outline-hover: var(--gray-2);\\n  --outline-selected: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n\\n  --scale-overlay-item-hover: var(--blue-4);\\n}\\n\";","export default \":root {\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n  --blue-7: #7FB7EB;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --signature-draw-background: var(--gray-3);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-1);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-8);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-7);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --primary-button-hover: var(--blue-6);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: transparent;\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-3);\\n}\\n\";","export default \":root {\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-2);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-6);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-6);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-6);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-6);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --primary-button-hover: var(--blue-5);\\n  --secondary-button-hover: var(--blue-5);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-6);\\n  --file-picker-drop-background: var(--blue-1);\\n  --file-picker-drop-border: var(--blue-6);\\n  --signature-draw-background: var(--gray-3);\\n  --modal-stroke-and-border: var(--gray-4);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: var(--gray-2);\\n  --note-box-shadow-expanded: var(--gray-2);\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-6);\\n  --outline-hover: var(--blue-3);\\n  --outline-selected: var(--blue-3);\\n\\n  --scale-overlay-item-hover: var(--blue-3);\\n}\\n\";","import actions from 'actions';\n\n/**\n * Sets the current active toolbar group.\n * @method UI.setToolbarGroup\n * @param {string} groupDataElement The groups dataElement. Default values are: toolbarGroup-View, toolbarGroup-Annotate,\n * toolbarGroup-Shapes, toolbarGroup-Insert, toolbarGroup-Measure, toolbarGroup-Edit, toolbarGroup-Forms\n * @param {boolean} [pickTool] If true, after setting the toolbar group, the last picked tool for the group will be set as the current tool. Defaults to true.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Change the toolbar group to the `Shapes` group\n    instance.UI.setToolbarGroup('toolbarGroup-Shapes');\n */\n\nexport default (store) => (group, pickTool = true) => {\n  store.dispatch(actions.setToolbarGroup(group, pickTool));\n};","/**\n * Creates a new Toolbar group (Ribbon)\n *\n * @method UI.createToolbarGroup\n * @param {object} toolbarGroup\n * @param {string} toolbarGroup.name The label for the new Toolbar Group or the key value to get the label from translation files.\n * <p>Refer to the lib/ui/i18n folder to find the existing keys in the translation files</p>\n * @param {string} toolbarGroup.dataElementSuffix <p>The suffix value you want to use to select your Toolbar group by data element.\n * All toolbar groups have the data element in this format <strong>toolbarGroup-&#60;dataElementSuffix&#62</strong>.</p> <p>For example, if you set the dataElementSuffix as 'Draw',\n * the dataElement of your ribbon will be <strong>toolbarGroup-Draw</strong></p>\n * @param {Array} toolbarGroup.children A list of elements to be added on the toolbar group header.\n * Check [this guide]{@link https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items} to see the available options to be used as a toolbar group child.\n * @param {boolean} [toolbarGroup.useDefaultElements] <p>If true, the common elements used in most toolbar groups will be added to the children list.</p>\n * <p>These elements are a spacer in the beginning and at the end of the header, the undo and redo buttons, and the eraser button.</p>\n * <p>In the example below you can see these elements being added. By default, the value will be false and these elements will not be added.</p>\n * @example\n  WebViewer(...)\n   .then(function(instance) {\n    const { annotationManager, documentViewer } = instance.Core;\n    const annotHistoryManager = documentViewer.getAnnotationHistoryManager();\n\n    // In case you want to use the Toolbar Group label with translation, you can\n    // set the values with the setTranslations API and use the translation key\n    // as the name parameter\n\n    instance.UI.setTranslations('en',\n     {\n        'option.toolbarGroup.draw': 'Draw'\n      }\n    );\n\n    instance.UI.createToolbarGroup(\n    {\n      name: 'option.toolbarGroup.draw',\n      dataElementSuffix: 'Draw',\n      useDefaultElements: false,\n      children: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.areaMeasurement'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle'\n        },\n        { type: 'divider'},\n        // Undo Button\n        {\n          type: 'actionButton',\n          style: { 'marginLeft': '0px' },\n          dataElement: 'undoButton',\n          title: 'action.undo',\n          img: 'icon-operation-undo',\n          onClick: () => {\n            annotHistoryManager.undo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canUndo()\n        },\n        // Redo Button\n        {\n          type: 'actionButton',\n          dataElement: 'redoButton',\n          title: 'action.redo',\n          img: 'icon-operation-redo',\n          onClick: () => {\n            annotHistoryManager.redo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canRedo()\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n      ]\n    })\n  }\n})\n*/\n\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\nimport actions from 'actions';\n\nexport default (store) => (toolbarGroup) => {\n  if (toolbarGroup.useDefaultElements) {\n    toolbarGroup.children = [\n      { type: 'spacer' },\n      ...toolbarGroup.children,\n      { type: 'divider' },\n      undoButton,\n      redoButton,\n      { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n      { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n    ];\n  }\n\n  const headerGroup = `toolbarGroup-${toolbarGroup.dataElementSuffix}`;\n  store.dispatch(actions.setHeaderItems(headerGroup, toolbarGroup.children));\n  store.dispatch(actions.setCustomHeadersAdditionalProperties(headerGroup, { name: toolbarGroup.name }));\n};\n","import actions from 'actions';\n\nexport default (store) => (zoomList) => {\n  store.dispatch(actions.setZoomList(zoomList));\n};","import actions from 'actions';\n\n/**\n * Show outline control\n * @method UI.showOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showOutlineControl();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setOutlineControlVisibility(true));\n};\n","/**\n * Displays the custom error message\n * @method UI.showWarningMessage\n * @param {(string|object)} options Warning string message to display or an object for controlling the warning popup\n * @param {string} options.confirmBtnText The text that will be rendered in the confirm button\n * @param {string} options.title The title of the modal\n * @param {string} options.message The text that will rendered in the body of the modal\n * @param {function} options.onConfirm The callback function that will be invoked when the user clicks the Confirm button. The callback must return a Promise that resolves.\n * @param {function} options.onCancel The callback function that will be invoked when the user clicks the Cancel button. The callback must return a Promise that resolves.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showWarningMessage({\n      title: 'This is my warning modal title',\n      message: 'This is the body of my modal',\n      confirmBtnText: 'Okay!',\n      onConfirm: () => {\n        console.log('The user clicked the confirm button');\n        return Promise.resolve();\n      },\n      onCancel: () => {\n        console.log('The user clicked the cancel button');\n        return Promise.resolve();\n      },\n    });\n  });\n */\nimport actions from 'actions';\n\nexport default (store) => (options) => {\n  store.dispatch(actions.showWarningMessage(options));\n};\n","import core from 'core';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\n/**\n * Syncs the namespaces under the Core namespace for the window, this instance, as well as others instances.\n * <br/><br/>\n * This is required for interoperability between multiple instances of WebViewer since each loaded instance ends up with different class references despite sharing the same name.\n * @method UI.syncNamespaces\n * @param {WebViewerInstance | object} namespaces The object containing the namespaces that will be used for all instances. This can be a WebViewer instance or an object with the namespaces inside.\n * @param {object} [namespaces.PDFNet] The PDFNet namespace. This is probably the most common that needs to be synced.\n * @param {object} [namespaces.Actions] The Actions namespace.\n * @param {object} [namespaces.Annotations] The Annotations namespace.\n * @param {object} [namespaces.Math] The Math namespace.\n * @param {object} [namespaces.Tools] The Tools namespace.\n * @param {...WebViewerInstance} otherInstances Other instances that will share the same namespaces.\n * @example\n// Loaded PDFNet directly\nconst Core = window.Core;\nconst PDFNet = Core.PDFNet;\nCore.setWorkerPath('../../../lib/core');\nCore.enableFullPDF();\n...\nWebViewer(...)\n  .then(function(instance) {\n    // Force this instance to use the loaded PDFNet instead of the one loaded specific to this instance\n    instance.UI.syncNamespaces({ PDFNet });\n    // instance.UI.syncNamespaces({ PDFNet }, instance2, instance3);  // Alternative; instance, instance2, and instance3 will share the same PDFNet namespace.\n    ...\n  });\n */\n\nexport default (namespaces, ...otherInstances) => {\n  const instances = [getInstanceNode().instance, ...otherInstances];\n  if (!namespaces) {\n    namespaces = getInstanceNode().instance;\n  }\n  const { PDFNet, Actions, Annotations, Math, Tools } = namespaces;\n  instances.forEach((instance) => {\n    if (instance && instance !== namespaces) {\n      core.syncNamespaces(namespaces);\n      if (PDFNet) {\n        instance.Core.PDFNet = PDFNet;\n      }\n      if (Actions) {\n        instance.Core.Actions = Actions;\n      }\n      if (Annotations) {\n        instance.Core.Annotations = Annotations;\n      }\n      if (Math) {\n        instance.Core.Math = Math;\n      }\n      if (Tools) {\n        instance.Core.Tools = Tools;\n      }\n    }\n  });\n};\n","/**\n * An instance of Popup that can be used to edit items in the text popup component\n * @name UI.textPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.textPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'textPopup');","/**\n * Toggles full scree mode of the browser.\n * @method UI.toggleFullScreen\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleFullScreen();\n  });\n */\n\nimport toggleFullscreen from 'helpers/toggleFullscreen';\n\nexport default () => {\n  toggleFullscreen();\n};\n","import actions from 'actions';\n\n/**\n * Enables syncing of annotation style updates to the associated tool that created the annotation.\n * Note that this is enabled by default.\n * @method UI.enableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport const enableToolDefaultStyleUpdateFromAnnotationPopup = (store) => () => {\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(true));\n};\n\n/**\n * Disables syncing of annotation style updates to the associated tool that created the annotation.\n * So if an annotation's style is changed the tool default styles will not be updated.\n * @method UI.disableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport const disableToolDefaultStyleUpdateFromAnnotationPopup = (store) => () => {\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(false));\n};\n","/**\n * Unregisters tool in the document viewer tool mode map, and removes the button object.\n * @method UI.unregisterTool\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.unregisterTool('MyTool');\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => (toolName) => {\n  unregisterToolInHeader(store, toolName);\n  unregisterToolInRedux(store, toolName);\n  unregisterToolInToolModeMap(toolName);\n};\n\nconst unregisterToolInHeader = (store, toolName) => {\n  const state = store.getState();\n\n  Object.keys(state.viewer.headers).forEach((header) => {\n    const headerItems = state.viewer.headers[header].filter((headerItem) => headerItem.toolName !== toolName);\n\n    store.dispatch(actions.setHeaderItems(header, headerItems));\n  });\n};\n\nconst unregisterToolInRedux = (store, toolName) => {\n  store.dispatch(actions.unregisterTool(toolName));\n};\n\nconst unregisterToolInToolModeMap = (toolName) => {\n  core.getDocumentViewers().forEach((viewer) => {\n    delete viewer.getToolModeMap()[toolName];\n  });\n};","import actions from 'actions';\nimport setColorPalette from './setColorPalette';\n\n/**\n * Update a button element in the viewer.\n * @method UI.updateElement\n * @param {string} dataElement the data element of the button element that will be updated. Only the data element of HTML elements that are of the type 'button' will work.\n * If you added a custom button, please ensure it is one of the following: <a href=\"https://docs.apryse.com/documentation/web/guides/customizing-header/#actionbutton\" target=\"_blank\">button types</a>\n * @param {object} props An object that is used to override an existing item's properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateElement('thumbnailsPanelButton', {\n      img: 'path/to/image',\n      title: 'new_tooltip',\n    })\n  });\n */\nexport default (store) => (dataElement, overrides) => {\n  switch (dataElement) {\n    // for backwards compatibility\n    case 'colorPalette':\n      setColorPalette(store)(overrides);\n      break;\n    default:\n      if (validateButtonOverrides(overrides)) {\n        store.dispatch(actions.setCustomElementOverrides(dataElement, overrides));\n      }\n  }\n};\n\nconst validateButtonOverrides = (overrides) => {\n  if (overrides !== null && typeof overrides !== 'object') {\n    return console.warn(\n      'The second argument needs to be an object to update a button',\n    );\n  }\n\n  return overrides;\n};\n","/**\n * Update existing tool's properties.\n * @method UI.updateTool\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {object} [properties] Tool properties\n * @param {string} [properties.buttonImage] Path to an image or base64 data for the tool button\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to\n * @param {string} [properties.tooltip] Tooltip of the tool button\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateTool('AnnotationCreateSticky', {\n      buttonImage: '/favicon-32x32.png'\n    });\n  });\n */\nexport default (store) => (toolName, properties) => {\n  store.dispatch({\n    type: 'UPDATE_TOOL',\n    payload: { toolName, properties },\n  });\n};\n","/**\n * Use/not use embedded printing. Only applicable to Chrome.\n * The printing process will be faster and the quality might be higher when using Chrome's native printing.\n * You may not want to use embedded printing if there are custom annotations in your document.\n * @method UI.useEmbeddedPrint\n * @param {boolean} [use=true] Whether or not to use embedded printing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.useEmbeddedPrint(false); // disable embedded printing\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (useEmbeddedPrint) => {\n  store.dispatch(actions.useEmbeddedPrint(useEmbeddedPrint));\n};","import actions from 'actions';\n\n/**\n * @callback SignatureFilterFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation  A signature annotation found in the SignatureCreateTool saved signatures list\n * @param {number} index An optional parameter for the index of the annotaiton parameter within the SignatureCreateTool saved signatures list\n * @returns {boolean} Whether or not a signature annotation should be included in the annotation preset\n */\n\n/**\n * Accepts a function that filters what saved signatures will be displayed in the signature annotation preset. Changing this function will instantly changes signatures displayed in the preset.\n *\n * @method UI.setDisplayedSignaturesFilter\n * @param {UI.SignatureFilterFunction} filterFunction The function that will be used to filter signatrues displayed in the preset\n * @example\nWebviewer(...)\n  .then(instance => {\n    // Only signatures that have a value set for the 'isInitial' custom data property will display in the preset\n    instance.UI.setDisplayedSignaturesFilter((a) => a.getCustomData('isInitial'));\n  });\n */\nexport default (store) => (filterFunction) => {\n  store.dispatch(actions.setDisplayedSignaturesFilterFunction(filterFunction));\n};\n","/**\n * Sets the units that will be displayed in the measurement tools' styles popup\n * Valid units are: 'mm', 'cm', 'm', 'km', 'mi', 'yd', 'ft', 'in', 'pt'\n * @method UI.setMeasurementUnits\n * @param {Object} units an object which contains the from units and to units\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMeasurementUnits({\n      from: ['in', 'cm', 'm'],\n      to: ['cm', 'm', 'km']\n    });\n  });\n */\n\nexport default (store) => ({ from, to }) => {\n  const { measurementUnits } = store.getState().viewer;\n\n  if (!from) {\n    from = measurementUnits.from;\n  }\n  if (!to) {\n    to = measurementUnits.to;\n  }\n\n  store.dispatch({\n    type: 'SET_MEASUREMENT_UNITS',\n    payload: { from, to },\n  });\n};\n","/**\n * Set the number of signatures that can be stored in the WebViewer UI (default is 4)\n * @method UI.setMaxSignaturesCount\n * @param {number} [maxSignaturesCount=4] Number of signature webViewer can store\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxSignaturesCount(5); // allow up to 5 stored signatures\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (maxSignaturesCount) => {\n  store.dispatch(actions.setMaxSignaturesCount(maxSignaturesCount));\n};","/**\n * Set the fonts that are used when typing a signature in the signature dialog.\n * @method UI.setSignatureFonts\n * @param {Array.<string>|UI.setSignatureFontsCallback} fonts An array of font families.\n * @example // 6.1\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSignatureFonts(['GreatVibes-Regular']);\n    instance.UI.setSignatureFonts(currentFonts => [\n      ...currentFonts,\n      'sans-serif',\n    ]);\n  });\n */\n\n/**\n * @callback UI.setSignatureFontsCallback\n * @param {Array.<string>} fonts current font families\n * @returns {Array.<string>} fonts to set.\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (arg) => {\n  let fonts;\n\n  if (typeof arg === 'string') {\n    fonts = [arg];\n  }\n\n  if (Array.isArray(arg)) {\n    fonts = arg;\n  }\n\n  if (typeof arg === 'function') {\n    const currentFonts = selectors.getSignatureFonts(store.getState());\n    fonts = arg(currentFonts);\n  }\n\n  if (fonts) {\n    store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  }\n};\n","/**\n * Disable reply for annotations if the callback function returns true. The callback function gets evaluated when the Comments panel is open, an annotation is selected, and the selected annotation has a comment.\n * Only one callback function will be stored and invoked. If multiple criteria is needed to disable replies you must write them in a single callback function.\n * @method UI.disableReplyForAnnotations\n * @param {UI.disableReplyForAnnotationsCallback} isReplyDisabledCallback Callback function that returns true if reply will be disabled for the annotation passed in. False otherwise.\n * @example\n WebViewer(...)\n  .then(instance => {\n\n    // disable reply for Freehand annotations\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation instanceof instance.Core.Annotations.FreeHandAnnotation;\n    });\n\n    // disable reply for annotations authored by Guest\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation['Author'] === 'Guest';\n    });\n\n    // disable reply for annotations created more than 10 seconds ago\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      const createdDate = new Date(annotation['DateCreated']);\n      const todayDate = new Date();\n      return (todayDate - createdDate) > 10000;\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.disableReplyForAnnotations disableReplyForAnnotations}.\n * @callback UI.disableReplyForAnnotationsCallback\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} True if replies for the annotation passed in should be disabled. False otherwise.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (isReplyDisabledFunc) => {\n  store.dispatch(actions.disableReplyForAnnotations(isReplyDisabledFunc));\n};","import getHashParameters from 'helpers/getHashParameters';\n\n/**\n * A getter that returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n * <a href='https://docs.apryse.com/documentation/web/guides/config-files/#passing-custom-data' target='_blank'>Refer to the passing custom data section</a>.\n * @method UI.getCustomData\n * @returns {string} returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n */\nexport default () => getHashParameters('custom', null);","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations if that annotation currently support it. Currently only the Ellipsis annotation supports it.\n * @method UI.setCustomMeasurementOverlay\n * @param {array} customOverlayInfo an array of customOverlay configurations. The configuration object has five properties: title, label, validate, value, and onChange\n * @example\nWebViewer(...)\n  .then(function(instance) {\n      instance.UI.setCustomMeasurementOverlayInfo([\n      {\n        title: \"Radius Measurement\", //Title for overlay\n        label: \"Radius\", // Label to be shown for the value\n        // Validate is a function to validate the annotation is valid for the current custom overlay\n        validate: annotation => annotation instanceof instance.Core.Annotations.EllipseAnnotation,\n        // The value to be shown in the custom overlay\n        value: annotation => annotation.Width / 2,\n        // onChange will be called whenever the value in the overlay changes from user input\n        onChange: (e, annotation) => {\n          // Do something with the annot like resize/redraw\n          instance.Core.annotationManager.redrawAnnotation(annotation);\n        }\n      }\n    ])\n  });\n */\n\nexport default (store) => (customOverlayInfo) => {\n  store.dispatch(action.setCustomMeasurementOverlay(customOverlayInfo));\n};\n","import actions from 'actions';\n\n/**\n * @callback NoteTransformFunction\n * @memberof UI\n * @param {HTMLElement} wrapperElement  A reference to the DOM node that wraps the note. You can use this to query select child elements to mutate (see the examples below)\n * @param {object} state The state of the note. Contains two properties, 'annotation' and 'isSelected'\n * @param {Core.Annotations.Annotation} state.annotation A reference to the annotation object associated with the note\n * @param {boolean} state.isSelected whether or not the note is currently expanded\n * @param {function} createElement A utility function that should be used when creating DOM nodes. This is a replacement for `document.createElement`.\n * Accepts the same parameters as `document.createElement`. Using document.createElement instead of this function will cause your DOM nodes to not be cleaned up on subsequent renders.\n */\n\n/**\n * Accepts a function that will be called every time a note in the left panel is rendered.\n * This function can be used to add, edit or hide the contents of the note.\n * <br><br>\n * <span style='font-size: 18px'><b>Please carefully read the documentation and the notes below before using this API</b></span><br><br>\n *\n * <b>This API is experimental and should be used sparingly.</b> If you find you are heavily relying on this function,\n *  it is recommended that you <a href='https://docs.apryse.com/documentation/web/guides/advanced-customization/'>fork the UI repo</a> and make the changes directly in the source code (Note.js).\n * <br><br>\n *\n *\n * The structure of the HTML that is passed into this function may change may change without notice in any release. <b>Please make sure\n * to test this function thoroughly when upgrading WebViewer versions.</b>\n * <br><br>\n *\n *\n *  There may be unexpected behaviour when using this API. The HTML that is provided is controlled by React, and sometimes React will override any changes you make.\n *  If you find any unexpected behaviour when using this API, then this API probably won't work for your use case and you will have to make the changes directly in the source code.\n * <br><br>\n *\n *  <b>Do not use document.createElement to create DOM elements</b>. Instead, use the provided `createElement` utility function provided as the third parameter.\n *\n *  <b>Do not use HTMLElement.removeChild or any other APIs that remove elements from the DOM.</b> Doing so will cause React to lose reference to this node, and will crash.\n *  If you need to hide an HTML element, set the style to `display: none` instead.\n * <br><br>\n * @method UI.dangerouslySetNoteTransformFunction\n * @param {UI.NoteTransformFunction} noteTransformFunction The function that will be used to transform notes in the left panel\n * @example\nWebviewer(...)\n  .then(instance => {\n    instance.UI.dangerouslySetNoteTransformFunction((wrapper, state, createElement) => {\n      // Change the title of every note\n      wrapper.querySelector('.author-and-time > .author').innerHTML = 'My custom note title';\n\n      // Add a button that alerts the user when clicked\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        if(state.isSelected) {\n          alert('Hello world!');\n        } else {\n          alert('Goodbye world!');\n        }\n      };\n      button.innerHTML = 'Alert me'\n      wrapper.appendChild(button);\n\n      // Add a button that makes the annotation blue\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        state.annotation.StrokeColor = new instance.Core.Annotations.Color(0, 0, 255);\n        instance.UI.annotManager.redrawAnnotation(state.annotation)\n      };\n      button.innerHTML = 'Make me blue'\n      wrapper.appendChild(button);\n    })\n  });\n */\nexport default (store) => (noteTransformFunction) => {\n  store.dispatch(actions.setNoteTransformFunction(noteTransformFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomNoteSelectionFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation A reference to the annotation object associated with the note\n */\n\n/**\n * @method UI.setCustomNoteSelectionFunction\n * @param {UI.CustomNoteSelectionFunction} customNoteSelectionFunction The function that will be invoked when clicking on a note in notes panel.\n * The function will only be invoked when the underlying annotation is not already selected.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomNoteSelectionFunction(annotation => {\n      // some code\n    })\n  });\n */\n\nexport default (store) => (customNoteSelectionFunction) => {\n  store.dispatch(actions.setCustomNoteSelectionFunction(customNoteSelectionFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomApplyRedactionsHandler\n * @memberof UI\n * @param {Array.<Core.Annotations.Annotation>} annotations\n * @param {function} originalApplyRedactionsFunction The original applyRedactions function\n */\n\n/**\n * @method UI.setCustomApplyRedactionsHandler\n * @param {UI.CustomApplyRedactionsHandler} customApplyRedactionsHandler\n * The function that will be invoked when clicking on the 'Redact All' button.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomApplyRedactionsHandler((annotationsToRedact, originalApplyRedactionsFunction) => {\n      // custom code\n      ...\n      originalApplyRedactionsFunction();\n    })\n  });\n */\n\nexport default (store) => (customApplyRedactionsHandler) => {\n  store.dispatch(actions.setCustomApplyRedactionsHandler(customApplyRedactionsHandler));\n};","import actions from 'actions';\n\n/**\n * @callback CustomMultiViewerSyncHandler\n * @memberof UI\n * @param {number} primaryDocumentViewerKey The primary documentViewerKey to be used when syncing\n * @param {Array<function>} removeHandlerFunctions The event listeners to remove when syncing is finished\n */\n\n/**\n * @method UI.setCustomMultiViewerSyncHandler\n * @param {UI.CustomMultiViewerSyncHandler} customMultiViewerSyncHandler The function that will be invoked when syncing documents in multi viewer mode.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomMultiViewerSyncHandler((primaryDocumentViewerKey, removeHandlerFunctions) => {\n      // some code\n    })\n  });\n */\n\nexport default (store) => (customMultiViewerSyncHandler) => {\n  store.dispatch(actions.setCustomMultiViewerSyncHandler(customMultiViewerSyncHandler));\n};","import actions from 'actions';\n\n/**\n * @callback CustomMultiViewerAcceptedFileFormats\n * @memberof UI\n * @param {Array<string>} acceptedFileFormats The file formats to support when accepting files in multiviewer mode\n */\n\n/**\n * @method UI.setCustomMultiViewerAcceptedFileFormats\n * @param {UI.CustomMultiViewerAcceptedFileFormats} customMultiViewerAcceptedFileFormats\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomMultiViewerAcceptedFormats(['pdf']);\n  });\n */\n\nexport default (store) => (customMultiViewerAcceptedFileFormats) => {\n  store.dispatch(actions.setCustomMultiViewerAcceptedFileFormats(customMultiViewerAcceptedFileFormats));\n};","import core from 'core';\r\n\r\nexport default (results) => {\r\n  core.clearSearchResults();\r\n  core.displayAdditionalSearchResults(results);\r\n};\r\n","import core from 'core';\n\nexport default (result, index) => {\n  if (!result && index >= 0) {\n    // core doesn't have concept of active result index. In previous implementation,\n    // there is theoretically a case where not setting result, but passing index and that should have worked\n    // To have backward compatibility here, we check if user didn't give result and then try to use index\n    // to retrieve result object from all current search results and set that as new active search result\n    const searchResults = core.getPageSearchResults();\n    const newActiveResult = searchResults[index];\n    if (newActiveResult) {\n      core.setActiveSearchResult(newActiveResult);\n    }\n  } else {\n    core.setActiveSearchResult(result);\n  }\n};\n","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations on mouseHover, overriding the existing overlay.\n * @method UI.setAnnotationContentOverlayHandler\n * @param {function} customOverlayHandler A function that takes an annotation and returns a DOM Element, which is rendered as a tooltip when hovering over the annotation. Returning null or false will render nothing. Returning 'undefined' will use default behavior.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationContentOverlayHandler(annotation => {\n        const div = document.createElement('div');\n        div.appendChild(document.createTextNode(`Created by: ${annotation.Author}`));\n        div.appendChild(document.createElement('br'));\n        div.appendChild(document.createTextNode(`Created on ${annotation.DateCreated}`));\n        return div;\n    });\n  });\n */\n\nexport default (store) => (annotationContentOverlayHandler) => {\n  store.dispatch(action.setAnnotationContentOverlayHandler(annotationContentOverlayHandler));\n};","import { overrideSearchExecution as overrideSearchExecutionHelper } from 'helpers/search';\n\n/**\n * Add custom override function for default search on UI.\n * overrideSearchExecutionCallback function will be executed with search value and search options\n * when user executes search from UI. This function won't be executed when search is triggered through programmatic searches.\n * @method UI.overrideSearchExecution\n * @param {function} overrideSearchExecutionCallback Function that will executed instead of default search functionality.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    function searchFn(searchValue, options) {\n      console.log(searchValue, options);\n    };\n\n    instance.UI.overrideSearchExecution(searchFn);\n  });\n */\nexport default function overrideSearchExecution(overrideSearchExecutionCallback) {\n  overrideSearchExecutionHelper(overrideSearchExecutionCallback);\n}\n","import React from 'react';\nimport PageNavOverlay from 'src/components/PageNavOverlay';\n\nexport default {\n  getPageNavOverlay: () => <PageNavOverlay dataElement=\"customPageNavOverlay\"/>,\n};","import actions from 'actions';\n\n/**\n * NOTE: Digital Signature Verification requires the WebViewer Full API\n * @namespace UI.VerificationOptions\n */\n\n/**\n * Loads the Public Key Certificates to be used for Digital Signature\n * Verification.\n *\n * The contents of the X.509 Public Key Certificate need to encoded in a binary\n * Distinguished Encoding Rules (DER) format, or in the plaintext\n * Privacy-Enhanced Mail (PEM) format, which includes an appropriate header,\n * Base64 encoded DER representing the public key certificate, and appropriate\n * footer.\n * @method UI.VerificationOptions.addTrustedCertificates\n *\n * @param {\n *  Array<\n *    string | File | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray\n *  >\n * } certificates An array of URLs, and/or instance of the File type, and/or\n * a Binary Array datatype that contain the X.509 Public Key Certificates to be\n * used for validating Digital Signatures on a document.\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/certificate/as/arraybuffer'\n *   );\n *   const certificateAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.addTrustedCertificates([\n *      certificateAsArrayBuffer,\n *     'https://mydomain.com/path/to/certificate1.cer',\n *     'https://mydomain.com/path/to/certificate2.crt',\n *   ])\n * });\n */\nconst addTrustedCertificates = (store) => (certificates) => {\n  store.dispatch(actions.addTrustedCertificates(certificates));\n};\n\n/**\n * Loads a Trust List to be used for Digital Signature Verification.\n *\n * The Trust List is structured in Acrobat's FDF Data/Cert Exchange format into\n * the VerificationOptions certificate store.\n *\n * Certificates inside the FDF trust list that cannot be decoded and loaded,\n * will be skipped.\n * @method UI.VerificationOptions.loadTrustList\n *\n * @param {Blob | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray} TrustList\n * A buffer representation of FDF Certificate Exchange Data\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/trustList/'\n *   );\n *   const trustListAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.loadTrustList(trustListAsArrayBuffer);\n * });\n */\nconst loadTrustList = (store) => (trustList) => {\n  store.dispatch(actions.addTrustList(trustList));\n};\n\n/**\n * Enables online CRL revocation checking for verifying certificates.\n * @method UI.VerificationOptions.enableOnlineCRLRevocationChecking\n */\nconst enableOnlineCRLRevocationChecking = (store) => () => {\n  store.dispatch(actions.setIsRevocationCheckingEnabled(true));\n};\n\n/**\n * Sets the proxy URL server used for online revocation requests during\n * Digital Signature Verification. Used to avoid CORS-related errors.\n * The default value is https://proxy.pdftron.com.\n * @method UI.VerificationOptions.setRevocationProxyPrefix\n *\n * @param {string} proxy_server_url\n * The URL (including the protocol such as 'https://') to use as a prefix for\n * making online revocation requests through a proxy server to avoid CORS\n * related issues. This can be suppressed by passing an empty string.\n * If null is provided, or if this API is not called, the default value\n * (https://proxy.pdftron.com) is used.\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   instance.UI.VerificationOptions.setRevocationProxyPrefix('https://proxy.mydomain.com');\n * });\n */\nconst setRevocationProxyPrefix = (store) => (revocationProxyPrefix) => {\n  store.dispatch(actions.setRevocationProxyPrefix(revocationProxyPrefix));\n};\n\nexport {\n  addTrustedCertificates,\n  loadTrustList,\n  enableOnlineCRLRevocationChecking,\n  setRevocationProxyPrefix,\n};\n","import actions from 'actions';\n\n/**\n * @namespace UI.NotesPanel\n */\n\n/**\n * Enables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.enableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableTextCollapse()\n *\n * });\n */\nconst enableTextCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.disableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableTextCollapse()\n * });\n */\nconst disableTextCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(false));\n};\n\n/**\n * Enables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.enableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableReplyCollapse()\n * });\n */\nconst enableReplyCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.disableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableReplyCollapse()\n * });\n */\nconst disableReplyCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(false));\n};\n\n/**\n * Disables the automatic expansion of all the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.disableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableAutoExpandCommentThread()\n * });\n */\nconst disableAutoExpandCommentThread = (store) => () => {\n  store.dispatch(actions.setCommentThreadExpansion(false));\n};\n\n/**\n * Enables the automatic expansion of the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.enableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableAutoExpandCommentThread()\n * });\n */\nconst enableAutoExpandCommentThread = (store) => () => {\n  store.dispatch(actions.setCommentThreadExpansion(true));\n};\n\n/**\n * Sets a custom header for the notes panel by overwriting or prepending to the default header.\n * @method UI.NotesPanel.setCustomHeader\n * @param {object} options\n * @param {boolean} [options.overwriteDefaultHeader=false] Replaces original notes panel header with content in render function.\n * @param {UI.NotesPanel.renderCustomHeader} options.render Callback function that returns custom elements to be prepended or to completely overwrite the default header. This function will receive the array of notes as an argument.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setCustomHeader({\n      overwriteDefaultHeader: true,\n      render: (notes) => {\n        const div = document.createElement('div');\n\n        const header = document.createElement('h2');\n        header.innerHTML = 'Custom header goes here!';\n        div.appendChild(header);\n\n        const subheader = document.createElement('h3');\n        subheader.innerHTML = `Number of notes: ${notes.length}`;\n        div.appendChild(subheader);\n\n        const button = document.createElement('button');\n        button.innerHTML = 'Back to Issues';\n        button.addEventListener('click', () => {\n            alert('Clicked button!');\n        });\n        div.appendChild(button);\n\n        return div;\n      }\n    });\n  });\n */\n\n/**\n * Callback used in {@link UI.NotesPanel.setCustomHeader setCustomHeader} and {@link UI.NotesPanel.setCustomEmptyPanel setCustomEmptyPanel}.\n * @callback UI.NotesPanel.renderCustomHeader\n * @param {Array} notes Array of notes displayed in the notes panel. Parameter not available in {@link UI.NotesPanel.setCustomEmptyPanel setCustomEmptyPanel} (since there are no notes).\n * @returns {HTMLElement} Custom header element.\n */\nconst setCustomHeader = (store) => (customHeader) => {\n  store.dispatch(actions.setNotesPanelCustomHeader(customHeader));\n};\n\n/**\n * Sets either an icon and message, or custom content, in the Notes Panel when the panel is empty.\n * @method UI.NotesPanel.setCustomEmptyPanel\n * @param {object} options\n * @param {string} [options.message] Message displayed when panel is empty.\n * @param {string} [options.readOnlyMessage] Message displayed when panel is empty for a read-only document.\n * @param {string} [options.icon] Use inline SVG with this parameter. Default icon is used if nothing is specified.\n * @param {boolean} [options.hideIcon=false] Hides icon if true.\n * @param {UI.NotesPanel.renderCustomHeader} [options.render] Callback function that returns custom elements to render in empty notes panel. Overwrites all other properties if provided.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      icon: '<svg data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\"><defs><style>.cls-1{fill:#dfe2ed;}</style></defs><title>Artboard 1</title><path class=\"cls-1\" d=\"M50,4.5H14A3.5,3.5,0,0,0,10.5,8V56A3.5,3.5,0,0,0,14,59.5H50A3.5,3.5,0,0,0,53.5,56V8A3.5,3.5,0,0,0,50,4.5ZM50.5,56a.5.5,0,0,1-.5.5H14a.5.5,0,0,1-.5-.5V8a.5.5,0,0,1,.5-.5H50a.5.5,0,0,1,.5.5Z\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"32\" r=\"2.5\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"44.3\" r=\"2.5\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"19.7\" r=\"2.5\"/><rect class=\"cls-1\" x=\"25.98\" y=\"30.26\" width=\"20.02\" height=\"3.49\"/><rect class=\"cls-1\" x=\"25.98\" y=\"42.55\" width=\"20.02\" height=\"3.49\"/><polygon class=\"cls-1\" points=\"25.98 17.96 25.98 21.45 46 21.45 46 17.96 44 17.96 25.98 17.96\"/></svg>',\n      message: 'Here is a custom message to show when the Notes Panel is empty.'\n    });\n\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      hideIcon: false,\n      readOnlyMessage: 'A different custom message if Notes Panel is empty and document is read-only.'\n    });\n\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      render: () => {\n        const div = document.createElement('div');\n        const header = document.createElement('h2');\n        header.innerHTML = 'Custom empty content goes here!';\n        div.appendChild(header);\n        return div;\n      }\n    });\n  });\n*/\nconst setCustomEmptyPanel = (store) => (options) => {\n  store.dispatch(actions.setNotesPanelEmptyPanel(options));\n};\n\n/**\n * Enable the preview of attachments.\n * @method UI.NotesPanel.enableAttachmentPreview\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.enableAttachmentPreview();\n  });\n */\nconst enableAttachmentPreview = (store) => () => {\n  store.dispatch(actions.setReplyAttachmentPreviewEnabled(true));\n};\n\n/**\n * Disable the preview of attachments.\n * @method UI.NotesPanel.disableAttachmentPreview\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableAttachmentPreview();\n  });\n */\nconst disableAttachmentPreview = (store) => () => {\n  store.dispatch(actions.setReplyAttachmentPreviewEnabled(false));\n};\n\n/**\n * Disable multi select in the notes panel\n * @method UI.NotesPanel.disableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableMultiSelect();\n  });\n */\nconst disableMultiSelect = (store) => () => {\n  store.dispatch(actions.setNotesPanelMultiSelect(false));\n};\n\n/**\n * @callback UI.NotesPanel.attachmentHandler\n * @param {File} file The file selected to be uploaded\n * @returns {Promise<string>} A promise that resolves to a URL string pointing to the file saved on the cloud\n */\n\n/**\n * Set the handler function for reply attachment. Can use this for uploading attachments to cloud.\n * @method UI.NotesPanel.setAttachmentHandler\n * @param {UI.NotesPanel.attachmentHandler} handler The handler function\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setAttachmentHandler(async (file) => {\n      const uploadedURL = await aws.upload(file); //e.g. https://pdftron.s3.amazonaws.com/downloads/pl/demo.pdf\n\n      return uploadedURL;\n    });\n  });\n */\nconst setAttachmentHandler = (store) => (attachmentHandler) => {\n  store.dispatch(actions.setReplyAttachmentHandler(attachmentHandler));\n};\n\n/**\n* Enables the capability to filter by different measurement types in the comments panel filter.\n* For example, line annotations can also be distance measurements. Enabling this API would allow you to\n* filter by line annotations and distance measurements separately.\n* This API is disabled by default.\n* @method UI.NotesPanel.enableMeasurementAnnotationFilter\n* @example\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.NotesPanel.enableMeasurementAnnotationFilter();\n});\n*/\nconst enableMeasurementAnnotationFilter = (store) => () => {\n  store.dispatch(actions.setEnableMeasurementAnnotationsFilter(true));\n};\n\n/**\n * Disables the capability to filter by different measurement types in the comments panel filter.\n * For example, if your document has line annotations and distance measurement annotations, they would be consolidated into one filter option: Line Annotation.\n * @method UI.NotesPanel.disableMeasurementAnnotationFilter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableMeasurementAnnotationFilter();\n  });\n */\nconst disableMeasurementAnnotationFilter = (store) => () => {\n  store.dispatch(actions.setEnableMeasurementAnnotationsFilter(false));\n};\n\n\nexport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread,\n  setCustomHeader,\n  setCustomEmptyPanel,\n  enableAttachmentPreview,\n  disableAttachmentPreview,\n  disableMultiSelect,\n  setAttachmentHandler,\n  enableMeasurementAnnotationFilter,\n  disableMeasurementAnnotationFilter,\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport thumbnailSelectionModes from 'constants/thumbnailSelectionModes';\n\n/**\n * @namespace UI.ThumbnailsPanel\n */\n\n/**\n * Enable the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.enableMultiselect\n * @deprecated Use [enableMultiSelect]{@link UI.ThumbnailsPanel.enableMultiSelect} instead\n */\nconst enableMultiselect = (store) => () => {\n  console.warn('UI.ThumbnailsPanel.enableMultiselect is deprecated, please use UI.ThumbnailsPanel.enableMultiSelect instead');\n  enableMultiSelect(store)();\n};\n\n/**\n * Exit the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.disableMultiselect\n * @deprecated Use [disableMultiSelect]{@link UI.ThumbnailsPanel.disableMultiSelect} instead\n */\nconst disableMultiselect = (store) => () => {\n  console.warn('UI.ThumbnailsPanel.disableMultiselect is deprecated, please use UI.ThumbnailsPanel.disableMultiSelect instead');\n  disableMultiSelect(store)();\n};\n\n/**\n * Enable the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.enableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.enableMultiSelect();\n  });\n */\nconst enableMultiSelect = (store) => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(true));\n};\n\n/**\n * Exit the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.disableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.disableMultiSelect();\n  });\n */\nconst disableMultiSelect = (store) => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(false));\n};\n\n/**\n * Select thumbnails in the thumbnail panel. This requires the \"ThumbnailMultiselect\" feature to be enabled\n * @method UI.ThumbnailsPanel.selectPages\n * @param {Array<number>} pageNumbers array of page numbers to select\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(['ThumbnailMultiselect']);\n\n    const pageNumbersToSelect = [1, 2, 3];\n    instance.UI.ThumbnailsPanel.selectPages(pageNumbersToSelect);\n  });\n */\nconst selectPages = (store) => (pageNumbers) => {\n  const multiSelectEnable = selectors.isThumbnailMultiselectEnabled(store.getState());\n\n  if (!multiSelectEnable) {\n    console.warn('Thumbnail multiselect is not enabled');\n    return;\n  }\n\n  if (!pageNumbers || !Array.isArray(pageNumbers)) {\n    console.warn('Invalid input, \\'ThumbnailsPanel.selectPages\\' expect an array of numbers');\n    return;\n  }\n\n  const selectedIndex = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  const selectedPages = selectedIndex.map((index) => index + 1);\n\n  const pageCount = core.getTotalPages();\n  const alreadySelected = pageNumbers.filter((pageNumber) => selectedPages.includes(pageNumber));\n  if (alreadySelected.length) {\n    console.warn(`The following pages were already selected: ${alreadySelected.join(', ')}`);\n  }\n\n  const outOfRangePages = pageNumbers.filter((pageNumber) => pageNumber < 1 || pageNumber > pageCount);\n  if (outOfRangePages.length) {\n    console.warn(`The following pages are out of range: ${outOfRangePages.join(', ')}`);\n  }\n\n  let pagesToSelect = pageNumbers.filter(\n    (pageNumber) => pageNumber >= 1 && pageNumber <= pageCount && !selectedPages.includes(pageNumber) && !isNaN(pageNumber),\n  );\n\n  pagesToSelect = pagesToSelect.filter(function(page, index, self) {\n    return self.indexOf(page) === index;\n  });\n\n  store.dispatch(actions.setSelectedPageThumbnails([...selectedIndex, ...pagesToSelect.map((page) => page - 1)]));\n};\n\n/**\n * Unselect selected thumbnails\n * @method UI.ThumbnailsPanel.unselectPages\n * @param {Array<number>} pageNumbers array of page numbers to unselect\n * @example\n WebViewer(...)\n .then(function(instance) {\n    const pageNumbersToUnselect = [1, 2];\n    instance.UI.ThumbnailsPanel.unselectPages(pageNumbersToUnselect);\n  });\n */\nconst unselectPages = (store) => (pageNumbersToDeselect) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([pageNumbersToDeselect], [TYPES.ARRAY(TYPES.NUMBER)], 'UI.ThumbnailsPanel.unselectPages');\n  const indexesToDeselect = pageNumbersToDeselect.map((pageNumber) => pageNumber - 1);\n  const selectedIndexes = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  store.dispatch(actions.setSelectedPageThumbnails(\n    selectedIndexes.filter((index) => !indexesToDeselect.includes(index))\n  ));\n};\n\n/**\n * Get the currently selected pages\n * @method UI.ThumbnailsPanel.getSelectedPageNumbers\n * @return {Array<number>} an array of select page numbers\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.getSelectedPageNumbers();\n  });\n */\nconst getSelectedPageNumbers = (store) => () => selectors.getSelectedThumbnailPageIndexes(store.getState()).map((pageIndex) => pageIndex + 1);\n\n/**\n * Sets thumbnail selection mode.\n * @method UI.ThumbnailsPanel.setThumbnailSelectionMode\n * @param {string} thumbnailSelectionMode Thumbnail selection mode to set\n * @param {string} thumbnailSelectionMode.thumbnail Set selection mode to use entire thumbnail to select a page\n * @param {string} thumbnailSelectionMode.checkbox (default) Set selection mode to use only checkbox to select a page\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.setThumbnailSelectionMode('thumbnail');\n  });\n */\n\nconst setThumbnailSelectionMode = (store) => (thumbnailSelectionMode) => {\n  if (Object.values(thumbnailSelectionModes).indexOf(thumbnailSelectionMode) > -1) {\n    store.dispatch(actions.setThumbnailSelectionMode(thumbnailSelectionMode));\n  } else {\n    console.error(`Thumbnail Selection Mode must be one of: \"${Object.values(thumbnailSelectionModes).join('\", \"')}\"`);\n  }\n};\n\nexport {\n  enableMultiselect,\n  disableMultiselect,\n  enableMultiSelect,\n  disableMultiSelect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n};\n","/**\n * Toggles Reader mode of the viewer.\n * Note that Reader mode only works with fullAPI enabled.\n * @method UI.toggleReaderMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleReaderMode();\n  });\n */\n\nimport { enterReaderMode, exitReaderMode } from 'helpers/readerMode';\nimport core from 'core';\nimport selectors from 'selectors';\n\nlet previousDisplayMode;\n\nexport default (store) => () => {\n  const isInReaderMode = selectors.isReaderMode(store.getState());\n  if (isInReaderMode) {\n    exitReaderMode(store);\n    if (previousDisplayMode) {\n      setTimeout(() => {\n        core.setDisplayMode(previousDisplayMode);\n        previousDisplayMode = undefined;\n      });\n    }\n  } else {\n    previousDisplayMode = core.getDisplayMode();\n    enterReaderMode(store);\n  }\n};\n","/**\n * Toggles the visibility of the element to be visible/hidden. Note that toggleElementVisibility works only for panel/overlay/popup/modal elements.\n * @method UI.toggleElementVisibility\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleElementVisibility('leftPanel'); // open LeftPanel if it is closed, or vice versa\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.toggleElement(dataElement));\n};\n","import actions from 'actions';\n\n/**\n * Set the read/unread state of an annotation. The default state of annotations is read.\n * @method UI.setAnnotationReadState\n * @param {object} options\n * @param {boolean} options.isRead whether setting the annotation to read state; false for setting it as unread.\n * @param {string} options.annotationId Id of the annotation to be set.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationReadState({ isRead: true, annotationId: 'test-annotation-id' });\n  });\n */\nexport default (store) => ({ isRead, annotationId }) => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  store.dispatch(actions.setAnnotationReadState({ isRead, annotationId }));\n};\n","import selectors from 'selectors';\nimport core from 'core';\n\n/**\n * Return the read/unread state of an annotation. True for read, false for unread.\n * @method UI.getAnnotationReadState\n * @param {string} annotationId Id of the annotation.\n * @return {boolean} Whether the annotation is read.\n * @throws Will throw an error if the annotation with the given ID does not exist.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const isAnnotationRead = instance.UI.getAnnotationReadState('test-annotation-id');\n */\nexport default (store) => (annotationId) => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  const annotation = core.getAnnotationManager().getAnnotationById(annotationId);\n  if (!annotation) {\n    throw new Error(`Annotation with ID ${annotationId} not found.`);\n  }\n  const unreadAnnotationIdSet = selectors.getUnreadAnnotationIdSet(store.getState());\n  return unreadAnnotationIdSet.has(annotationId);\n};\n","import actions from 'actions';\n\n/**\n * Enable clearing search results when user closes search panel. When this is enabled and user closes search panel\n * all search results are cleared.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.enableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    // Will not affect on mobile devices\n    instance.UI.enableClearSearchOnPanelClose();\n  });\n */\nconst enableClearSearchOnPanelCloseClosure = (store) => () => {\n  store.dispatch(actions.setClearSearchOnPanelClose(true));\n};\n\nexport default enableClearSearchOnPanelCloseClosure;\n","import actions from 'actions';\n\n/**\n * Disable clearing search results when user closes search panel. When disabled, search results are kept even if user\n * closes and reopens search panel.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.disableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableClearSearchOnPanelClose();\n  });\n */\nconst disableClearSearchOnPanelCloseClosure = (store) => () => {\n  store.dispatch(actions.setClearSearchOnPanelClose(false));\n};\n\nexport default disableClearSearchOnPanelCloseClosure;\n","/**\n * Always keep the Page Navigation Component on screen. Default behaviour is to fade it after certain period of inactivity.\n * @method UI.disableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Keeps the page navigation component on screen all the time\n    instance.UI.disableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  return store.dispatch(actions.disableFadePageNavigationComponent());\n};","/**\n * Fade the Page Navigation Component after it has not been interacted with. Reappears whenever the document is scrolled.\n * @method UI.enableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Sets behaviour to fade the page navigation component.\n    // enabled by default\n    instance.UI.enableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  return store.dispatch(actions.enableFadePageNavigationComponent());\n};","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.disablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disablePageDeletionConfirmationModal();\n  });\n */\nconst disablePageDeletionConfirmationModal = (store) => () => {\n  store.dispatch(actions.disablePageDeletionConfirmationModal());\n};\n\nexport default disablePageDeletionConfirmationModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.enablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enablePageDeletionConfirmationModal();\n  });\n */\nfunction enablePageDeletionConfirmationModal(store) {\n  return function enablePageDeletionConfirmationModal() {\n    store.dispatch(actions.enablePageDeletionConfirmationModal());\n  };\n}\n\nexport default enablePageDeletionConfirmationModal;\n","/**\n * Add an event listener for the given WebViewer UI event.\n * @method UI.addEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Callback function that will be invoked when the event is dispatched.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (eventName, listener) => {\n  getInstanceNode().addEventListener(eventName, listener);\n};\n","/**\n * \"Remove an event listener for the given WebViewer UI event.\n * @method UI.removeEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Event handler function that should no longer be bound to the event.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const listener = e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n\n      instance.UI.removeEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n    };\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n  });\n */\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (eventName, listener) => {\n  getInstanceNode().removeEventListener(eventName, listener);\n};\n","import actions from 'actions';\n/**\n * Enables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will not be applied.\n * @method UI.enableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(true));\n};\n","import actions from 'actions';\n/**\n * Disables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will be applied.\n * @method UI.disableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(false));\n};\n","import selectors from 'selectors';\n/**\n * Returns a boolean to denote if the UI is in desktop only mode.\n * @method UI.isInDesktopOnlyMode\n * @return {boolean} boolean to denote if the UI is in desktop only mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isInDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  return selectors.isInDesktopOnlyMode(store.getState());\n};\n","/**\n * An  instance of PageManipulationOverlay that can be used to edit the items included in the overlay\n * @name UI.pageManipulationOverlay\n * @implements {UI.PageManipulationOverlay}\n * @type {UI.PageManipulationOverlay}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.pageManipulationOverlay.someAPI();\n  })\n */\n\n/**\n * A class which contains PageManipulationOverlay APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the PageManipulationOverlay, use {@link UI.disableElements disableElements}.\n * @interface UI.PageManipulationOverlay\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(PageManipulationOverlayAPI).initialize(store);\n\nconst PageManipulationOverlayAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * @typedef UI.PageManipulationOverlay.PageManipulationSection\n   * @type {object}\n   * @property {string} type Required type of 'customPageOperation'\n   * @property {string} header Header to be displayed in the UI for this section\n   * @property {string} dataElement Unique dataElement\n   * @property {UI.PageManipulationOverlay.PageOperation[]} operations the operations that will be available under this section\n   */\n  /**\n   * @typedef UI.PageManipulationOverlay.PageOperation\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to imge to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n  /**\n   * Adds an array of page manipulation operations to the default operations. If passed a dataElement parameter, it will\n   * add the new operations after this element. Otherwise, they will be appended to the start of the existing list\n   * of operations.\n   * @method UI.PageManipulationOverlay#add\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection Array of sections to be added, each with its individual operations. See example below.\n   * @param {('pageRotationControls' | 'pageManipulationControls')} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.PageManipulationOverlay#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.PageManipulationOverlay} The instance itself\n   * @example\n   * // Each object in the operations array shall consist of the following:\n    {\n      type: 'customPageOperation', // Required type of 'customPageOperation'\n      header: 'Custom options', // Header to be displayed in the UI\n      dataElement: 'customPageOperations', // Unique dataElement\n      // Each new section can have one more more operations.\n      // The onClick handler for each operation gets passed an array of the currently selected\n      // thumbnail page numbers.\n      operations: [\n        {\n          title: 'Alert me of selected thumbnail page numbers',\n          img: '/path-to-image',\n          onClick: (selectedPageNumbers) => {\n            alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n          },\n          dataElement: 'customPageOperationButton', // Each operation must have a dataElement\n        }\n      ]\n    }\n\n    // Additionally, to add dividers you can include this in the operations array:\n    { type: 'divider' }\n    // Example:\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.add([\n          {\n            type: 'customPageOperation',\n            header: 'Custom options',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Alert me',\n                img: '/path-to-image',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'customPageOperationButton',\n              }\n            ]\n          },\n          { type: 'divider' }\n        ]);\n      });\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n\n    this.store.dispatch(actions.setPageManipulationOverlayItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the operations in the PageManipulationOverlay, essentially replacing them with\n   * a new list of operations.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.PageManipulationOverlay#update\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection The list of PageManipulationSections that will be rendered in the PageManipulation overlay. See the add documentation for an example.\n   * @returns {UI.PageManipulationOverlay} The instance of itself\n   * @example\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.update([\n          {\n            type: 'customPageOperation',\n            header: 'Print Operations',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Print page',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'printThumbnailPage',\n              }\n            ]\n          },\n          { type: 'divider' },\n          {\n            type: 'customPageOperation',\n            header: 'Alert Operations',\n            dataElement: 'customPageOperations-2',\n            operations: [\n              {\n                title: 'Alert me',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'alertPage',\n              }\n            ]\n          }\n        ]);\n      });\n   */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setPageManipulationOverlayItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the PageManipulationOverlay.\n   * @method UI.PageManipulationOverlay#getItems\n   * @returns {Array.<UI.PageManipulationOverlay.PageManipulationSection>} Current items in the PageManipulationOverlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPageManipulationOverlayItems(this.store.getState())];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getPageManipulationOverlayItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  /**\n   * Disables the Page Manipulation Overlay opening through right-click.\n   * @method UI.PageManipulationOverlay#disableOpeningByRightClick\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.disableOpeningByRightClick();\n  });\n   */\n  disableOpeningByRightClick() {\n    this.store.dispatch(actions.setPageManipulationOverlayOpenByRightClick(false));\n  },\n  /**\n   * Enables the Page Manipulation Overlay opening through right-click.\n   * @method UI.PageManipulationOverlay#enableOpeningByRightClick\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.enableOpeningByRightClick();\n  });\n   */\n  enableOpeningByRightClick() {\n    this.store.dispatch(actions.setPageManipulationOverlayOpenByRightClick(true));\n  }\n};\n","/**\n * An instance of MultiPageManipulationControls that can be used to edit the items included in the overlay\n * @name UI.multiPageManipulationControls\n * @type {UI.MultiPageManipulationControls}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.multiPageManipulationControls.someAPI();\n  })\n */\n\n/**\n * A class which contains MultiPageManipulationControls APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the MultiPageManipulationControls, use {@link UI.disableElements disableElements}.\n * @class\n * @name UI.MultiPageManipulationControls\n */\n/**\n * @typedef UI.MultiPageManipulationControls.PageManipulationSection\n * @type {object}\n * @property {string} type Required type of 'customPageOperation' or 'divider'.\n * @property {string} header Header to be displayed in the UI for this section\n * @property {string} dataElement Unique dataElement\n * @property {UI.MultiPageManipulationControls.PageOperation[]} operations the operations that will be available under this section\n */\n/**\n * @typedef UI.MultiPageManipulationControls.PageOperation\n * @type {object}\n * @property {string} title Title to be displayed for the operation\n * @property {string} img Path to image to be used as an icon for the operation\n * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n * @property {string} dataElement Unique dataElement for this operation\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(MultiPageManipulationControls).initialize(store);\n\nconst MultiPageManipulationControls = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Adds an array of page manipulation operations to the default operations. If passed a dataElement parameter, it will\n   * add the new operations after this element. Otherwise, they will be appended to the start of the existing list\n   * of operations.\n   * @method UI.MultiPageManipulationControls#add\n   * @param {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} pageManipulationSections Array of sections to be added, each with its individual operations. See example below.\n   * @param {('leftPanelPageTabsRotate' | 'leftPanelPageTabsOperations' | 'leftPanelPageTabsMore')} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added to the left.\n   * You can call {@link UI.MultiPageManipulationControls#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.MultiPageManipulationControls} The instance itself\n   * @example\n   // An example of the operation object is shown below.\n   // Additionally, to add dividers you can include this in the operations array:\n    { type: 'divider' }\n    // Example:\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.multiPageManipulationControls.add([\n          {\n            type: 'customPageOperation',\n            header: 'Custom options',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Alert me',\n                img: '/path-to-image',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'customPageOperationButton',\n              }\n            ]\n          },\n          { type: 'divider' }\n        ]);\n      });\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n    const indexSmall = this._getIndexByDataElementSmall(dataElementToInsertAfter);\n    const itemsSmall = this.getItemsSmall();\n    const indexLarge = this._getIndexByDataElementLarge(dataElementToInsertAfter);\n    const itemsLarge = this.getItemsLarge();\n\n    items.splice(index + 1, 0, ...operations);\n    itemsSmall.splice(indexSmall + 1, 0, ...operations);\n    itemsLarge.splice(indexLarge + 1, 0, ...operations);\n\n    this.store.dispatch(actions.setMultiPageManipulationControlsItems(items));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsSmall(itemsSmall));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsLarge(itemsLarge));\n\n    return this;\n  },\n\n  /**\n   * Update all the operations in the MultiPageManipulationControls, essentially replacing them with\n   * a new list of operations.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.MultiPageManipulationControls#update\n   * @param {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} pageManipulationSections The list of PageManipulationSections that will be rendered in the PageManipulation overlay. See the add documentation for an example.\n   * @returns {UI.MultiPageManipulationControls} The instance of itself\n   * @example\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.multiPageManipulationControls.update([\n          {\n            type: 'customPageOperation',\n            header: 'Print Operations',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Print page',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'printThumbnailPage',\n              }\n            ]\n          },\n          { type: 'divider' },\n          {\n            type: 'customPageOperation',\n            header: 'Alert Operations',\n            dataElement: 'customPageOperations-2',\n            operations: [\n              {\n                title: 'Alert me',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'alertPage',\n              }\n            ]\n          }\n        ]);\n      });\n   */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setMultiPageManipulationControlsItems(operations));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsSmall(operations));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsLarge(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the MultiPageManipulationControls.\n   * @method UI.MultiPageManipulationControls#getItems\n   * @returns {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} Current items in the MultiPageManipulationControls.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.multiPageManipulationControls.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getMultiPageManipulationControlsItems(this.store.getState())];\n  },\n  getItemsSmall() {\n    return [...selectors.getMultiPageManipulationControlsItemsSmall(this.store.getState())];\n  },\n  getItemsLarge() {\n    return [...selectors.getMultiPageManipulationControlsItemsLarge(this.store.getState())];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  _getIndexByDataElementSmall(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItemsSmall(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  _getIndexByDataElementLarge(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItemsLarge(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};\n","/**\n * An  instance of ThumbnailControlMenu that can be used to edit the items included in the thumbnail menu overlay\n * @name UI.thumbnailControlMenu\n * @implements {UI.ThumbnailControlMenu}\n * @type {UI.ThumbnailControlMenu}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.thumbnailControlMenu.someAPI();\n  })\n */\n/**\n * A class which contains ThumbnailControlMenu APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the ThumbnailControlMenu, use {@link UI.disableElements disableElements}.\n * @interface UI.ThumbnailControlMenu\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(ThumbnailControlMenuAPI).initialize(store);\n\nconst ThumbnailControlMenuAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n\n  /**\n   * @typedef UI.ThumbnailControlMenu.MenuItem\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to image to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n\n  /**\n   * Adds an array of thumbnail menu buttons to the default menu. If passed a dataElement parameter, it will\n   * add the new menu buttons after this element. Otherwise, they will be appended to the start of the existing list\n   * of buttons.\n   * @method UI.ThumbnailControlMenu#add\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem Array of buttons to be added, each with its individual operations. See example below.\n   * @param {('thumbRotateClockwise' | 'thumbDelete' )} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.ThumbnailControlMenu#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.ThumbnailControlMenu} The instance itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.add([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n    this.store.dispatch(actions.setThumbnailControlMenuItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the buttons in the ThumbnailControlMenu, essentially replacing them with\n   * a new list of buttons.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.ThumbnailControlMenu#update\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem The list of MenuItems that will be rendered in the thumbnail menu overlay. See the add documentation for an example.\n   * @returns {UI.ThumbnailControlMenu} The instance of itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.update([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n  */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setThumbnailControlMenuItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the ThumbnailControlMenu.\n   * @method UI.ThumbnailControlMenu#getItems\n   * @returns {Array.<UI.ThumbnailControlMenu.MenuItem>} Current items in the ThumbnailControlMenu.\n   * @example\n    WebViewer(...)\n      .then(function(instance) {\n        instance.UI.ThumbnailControlMenu.getItems();\n      });\n   */\n  getItems() {\n    return [...selectors.getThumbnailControlMenuItems(this.store.getState())];\n  },\n\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getThumbnailControlMenuItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * Gets the watermark options created in print modal.\n * @method UI.getWatermarkModalOptions\n * @return {object} Returns the watermark options created in print modal.\n */\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getWatermarkModalOptions(store.getState());","import actions from 'actions';\n\n/**\n * Enable the ability to submit notes by only pressing Enter. Default mode is Ctrl/Cmd + Enter.\n * @method UI.enableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNoteSubmissionWithEnter();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(true));\n};","/**\n * Returns whether Webviewer will use/not use embedded printing.\n * Will return false if the browser doesn't support embedded printing or if UI.useEmbeddedPrint is set to false.\n * @method UI.willUseEmbeddedPrinting\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.willUseEmbeddedPrinting(); // Returns true/false if embedded printing is supported and enabled\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => !!selectors.isEmbedPrintSupported(store.getState());","/**\n * Reloads the Bookmark Outline in the WebViewer UI.\n * @method UI.reloadOutline\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { documentViewer } = instance.Core;\n\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', async () => {\n      const doc = documentViewer.getDocument();\n      const pdfDoc = await doc.getPDFDoc();\n      const firstBookmark = await doc.getFirstBookmark();\n\n      const bookmarkToDelete = await firstBookmark.find('bookmark-to-delete');\n      if (bookmarkToDelete !== null && await bookmarkToDelete.isValid()) {\n        await bookmarkToDelete.delete();\n        instance.UI.reloadOutline();\n      }\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => () => {\n  core.getOutlines((outlines) => {\n    store.dispatch(actions.setOutlines(outlines));\n  });\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * A namespace which contains Font APIs for the UI. <br/><br/>\n * @namespace Fonts\n * @memberof UI\n * @example\n * WebViewer(...)\n * .then(function (instance) {\n *   instance.UI.Fonts.getFonts();\n * });\n */\nexport default (store) => Object.create(FontsAPI).initialize(store);\n\nconst FontsAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Return the currently available fonts in the UI to be used for Annotations.\n   * @method UI.Fonts.getAnnotationFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.getAnnotationFonts();\n  });\n   */\n  getAnnotationFonts() {\n    return [...selectors.getFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Annotation font pickers.\n   * @method UI.Fonts.addAnnotationFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addAnnotationFont(\"Arial\");\n  });\n   */\n  addAnnotationFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Remove a font from the UI's Annotation font pickers.\n   * @method UI.Fonts.removeAnnotationFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeAnnotationFont(\"Arial\");\n  });\n   */\n  removeAnnotationFont(font) {\n    const fonts = selectors.getFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Set the fonts available in the UI's Annotation font pickers.\n   * @method UI.Fonts.setAnnotationFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setAnnotationFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setAnnotationFonts(fonts) {\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Returns the currently available fonts to be used when typing a signature in the signature dialog\n   * @method UI.Fonts.getSignatureFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   */\n  getSignatureFonts() {\n    return [...selectors.getSignatureFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Signature font pickers.\n   * @method UI.Fonts.addSignatureFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addSignatureFont(\"Arial\");\n  });\n   */\n  addSignatureFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Remove a font from the UI's Signature font pickers.\n   * @method UI.Fonts.removeSignatureFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeSignatureFont(\"Arial\");\n  });\n   */\n  removeSignatureFont(font) {\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Set the fonts available in the UI's Signature font pickers.\n   * @method UI.Fonts.setSignatureFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setSignatureFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setSignatureFonts(fonts) {\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n};","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * An instance of TabManager that can be used to edit the open document Tabs **Only Multi-Tab Mode**.\n * @namespace TabManager\n * @memberof UI\n * @example\n WebViewer(...)\n .then(function (instance) {\n    instance.UI.TabManager.setActiveTab(0);\n  })\n */\n\nexport default (store) => Object.create(TabManagerAPI).initialize(store);\n\nconst TabManagerAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Set the currently open tab in the UI\n   * @method UI.TabManager.setActiveTab\n   * @param {number} tabId The tab id to set as the current tab\n   * @param {boolean} [saveCurrentActiveTabState] Whether to save the current tab annotations, scroll position, and zoom level before switching to the new tab (default: true)\n   * @returns {Promise<void>} Resolves when the tab is loaded\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.setActiveTab(0, false); // Set to tab id 0 discarding current tab state\n   * });\n   */\n  async setActiveTab(tabId, saveCurrentActiveTabState = true) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    await tabManager.setActiveTab(tabId, saveCurrentActiveTabState);\n  },\n  /**\n   * Delete a tab by id in the UI\n   * @method UI.TabManager.deleteTab\n   * @param {number} tabId The tab id to be deleted from the tab header\n   * @returns {void}\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.deleteTab(0); // Delete tab id 0\n   * });\n   */\n  deleteTab(tabId) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    tabManager.deleteTab(tabId);\n  },\n\n  /**\n   * Add a new tab to the UI\n   * @method UI.TabManager.addTab\n   * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} src The source of the tab to be added (e.g. a URL, a blob, ArrayBuffer, or a File)\n   * @param {UI.loadDocumentOptions} [options] The options for the tab to be added\n   * @param {boolean} [options.setActive] Whether to set the new tab as active immediately after adding it (default: true)\n   * @param {boolean} [options.saveCurrentActiveTabState] Whether to save the current tab annotations, scroll position, and zoom level before adding the new tab (only used when setActive=true) (default: true)\n   * @param {string} [options.extension] The extension of the file. If file is a blob/file object or a URL without an extension then this is necessary so that WebViewer knows what type of file to load.\n   * @param {string} [options.filename] Filename of the document, which is used when downloading the PDF.\n   * @param {object} [options.customHeaders] An object of custom HTTP headers to use when retrieving the document from the specified url.\n   * @param {object} [options.webViewerServerCustomQueryParameters] An object of custom query parameters to be appended to every WebViewer Server request.\n   * @param {string} [options.documentId] Unique id of the document.\n   * @param {boolean} [options.withCredentials] Whether or not cross-site requests should be made using credentials.\n   * @param {string} [options.cacheKey] A key that will be used for caching the document on WebViewer Server.\n   * @param {object} [options.officeOptions] An object that contains the options for an Office document.\n   * @param {object} [options.rasterizerOptions] An object that contains the rasterizer options for WebViewer Server.\n   * @param {Core.TemplateData} [options.officeOptions.templateValues] If set, will perform template replacement with the data specified by this parameter.\n   * @param {Core.TemplateOptions} [options.officeOptions.templateOptions] If set, it will interpret the office document as a template document and compile all of the template tags in the document using the provided options.\n   * @param {boolean} [options.officeOptions.doTemplatePrep] If set, it will interpret the office document as a template document and compile all of the template tags in the document.\n   * @param {boolean} [options.officeOptions.disableBrowserFontSubstitution] By default, office viewing takes a lightweight approach to font substitution, allowing the browser to select fonts when they are not embedded in the document itself.\n   * While this means that WebViewer has access to all the fonts on the user's system, it also means that an office document may have a different \"look\" on different systems (depending on the fonts available) and when it is converted to PDF (as the PDF conversion routine cannot obtain low-level access to user fonts, for security reasons).\n   * disableBrowserFontSubstitution prevents this browser substitution, forcing the WebViewer backend to handle all fonts. This means that viewing and conversion to PDF will be 100% consistent from system-to-system, at the expense of a slightly slower initial viewing time and higher bandwidth usage.\n   * Using https://docs.apryse.com/documentation/web/faq/self-serve-substitute-fonts/ along with this option allows you to fully customize the substitution behaviour for all office files.\n   * @param {object} [options.officeOptions.formatOptions] An object that contains formatting options for an Office document. Same options as allowed here {@link Core.PDFNet.Convert.OfficeToPDFOptions}.\n   * @param {boolean} [options.officeOptions.formatOptions.hideTotalNumberOfPages] If true will hide total number of pages from page number labels (i.e, Page 1, Page 2, vs Page 1 of 2, Page 2 of 2)\n   * @param {boolean} [options.officeOptions.formatOptions.applyPageBreaksToSheet] If true will split Excel worksheets into pages so that the output resembles print output.\n   * @param {boolean} [options.officeOptions.formatOptions.displayChangeTracking] If true will display office change tracking markup present in the document (i.e, red strikethrough of deleted content and underlining of new content). Otherwise displays the resolved document content, with no markup. Defaults to true.\n   * @param {boolean} [officeOptions.formatOptions.displayHiddenText] If true will display hidden text in document. Otherwise hidden text will not be shown. Defaults to false.\n   * @param {number} [options.officeOptions.formatOptions.excelDefaultCellBorderWidth] Cell border width for table cells that would normally be drawn with no border. In units of points. Can be used to achieve a similar effect to the \"show gridlines\" display option within Microsoft Excel.\n   * @param {number} [options.officeOptions.formatOptions.excelMaxAllowedCellCount] An exception will be thrown if the number of cells in an Excel document is above the value. Used for early termination of resource intensive documents. Setting this value to 250000 will allow the vast majority of Excel documents to convert without issue, while keeping RAM usage to a reasonable level. By default there is no limit to the number of allowed cells.\n   * @param {string} [options.officeOptions.formatOptions.locale] Sets the value for Locale in the options object ISO 639-1 code of the current system locale. For example: 'en-US', 'ar-SA', 'de-DE', etc.\n   * @param {boolean} [options.enableOfficeEditing] If true, will load docx files with editing capabilities.\n   * @param {string} [options.password] A string that will be used to as the password to load a password protected document.\n   * @param {function} [options.onError] - A callback function that will be called when error occurs in the process of loading a document. The function signature is `function(e) {}`\n   * @param {object} [options.xodOptions] - An object that contains the options for a XOD document.\n   * @param {boolean} [options.xoddecrypt] - Function to be called to decrypt a part of the XOD file. For default XOD AES encryption pass Core.Encryption.decrypt.\n   * @param {boolean} [options.xoddecryptOptions] -  An object with options for the decryption e.g. {p: \"pass\", type: \"aes\"} where is p is the password.\n   * @param {boolean} [options.xodstreaming] - A boolean indicating whether to use http or streaming PartRetriever, it is recommended to keep streaming false for better performance. https://docs.apryse.com/documentation/web/guides/streaming-option/.\n   * @param {boolean} [options.xodazureWorkaround] - Whether or not to workaround the issue of Azure not accepting range requests of a certain type. Enabling the workaround will add an extra HTTP request of overhead but will still allow documents to be loaded from other locations.\n   * @param {boolean} [options.xodstartOffline] - Whether to start loading the document in offline mode or not. This can be set to true if the document had previously been saved to an offline database using WebViewer APIs. You'll need to use this option to load from a completely offline state.\n   * @returns {Promise<number>} Resolves to the tab id of the newly added tab\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   // Adding a new tab with the URL http://www.example.com\n   *   instance.UI.TabManager.addTab(\n   *      'http://www.example.com/pdf',\n   *      {\n   *        extension: \"pdf\",\n   *        filename: 'Example',\n   *        withCredentials: true,\n   *        setActive: true,\n   *        saveCurrentActiveTabState: true\n   *      }\n   *    );\n   * });\n   */\n  async addTab(src, options) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.addTab(src, options);\n  },\n  /**\n   * Get the currently active tab id\n   * @method UI.TabManager.getActiveTab\n   * @returns {object} The current tab with the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getActiveTab() {\n    const state = this.store.getState();\n    const activeTab = selectors.getActiveTab(state);\n    const tabs = selectors.getTabs(state);\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n    return {\n      id: currentTab.id,\n      options: currentTab.options,\n      src: currentTab.src,\n    };\n  },\n  /**\n   * Get all the tabs from the UI\n   * @method UI.TabManager.getAllTabs\n   * @returns {Array<Object>} Array of tab objects containing the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getAllTabs() {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.map((tab) => ({\n      id: tab.id,\n      options: tab.options,\n      src: tab.src,\n    }));\n  },\n  /**\n   * Disable the warning when deleting a tab in multi-tab mode\n   * @method UI.TabManager.disableDeleteTabWarning\n   * @example\n   * WebViewer(...)\n   *   .then(function (instance) {\n   *     instance.UI.TabManager.disableDeleteTabWarning();\n   *   });\n   */\n  disableDeleteTabWarning() {\n    this.store.dispatch(actions.disableDeleteTabWarning());\n  },\n};\n","import Languages from 'constants/languages';\n\n/**\n * Returns all available languages as a list.\n * @method UI.getAvailableLanguages\n * @return {Array<string>} All available languages\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getAvailableLanguages());\n  });\n */\nexport default () => Languages.map((language) => language[0]);\n","/**\n * Sets a specific regex to be used when searching for one of the supported patterns in the redaction search panel\n * @method UI.replaceRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns} searchPattern A search pattern for which the regex should be replaced\n *\n * @param {string} regex The regex to be used for the search pattern\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.replaceRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS, /\\w+@\\w+\\.\\w+/);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (searchPattern, regex) => {\n  store.dispatch(actions.replaceRedactionSearchPattern(searchPattern, regex));\n};\n","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when applying a crop to a page\n *\n * @method UI.disableApplyCropWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableApplyCropWarningModal();\n  });\n */\nconst disableApplyCropWarningModal = (store) => () => {\n  store.dispatch(actions.disableApplyCropWarningModal());\n};\n\nexport default disableApplyCropWarningModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when applying a crop to a page\n *\n * @method UI.enableApplyCropWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enableApplyCropWarningModal();\n  });\n */\nconst enableApplyCropWarningModal = (store) => () => {\n  store.dispatch(actions.enableApplyCropWarningModal());\n};\n\nexport default enableApplyCropWarningModal;\n","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when snipping a page\n *\n * @method UI.disableApplySnippingWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableApplySnippingWarningModal();\n  });\n */\nconst disableApplySnippingWarningModal = (store) => () => {\n  store.dispatch(actions.disableApplySnippingWarningModal());\n};\n\nexport default disableApplySnippingWarningModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when snipping a page\n *\n * @method UI.enableApplySnippingWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enableApplySnippingWarningModal();\n  });\n */\nconst enableApplySnippingWarningModal = (store) => () => {\n  store.dispatch(actions.enableApplySnippingWarningModal());\n};\n\nexport default enableApplySnippingWarningModal;\n","/**\n * Sets preset crop dimensions to be used when selecting a preset crop in the document cropping popup\n * @method UI.setPresetCropDimensions\n * @param {string} presetName The name of a current preset or the name to give to a new preset\n * @param {object} newPreset A set of dimensions to use for a preset crop\n * @param {number} newPreset.yOffset The amount of inches to move the cropped area from the top of the page\n * @param {number} newPreset.height The height of the area to crop the page to in inches\n * @param {number} newPreset.xOffset The amount of inches to move the cropped area from the left of the page\n * @param {number} newPreset.width The width of the area to crop the page to in inches\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPresetCropDimensions('Letter', {'yOffset': 0, 'height': 11, 'xOffset': 0, 'width': 8.5});\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst dimensions = ['yOffset', 'height', 'xOffset', 'width'];\n\nexport default (store) => (presetName, newPreset) => {\n  if (!presetName || typeof presetName !== 'string' || presetName.trim().length < 1) {\n    return console.error('presetName must be a string of length 1 or more');\n  }\n  if (!newPreset || typeof newPreset !== 'object') {\n    return console.error('newPreset must be an object with \"yOffset\", \"height\", \"xOffset\", and \"width\" properties');\n  }\n\n  for (const dimension of dimensions) {\n    if (!(dimension in newPreset)) {\n      return console.error(`${dimension} must be included in newPreset`);\n    }\n    if (typeof newPreset[dimension] !== 'number' || newPreset[dimension] < 0) {\n      return console.error(`${dimension} must be a number greater than or equal to 0`);\n    }\n  }\n\n  const presets = selectors.getPresetCropDimensions(store.getState());\n  presets[presetName] = newPreset;\n\n  store.dispatch(actions.setPresetCropDimensions(presets));\n};\n","/**\n * Sets preset page dimensions to be used when selecting a page size in the Insert Page Modal\n * @method UI.setPresetNewPageDimensions\n * @param {string} presetName The name of a current preset or the name to give to a new preset\n * @param {object} newPreset A set of dimensions to use for a preset new page\n * @param {number} newPreset.height The height of the new page in inches\n * @param {number} newPreset.width The width of the new page in inches\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPresetNewPageDimensions('Letter', {'height': 11, 'width': 8.5});\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst dimensions = ['height', 'width'];\n\nexport default (store) => (presetName, newPreset) => {\n  if (!presetName || typeof presetName !== 'string' || presetName.trim().length < 1) {\n    return console.error('presetName must be a string of length 1 or more');\n  }\n  if (!newPreset || typeof newPreset !== 'object') {\n    return console.error('newPreset must be an object with \"height\", and \"width\" properties');\n  }\n\n  for (const dimension of dimensions) {\n    if (!(dimension in newPreset)) {\n      return console.error(`${dimension} must be included in newPreset`);\n    }\n    if (typeof newPreset[dimension] !== 'number' || newPreset[dimension] < 0) {\n      return console.error(`${dimension} must be a number greater than or equal to 0`);\n    }\n  }\n\n  const presets = selectors.getPresetCropDimensions(store.getState());\n  presets[presetName] = newPreset;\n\n  store.dispatch(actions.setPresetNewPageDimensions(presets));\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * Adds a date and time format for the UI date and time dropdowns.\n * List of formats can be found here: {@link https://github.com/iamkun/dayjs/blob/v1.11.1/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.addDateTimeFormat\n * @param {object} dateTimeFormat An object containing the date and time formats with the respective keys. At least one of the date or time keys must be present.\n * @param {string} [dateTimeFormat.date] String of date format\n * @param {string} [dateTimeFormat.time] String of time format\n * @param {boolean} [dateTimeFormat.timeFirst] Boolean value to indicate if time should be before date in UI\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.addDateTimeFormat({\n        date: 'MM/DD/YYYY',\n        time: 'HH:mm:ss',\n        timeFirst: true\n      });\n  });\n */\n\nexport default (store) => (dateTimeFormat) => {\n  if (typeof dateTimeFormat !== 'object') {\n    return console.error('UI.addDateTimeFormat: dateTimeFormat must be an object');\n  }\n  let validKeyFound = false;\n  const requiredKeys = ['date', 'time'];\n  for (const param of requiredKeys) {\n    if (!dateTimeFormat[param]) {\n      dateTimeFormat[param] = '';\n    } else {\n      validKeyFound = true;\n    }\n  }\n  if (!validKeyFound) {\n    return console.error(`UI.addDateTimeFormat: dateTimeFormat must contain at least one of the following keys: ${requiredKeys.join(', ')}`);\n  }\n  store.dispatch(actions.setDateTimeFormats([\n    ...selectors.getDateTimeFormats(store.getState()),\n    dateTimeFormat,\n  ]));\n};","/**\n * Adds a new search pattern to the redaction search panel\n * @method UI.addRedactionSearchPattern\n * @param {UI.RedactionSearchPattern} searchPattern A search pattern to add to the redaction search panel\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addRedactionSearchPattern(\n      {\n        label: 'Social Security Number',\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 30 30\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        type: 'socialSecurityNumber',\n        regex: /\\b\\d{3}-?\\d{2}-?\\d{4}\\b/,\n      }\n    );\n  });\n\n// Or to search kewyord(s):\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.addRedactionSearchPattern(\n    {\n      label: 'Confidential Information',\n      type: 'confidentialInformation',\n      regex: /confidential information/i, //Regex based search for text, case insensitive\n    }\n  );\n});\n\n */\n\nimport actions from 'actions';\n\nexport default (store) => (redactionSearchPattern, regex) => {\n  store.dispatch(actions.addRedactionSearchPattern(redactionSearchPattern, regex));\n};\n\n\n/**\n* @typedef {Object} UI.RedactionSearchPattern\n* @property {string} label The label to be used for the search pattern in the UI\n* @property {string} type A string representing the type of item being searched for. For example, if searching for postal codes, this could be 'postalCode'. This is used\n* to determine which icon will be used to render the result in the search panel.\n* @property {string} [icon] The icon to be used for the search pattern in the search dropdown for the UI and the redaction panel for this type of search. Can be an inline SVG, or the name of an icon included in the WebViewer UI icon set.\n* If no icon is passed, the default icon for text searches will be used.\n* @property {RegExp} regex The regex to be used for the search pattern\n*/\n","/**\n * Removes a search pattern from the redaction search panel\n * @method UI.removeRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns | string} searchPattern A search pattern to remove from the redaction search panel. If you added a custom search pattern with {@link UI.addRedactionSearchPattern}, you must pass the type of the search pattern you added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.removeRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS);\n  });\n\n// If you added a custom search pattern for Social Security Number where the type is 'socialSecurityNumber'.\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.removeRedactionSearchPattern('socialSecurityNumber');\n});\n */\n\nimport actions from 'actions';\n\nexport default (store) => (redactionSearchPattern) => {\n  store.dispatch(actions.removeRedactionSearchPattern(redactionSearchPattern));\n};","import { getMap } from '../constants/map';\n/**\n * @typedef {string} StyleTab The style tab in the annotation style popup window. See {@link UI.AnnotationStylePopupTabs} for valid style tabs.\n */\n\n/**\n * @typedef {object} AnnotationStyleTabConfiguration\n * @property {string[]} styleTabs Indicates the available style tabs in the annotation style popup window. See {@link UI.AnnotationStylePopupTabs}.\n * @property {string} currentStyleTab The current tab in the annotation style popup window.\n */\n\n/**\n * Returns the style popup tab configurations for the specified annotation type.\n * If there was no annotation key specified, it will return the style popup tab configurations for all the annotations.\n * @method UI.getAnnotationStylePopupTabs\n * @param {string} [annotationKey] Indicate the type of an annotation, see {@link UI.AnnotationKeys}.\n * @return {AnnotationStyleTabConfiguration[]}\n  @example\n  WebViewer(...)\n    .then(function(instance) {\n        console.log(instance.UI.getAnnotationStylePopupTabs());\n      );\n    });\n */\n\nexport default (annotationKey) => {\n  const map = getMap();\n  const annotationTabs = {};\n  if (annotationKey) {\n    const targetAnnotation = map[annotationKey];\n    if (!targetAnnotation) {\n      return console.error('No such annotation exist. Please provide a valid annotation key.');\n    }\n    annotationTabs[annotationKey] = {\n      styleTabs: targetAnnotation.styleTabs,\n      currentStyleTab: targetAnnotation.currentStyleTab,\n    };\n  } else {\n    const annotationKeys = Object.keys(map);\n    annotationKeys.forEach((annotationKey) => {\n      annotationTabs[annotationKey] = {\n        styleTabs: map[annotationKey].styleTabs,\n        currentStyleTab: map[annotationKey].currentStyleTab,\n      };\n    });\n    return annotationTabs;\n  }\n  return annotationTabs;\n};","\n/**\n * Sets the available style tabs in the style popup for a specific annotation type.\n * @method UI.setAnnotationStylePopupTabs\n * @param {string} annotationKey The annotation type. See {@link UI.AnnotationKeys}.\n * @param {string[]} newAnnotationStyleTabs Indicates the available style tabs for the annotation. See {@link UI.AnnotationStylePopupTabs}.\n * @param {string} [initialTab] The initial style tab. It should be one of the elements in newAnnotationStyleTabs if passed to the API.\n  @example\n  WebViewer(...)\n    .then(function(instance) {\n      instance.UI.setAnnotationStylePopupTabs(\n        instance.UI.AnnotationKeys.FREE_TEXT,\n        [\n          instance.UI.AnnotationStylePopupTabs.TEXT_COLOR,\n          instance.UI.AnnotationStylePopupTabs.FILL_COLOR\n        ],\n        instance.UI.AnnotationStylePopupTabs.FILL_COLOR\n      );\n    });\n */\n\nimport { updateAnnotationStylePopupTabs, copyMapWithDataProperties } from '../constants/map';\nimport actions from 'actions';\n\nexport default (store) => (annotationKey, newAnnotationStyleTabs, initialTab) => {\n  const result =\n    updateAnnotationStylePopupTabs(annotationKey, newAnnotationStyleTabs, initialTab);\n  if (result === true) {\n    const newColorMap = copyMapWithDataProperties('currentStyleTab', 'iconColor');\n    store.dispatch(actions.setColorMap(newColorMap));\n  }\n};","import selectors from 'selectors';\n\nexport default (store) => () => selectors.getZoomStepFactors(store.getState());","/**\n * Set the zoom step size for zooming in/out. The API takes an array of zoomStepFactor that contains two properties:\n * step: zoom step size when zooming in/out. It could be either percentage in a string or a number, ex. 50, '50', or '50%' all indicates 50%.\n * startZoom: The zoom level that the step starts to apply. It could be either percentag in a string or a number, ex. 200, '200', or '200%' all indicates 200%.\n * @method UI.setZoomStepFactors\n * @param {Object[]} zoomStepFactors An array that contains objects of zoomStep and zoom start level. zoomStepFactors must contain at least one zoomStepFactor object that has startZoom: 0\n * @property {number|string} zoomStepFactors[].step Zoom step size as percentage in a string or a number, ex. '50', '50%', or 50 all indicates 50%.\n * @property {number|string} zoomStepFactors[].startZoom Zoom level that the zoom step size starts to apply. It could be percentage in a string or a number, ex. '200', '200%', or 200 all indicates 200%.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const documentViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomStepFactors([\n        {\n          step: '25', // indicates 25%, also accepts '25%'\n          startZoom: '0'\n        },\n        {\n          step: 50, // indicates 50%\n          startZoom: 200 // indicates the step is 50% after zoom level 200%\n        },\n      ]);\n    });\n  });\n*/\n\nimport actions from 'actions';\n\nexport default (store) => (zoomStepFactors) => {\n  if (!zoomStepFactors.length) {\n    return console.warn('zoomStepFactors should have at least one zoomStepFactor object with startZoom equals to 0.');\n  }\n  const newZoomFactorsHasInitialZoomFactor =\n    zoomStepFactors.find((stepFactor) => parseFloat(stepFactor.startZoom) === 0);\n  if (!newZoomFactorsHasInitialZoomFactor) {\n    return console.warn('zoomStepFactors should have at least one zoomStepFactor object with startZoom equals to 0.');\n  }\n  const convertedZoomStepFactors = [];\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const { step, startZoom } = zoomStepFactors[i];\n    const convertedZoomStepFactor = {};\n    const parsedStep = parseFloat(step);\n    if (isNaN(parsedStep)) {\n      return console.warn('Invalid step input.');\n    }\n    convertedZoomStepFactor.step = parsedStep;\n\n    const parsedStartZoom = parseFloat(startZoom);\n    if (isNaN(parsedStartZoom)) {\n      return console.warn('Invalid startZoom input.');\n    }\n    convertedZoomStepFactor.startZoom = parsedStartZoom;\n\n    convertedZoomStepFactors.push(convertedZoomStepFactor);\n  }\n\n  store.dispatch(actions.setZoomStepFactors(convertedZoomStepFactors));\n};","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from '../constants/dataElement';\n\n/**\n * Show bookmark icon shortcuts on the top right corner of each page for quickly adding or removing a bookmark.\n * @method UI.enableBookmarkIconShortcutVisibility\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableBookmarkIconShortcutVisibility();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setBookmarkIconShortcutVisibility(true));\n  const isBookmarkPanelEnabled = !selectors.isElementDisabled(store.getState(), DataElements.BOOKMARK_PANEL);\n  if (isBookmarkPanelEnabled) {\n    core.setBookmarkIconShortcutVisibility(true);\n  }\n};","import core from 'core';\nimport actions from 'actions';\n\n/**\n * Hide bookmark icon shortcuts on the top right corner of each page.\n * @method UI.disableBookmarkIconShortcutVisibility\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableBookmarkIconShortcutVisibility();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setBookmarkIconShortcutVisibility(false));\n  core.setBookmarkIconShortcutVisibility(false);\n};","import actions from 'actions';\n\n/**\n * Show form field indicators to help navigate or guide users through the process of form filling.\n * @method UI.showFormFieldIndicators\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showFormFieldIndicators();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.enableElement('formFieldIndicatorContainer'));\n};","import actions from 'actions';\n\n/**\n * Hide form field indicators.\n * @method UI.hideFormFieldIndicators\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.hideFormFieldIndicators();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.disableElement('formFieldIndicatorContainer'));\n};","import core from 'core';\n\n/**\n * Signs a specified signature widget with a specified signature.\n * If no signature is provided, select an available signature or start the process to create a new one, and then use it to sign the signature widget.\n * @method UI.signSignatureWidget\n * @param {Core.Annotations.SignatureWidgetAnnotation} signatureWidget The signature widget to sign.\n * @param {Core.Annotations.FreeHandAnnotation|Core.Annotations.StampAnnotation} [signature] The signature annotation to sign with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.signSignatureWidget(signatureWidget, signature);\n  });\n */\nexport default async (signatureWidget, signature) => {\n  if (signatureWidget['fieldFlags'].get('ReadOnly')) {\n    throw new Error('Cannot sign READ ONLY signature widget');\n  }\n\n  const annotationManager = core.getAnnotationManager();\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n\n  const handleSignatureReady = (currentSignature) => {\n    signatureWidget.sign(currentSignature);\n    signatureTool.removeEventListener('signatureReady.sign');\n  };\n\n  signatureTool\n    .removeEventListener('signatureReady.sign')\n    .addEventListener('signatureReady.sign', handleSignatureReady);\n\n  if (signatureWidget && !signatureWidget.getAssociatedSignatureAnnotation()) {\n    signatureTool.location = {\n      x: signatureWidget.getX(),\n      y: signatureWidget.getY(),\n      pageNumber: signatureWidget.PageNumber,\n    };\n  } else {\n    return;\n  }\n\n  if (signature) {\n    await signatureTool.setSignature(\n      annotationManager.getAnnotationCopy(signature)\n    );\n    await signatureTool.addSignature();\n  } else {\n    signatureTool.trigger(\n      'locationSelected',\n      {\n        pageNumber: signatureWidget.PageNumber,\n        x: signatureWidget.X,\n        y: signatureWidget.Y,\n      },\n      signatureWidget\n    );\n  }\n};","/**\n * @ignore\n * Adds new custom Header(s) to the Header list\n * @method UI.CustomHeader.addModularHeaders\n * @property {array} headerList The list of headers to be added on the application\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top'\n    });\n\n    instance.UI.addModularHeaders([newHeader]);\n */\nimport actions from 'actions';\n\nexport default (store) => (headerList) => {\n  store.dispatch(actions.addModularHeaders(headerList));\n};","/**\n * @ignore\n * Return a Custom Header\n * @method UI.getModularHeader\n * @return {ModularHeader} Custom Header\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const header = instance.UI.getModularHeader('custom-header')\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (dataElement) => selectors.getModularHeader(store.getState(), dataElement);","/**\n * @ignore\n * Return the list of Custom Headers.\n * @method UI.getModularHeaderList\n * @return {ModularHeader} Custom Header List\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const headerList = instance.UI.getModularHeaderList()\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getModularHeaderList(store.getState());","/**\n * @ignore\n * Sets the gap of Grouped Items\n * @method UI.setGroupedItemsGap\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top'\n    });\n\n    // Setting the gap of all Grouped Items\n    instance.UI.setGroupedItemsGap(20);\n\n    // Setting the gap of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsGap(30, {\n      groupedItem: 'group1'\n    });\n\n    // Setting the gap of Grouped Items with a specific data element in a specifi header\n    instance.UI.setGroupedItemsGap(40, {\n      groupedItem: 'group1',\n      header: 'top-header'\n    });\n */\nimport actions from 'actions';\n\nexport default (store) => (gap, selectors) => {\n  store.dispatch(actions.setGroupedItemsProperty('gap', gap, selectors?.groupedItem, selectors?.header));\n};","/**\n * @ignore\n * Sets the justifyContent property of Grouped Items. This property is analogous to the CSS justify-content property.\n * @method UI.setGroupedItemsJustifyContent\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top'\n    });\n\n    // Setting the justifyContent of all Grouped Items\n    instance.UI.setGroupedItemsJustifyContent('center');\n\n    // Setting the justifyContent property of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsJustifyContent('start', {\n      groupedItem: 'group1'\n    });\n\n    // Setting the justifyContent property of Grouped Items with a specific data element in a specific header\n    instance.UI.setGroupedItemsJustifyContent('space-between', {\n      groupedItem: 'group1',\n      header: 'top-header'\n    });\n */\nimport actions from 'actions';\n\nexport default (store) => (justifyContent, selectors) => {\n  store.dispatch(actions.setGroupedItemsProperty('justifyContent', justifyContent, selectors?.groupedItem, selectors?.header));\n};","/**\n * @ignore\n * Sets the grow of Grouped Items\n * @method UI.setGroupedItemsGrow\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top'\n    });\n\n    // Setting the grow property of all Grouped Items\n    instance.UI.setGroupedItemsGrow(1);\n\n    // Setting the grow property of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsGrow(1, {\n      groupedItem: 'group1'\n    });\n\n    // Setting the grow property of Grouped Items with a specific data element in a specifi header\n    instance.UI.setGroupedItemsGrow(2, {\n      groupedItem: 'group1',\n      header: 'top-header'\n    });\n */\nimport actions from 'actions';\n\nexport default (store) => (grow, selectors) => {\n  store.dispatch(actions.setGroupedItemsProperty('grow', grow, selectors?.groupedItem, selectors?.header));\n};","import actions from 'actions';\n\n/**\n * @namespace UI.OutlinesPanel\n */\n\n/**\n * @method UI.OutlinesPanel.setDefaultOptions\n * @param {object} [options] Options for the OutlinesPanel.\n * @param {boolean} [options.autoExpandOutlines] If set to true, will expand outlines.\n * @example\nWebViewer(...)\n  .then((instance) => {\n    instance.UI.OutlinesPanel.setDefaultOptions({\n      autoExpandOutlines: true,\n    })\n  });\n */\n\nconst setDefaultOptions = (store) => (options) => {\n  const defaultOptions = {\n    autoExpandOutlines: false,\n  };\n\n  const outlinesPanelOptions = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  const { autoExpandOutlines } = outlinesPanelOptions;\n  store.dispatch(actions.setAutoExpandOutlines(autoExpandOutlines));\n};\n\nexport {\n  setDefaultOptions,\n};\n","class Item {\n  constructor(options) {\n    const { dataElement, title, disabled, type } = options;\n    this.dataElement = dataElement;\n    this.title = title;\n    this.disabled = disabled;\n    this.type = type;\n  }\n}\n\nexport default Item;","import actions from 'actions';\nimport { ITEM_TYPE, DEFAULT_GAP } from 'constants/customizationVariables';\n\nexport class GroupedItems {\n  constructor(props) {\n    const {\n      label,\n      dataElement,\n      justifyContent,\n      grow = 0,\n      gap = DEFAULT_GAP,\n      position,\n      placement,\n      items = [],\n      alwaysVisible = false,\n      style = {},\n    } = props;\n    this.label = label;\n    this.dataElement = dataElement;\n    this.placement = placement;\n    this.justifyContent = justifyContent;\n    this.grow = grow;\n    this.gap = gap;\n    this.position = position;\n    this.items = items;\n    this.type = ITEM_TYPE.GROUPED_ITEMS;\n    this.alwaysVisible = alwaysVisible;\n    this.style = style;\n    this.store = props.store;\n  }\n\n  setGap = (gap) => {\n    this.store.dispatch(actions.setGroupedItemsProperty('gap', gap, this.dataElement));\n  };\n\n  setJustifyContent = (justifyContent) => {\n    this.store.dispatch(actions.setGroupedItemsProperty('justifyContent', justifyContent, this.dataElement));\n  };\n\n  setGrow = (grow) => {\n    this.store.dispatch(actions.setGroupedItemsProperty('grow', grow, this.dataElement));\n  };\n\n  setItems = (items) => {\n    this.store.dispatch(actions.setGroupedItemsProperty('items', items, this.dataElement));\n  };\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n  return new GroupedItems(propsWithStore);\n};","import actions from 'actions';\nimport { ITEM_TYPE, JUSTIFY_CONTENT, DEFAULT_GAP, PLACEMENT, DEFAULT_STYLES } from 'constants/customizationVariables';\n\nexport default (store) => (props) => {\n  class ModularHeader {\n    constructor(props) {\n      const {\n        label,\n        dataElement,\n        justifyContent,\n        grow = 0,\n        float = false,\n        gap = DEFAULT_GAP,\n        position,\n        placement,\n        opacityMode,\n        opacity,\n        maxWidth,\n        maxHeight,\n        items = [],\n        style = {},\n        stroke = true,\n      } = props;\n      this.label = label;\n      this.dataElement = dataElement;\n      this.placement = placement;\n      this.justifyContent = justifyContent;\n      this.grow = grow;\n      this.gap = gap;\n      this.position = position;\n      this.float = float;\n      this.maxWidth = maxWidth;\n      this.maxHeight = maxHeight;\n      // items is a list of things. We want to clone them\n      this.items = items.map((item) => ({ ...item }));\n      this.itemValidTypes = Object.values(ITEM_TYPE);\n      this.opacityMode = opacityMode;\n      this.opacity = opacity;\n\n      this.stroke = stroke;\n      this.dimension = {\n        paddingTop: DEFAULT_STYLES.PADDING,\n        paddingBottom: DEFAULT_STYLES.PADDING,\n        borderWidth: DEFAULT_STYLES.WIDTH,\n      };\n\n      this.setStyle(style);\n    }\n\n    setStyle(userDefinedStyle) {\n      if (Object.keys(userDefinedStyle).length === 0) {\n        this.style = {};\n        return;\n      }\n\n      // If user pass 'border-style: solid' the stroke should appear\n      if (userDefinedStyle.hasOwnProperty('borderStyle')) {\n        this.stroke = true;\n      }\n\n      const {\n        padding,\n        borderColor = DEFAULT_STYLES.BORDER_COLOR,\n        borderWidth = DEFAULT_STYLES.WIDTH,\n        borderStyle = DEFAULT_STYLES.BORDER_STYLE,\n      } = userDefinedStyle;\n\n      if (!padding) {\n        this.style = { ...userDefinedStyle };\n        return;\n      }\n\n      // Calculate top & bottom padding for dimensions\n      // If it is `padding: '10px'`, top & bottom padding will be 10 padding\n      // If it is `padding: '10px 5px 20px'`, top is 10, bottom is 20 padding\n      // User also can pass padding like this: `padding: 15`, then top-bottom is 15 padding\n      const parsePadding = (paddingStr) => {\n        const parts = paddingStr.split(' ').map((part) => parseInt(part, 10));\n        return (parts.length <= 2)\n          ? { paddingTop: parts[0], paddingBottom: parts[0] }\n          : { paddingTop: parts[0], paddingBottom: parts[2] };\n      };\n\n      const { paddingTop, paddingBottom } = typeof padding === 'string'\n        ? parsePadding(padding) : { paddingTop: padding, paddingBottom: padding };\n\n      this.dimension.paddingTop = paddingTop;\n      this.dimension.paddingBottom = paddingBottom;\n      this.dimension.borderWidth = parseInt(borderWidth, 10);\n\n      const style = { ...userDefinedStyle };\n\n      // Clear out border direction styles, e.g., borderBottomWidth, borderTopStyle\n      // New border styles will be applied according this.placement\n      for (const prop in style) {\n        if (prop.includes('border')) {\n          delete style[prop];\n        }\n      }\n\n      if (this.stroke) {\n        // This function return border style for given placement\n        // e.g. if the placement is Right it will return \"borderLeftStyle\"\n        const borderProperty = (prop) => {\n          if (this.float) {\n            return `border${prop}`;\n          }\n          let side = '';\n          switch (this.placement) {\n            case PLACEMENT.LEFT:\n              side = 'Right';\n              break;\n            case PLACEMENT.RIGHT:\n              side = 'Left';\n              break;\n            case PLACEMENT.BOTTOM:\n              side = 'Top';\n              break;\n            case PLACEMENT.TOP:\n              side = 'Bottom';\n              break;\n            default:\n              break;\n          }\n          return `border${side}${prop}`;\n        };\n\n        style[borderProperty('Style')] = borderStyle;\n        style[borderProperty('Width')] = borderWidth;\n        style[borderProperty('Color')] = borderColor;\n      }\n\n      this.style = style;\n    }\n\n    getDimensionTotal() {\n      const { paddingTop, paddingBottom, borderWidth } = this.dimension;\n      return paddingTop + paddingBottom + borderWidth;\n    }\n\n    setGap(gap) {\n      this.gap = gap;\n      // What if the header already exists in redux? we must update it\n      store.dispatch(actions.setGapBetweenHeaderItems(this.dataElement, gap));\n    }\n\n    // Validates the items type of a grouped item\n    validateGroupedItems = (groupedItems) => {\n      const items = groupedItems.items || groupedItems.props?.items;\n      items?.forEach((item) => {\n        this.isItemTypeValid(item);\n      });\n    };\n\n    getGroupedItems() {\n      return this.getItems(ITEM_TYPE.GROUPED_ITEMS);\n    }\n\n    getItems(type) {\n      if (type) {\n        return this.items.filter((item) => item.type === type);\n      }\n      return this.items;\n    }\n\n    addItemsHelper = (item) => {\n      if (this.isItemTypeValid(item)) {\n        const clonedItem = Object.assign({}, item);\n        this.items.push(clonedItem);\n      }\n    };\n\n    // Shows a warn if the item type is not valid.\n    isItemTypeValid = (item) => {\n      if (this.itemValidTypes.includes(item.type)) {\n        // case it is a grouped items, validates its items as well\n        if (item.type === ITEM_TYPE.GROUPED_ITEMS) {\n          this.validateGroupedItems(item);\n        }\n        return true;\n      }\n      console.warn(`${item.type} is not a valid item type.`);\n      return false;\n    };\n\n    addItems = (newItem) => {\n      const state = store.getState();\n\n      if (Array.isArray(newItem)) {\n        newItem.forEach((item) => {\n          this.addItemsHelper(item);\n        });\n      } else {\n        this.addItemsHelper(newItem);\n      }\n\n      if (state.viewer.modularHeaders.length) {\n        const modularHeaders = state.viewer.modularHeaders;\n        modularHeaders.forEach((header, index, modularHeaders) => {\n          if (header.dataElement === this.dataElement) {\n            modularHeaders[index].items = this.items;\n          }\n        });\n        store.dispatch(actions.updateModularHeaders(modularHeaders));\n      }\n    };\n\n    setJustifyContent = (justifyContent) => {\n      const validJustifications = Object.values(JUSTIFY_CONTENT);\n      if (!validJustifications.includes(justifyContent)) {\n        console.warn(`${justifyContent} is not a valid value for justifyContent. Please use one of the following: ${validJustifications}`);\n        return;\n      }\n      store.dispatch(actions.setHeaderJustifyContent(this.dataElement, justifyContent));\n    };\n\n    setMaxWidth = (maxWidth) => {\n      if (isNaN(maxWidth)) {\n        console.warn(`${maxWidth} is not a valid value for maxWidth. Please use a number, which represents the maximum width of the header in pixels.`);\n        return;\n      }\n      store.dispatch(actions.setHeaderMaxWidth(this.dataElement, maxWidth));\n    };\n\n    setMaxHeight = (maxHeight) => {\n      if (isNaN(maxHeight)) {\n        console.warn(`${maxHeight} is not a valid value for maxHeight. Please use a number, which represents the maximum height of the header in pixels.`);\n        return;\n      }\n      store.dispatch(actions.setHeaderMaxHeight(this.dataElement, maxHeight));\n    };\n  }\n\n  return new ModularHeader(props);\n};\n","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nclass CustomButton extends Item {\n  constructor(props) {\n    const { isActive, label, img, onClick } = props;\n    super(props);\n    this.type = ITEM_TYPE.BUTTON;\n    this.isActive = isActive;\n    this.label = label;\n    this.img = img;\n    this.onClick = onClick;\n    this.type = ITEM_TYPE.BUTTON;\n  }\n}\n\nexport default CustomButton;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nclass ToolButton extends Item {\n  constructor(props) {\n    const { isActive, label, img, onClick, toolName, color } = props;\n    super(props);\n    this.type = ITEM_TYPE.TOOL_BUTTON;\n    this.isActive = isActive;\n    this.label = label;\n    this.img = img;\n\n    if (onClick) {\n      this.onClick = onClick;\n    }\n    this.toolName = toolName;\n    this.color = color;\n  }\n}\n\nexport default ToolButton;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nclass RibbonItem extends Item {\n  constructor(props) {\n    const { isActive, label, img, toolbarGroup, groupedItems, direction } = props;\n    super(props);\n    this.type = ITEM_TYPE.RIBBON_ITEM;\n    this.isActive = isActive;\n    this.label = label;\n    this.img = img;\n    this.toolbarGroup = toolbarGroup;\n    this.type = ITEM_TYPE.RIBBON_ITEM;\n    this.direction = direction;\n\n    this.groupedItems = [];\n    if (Array.isArray(groupedItems)) {\n      groupedItems.forEach((group) => {\n        this.groupedItems.push(group);\n      });\n    } else {\n      this.groupedItems.push(groupedItems);\n    }\n  }\n}\n\nexport default RibbonItem;","import { GroupedItems } from './groupedItems';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nclass RibbonGroup extends GroupedItems {\n  constructor(props) {\n    const { dataElement, items, headerDirection, } = props;\n    super(props);\n    this.dataElement = dataElement;\n    this.type = ITEM_TYPE.RIBBON_GROUP;\n    this.items = items;\n    this.headerDirection = headerDirection;\n  }\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n  return new RibbonGroup(propsWithStore);\n};","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nclass ToggleElementButton extends Item {\n  constructor(props) {\n    const { label, img, toggleElement } = props;\n    super(props);\n    this.type = ITEM_TYPE.TOGGLE_BUTTON;\n    this.label = label;\n    this.img = img;\n    this.toggleElement = toggleElement;\n  }\n}\n\nexport default ToggleElementButton;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport ToggleElementButton from './toggleElementButton';\n\nclass ToolGroupButton extends ToggleElementButton {\n  constructor(props) {\n    const { label, img, toolGroup, tools } = props;\n    super(props);\n    this.type = ITEM_TYPE.TOOL_GROUP_BUTTON;\n    this.label = label;\n    this.img = img;\n    this.toolGroup = toolGroup;\n    this.tools = tools;\n  }\n}\n\nexport default ToolGroupButton;","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nclass Zoom extends Item {\n  constructor(props = {}) {\n    super(props);\n    this.type = ITEM_TYPE.ZOOM;\n    this.dataElement = 'zoom-container';\n  }\n}\n\nexport default Zoom;","import { ITEM_TYPE } from 'constants/customizationVariables';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nconst { checkTypes, TYPES } = window.Core;\nconst flyoutItemTypeBase = {\n  label: TYPES.STRING,\n  onClick: TYPES.FUNCTION,\n  icon: TYPES.OPTIONAL(TYPES.STRING),\n};\nconst flyoutChildType = TYPES.MULTI_TYPE(\n  TYPES.OBJECT({ ...flyoutItemTypeBase }),\n  TYPES.STRING // For dividers\n);\nconst flyoutItemType = TYPES.MULTI_TYPE(\n  TYPES.OBJECT({\n    ...flyoutItemTypeBase,\n    children: TYPES.OPTIONAL(TYPES.ARRAY(flyoutChildType)),\n  }),\n  TYPES.STRING // For dividers\n);\n/**\n * @ignore\n * @name Flyout\n * @memberOf UI.Components\n * @class\n * @constructor\n * @param {Object} options\n * @param {string} options.dataElement\n * @param {Array<Object>} options.items\n * @param {string} options.items.label\n * @param {Function} options.items.onClick\n * @param {string} options.items.icon\n * @param {Array<Object>} options.items.children\n * @param {string} options.items.children.label\n * @param {Function} options.items.children.onClick\n * @param {string} options.items.children.icon\n */\nexport default (store) => class Flyout {\n  properties;\n\n  constructor(options) {\n    checkTypes([options], [TYPES.OBJECT({\n      dataElement: TYPES.STRING,\n      items: TYPES.ARRAY(flyoutItemType),\n    })], 'Flyout Constructor');\n    const { dataElement } = options;\n    this.properties = options;\n    this.dataElement = dataElement;\n    this.type = ITEM_TYPE.FLYOUT;\n  }\n\n  addItems(itemList) {\n    checkTypes([itemList], [TYPES.ARRAY(flyoutItemType)], 'Flyout.addItem');\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    if (flyoutMap[this.properties.dataElement]) {\n      flyoutMap[this.properties.dataElement].items.push(...itemList);\n      this.updateStore();\n    }\n    this.properties.items.push(...itemList);\n  }\n\n  get items() {\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    if (flyoutMap[this.properties.dataElement]) {\n      return flyoutMap[this.properties.dataElement].items;\n    }\n    return this.properties.items;\n  }\n\n  set items(newItems) {\n    checkTypes([newItems], [TYPES.ARRAY(flyoutChildType)], 'Flyout.initializeFlyoutItem');\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    if (flyoutMap[this.properties.dataElement]) {\n      flyoutMap[this.properties.dataElement].items = newItems;\n      this.updateStore();\n    }\n    this.properties.items = newItems;\n  }\n\n  updateStore() {\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    store.dispatch(actions.updateFlyout(this.properties.dataElement, flyoutMap[this.properties.dataElement]));\n  }\n};\n","import GroupedItems from './groupedItems';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nclass GroupedTools extends GroupedItems {\n  constructor(props) {\n    const { dataElement, items, headerDirection, gap } = props;\n    super(props);\n    this.dataElement = dataElement;\n    this.type = ITEM_TYPE.GROUPED_TOOLS;\n    this.items = items;\n    this.headerDirection = headerDirection;\n    this.gap = gap;\n  }\n}\n\nexport default GroupedTools;","/**\n * Set the scrolling behavior of sync scrolling in semantic compare mode.\n * Must be one of the following values:\n * - 'SYNC': scroll synchronously in both documents\n * - 'SKIP_UNMATCHED': scroll according to the next matched position in both documents\n * @method UI.setMultiViewerSyncScrollingMode\n * @param {(string)} multiViewerSyncScrollingMode the scrolling behavior of sync scrolling in semantic comparing mode.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setMultiViewerSyncScrollingMode('SYNC');\n  });\n */\n\nimport actions from 'actions';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\n\nexport default (store) => (multiViewerComparedSyncScrollingMode) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([multiViewerComparedSyncScrollingMode], [TYPES.ONE_OF(SYNC_MODES.SYNC, SYNC_MODES.SKIP_UNMATCHED)], 'UI.setMultiViewerSyncScrollingMode');\n  store.dispatch(actions.setMultiViewerSyncScrollingMode(multiViewerComparedSyncScrollingMode));\n};\n","/**\n * Sets the multiplier used when creating typed, text signatures. This improves the quality of the rendered signature at the cost of more memory.\n * @method UI.setTextSignatureQuality\n * @param {number} multiplier The multiplier value used to scale the image output\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTextSignatureQuality(2);\n */\n\nimport actions from 'actions';\n\nexport default (store) => (multiplier) => {\n  store.dispatch(actions.setTextSignatureQuality(multiplier));\n};\n","/**\n * Gets the multiplier used when creating typed, text signatures.\n * @method UI.getTextSignatureQuality\n * @return {number} The multiplier value\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.getTextSignatureQuality(4);\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getTextSignatureQuality(store.getState());","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * Returns all the measurement scale preset options for the given measurement system.\n * @method UI.getMeasurementScalePreset\n * @param {string} measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @returns {Array.<Array.<string|Core.Scale>>} All the measurement scale preset options for the given measurement system.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getMeasurementScalePreset('metric'));\n  });\n */\nexport const getMeasurementScalePreset = (store) => (measurementSystem) => selectors.getMeasurementScalePreset(store.getState())[measurementSystem];\n\n/**\n * Adds a new preset option for measurement scales.\n * @method UI.addMeasurementScalePreset\n * @param {object} options Options for adding a new preset option.\n * @param {string} options.measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @param {string} options.displayName The display name of the new preset option.\n * @param {Core.Scale} options.presetScale The scale object of the new preset option.\n * @param {number} [options.index] The index at which to insert the new preset option. If not provided, the new preset will be added to the last of the preset options list.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const newScale = new instance.Core.Scale([[1, 'mm'], [300, 'mm']]);\n    instance.UI.addMeasurementScalePreset({\n      measurementSystem: 'metric',\n      displayName: '1:300',\n      presetScale: newScale,\n      index: 5\n    });\n  });\n */\nexport const addMeasurementScalePreset = (store) => ({ measurementSystem, displayName, presetScale, index }) => {\n  store.dispatch(actions.addMeasurementScalePreset(measurementSystem, [displayName, presetScale], index));\n};\n\n/**\n * Adds an existing preset option for measurement scales.\n * @method UI.removeMeasurementScalePreset\n * @param {string} measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @param {number} index The index at which to remove the existing preset option.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.removeMeasurementScalePreset('metric', 5);\n  });\n */\nexport const removeMeasurementScalePreset = (store) => (measurementSystem, index) => {\n  store.dispatch(actions.removeMeasurementScalePreset(measurementSystem, index));\n};\n\n/**\n * Enable multiple scales mode.\n * @method UI.enableMultipleScalesMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableMultipleScalesMode();\n  });\n */\nexport const enableMultipleScalesMode = (store) => () => {\n  store.dispatch(actions.setIsMultipleScalesMode(true));\n};\n\n/**\n * Disable multiple scales mode.\n * @method UI.disableMultipleScalesMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableMultipleScalesMode();\n  });\n */\nexport const disableMultipleScalesMode = (store) => () => {\n  store.dispatch(actions.setIsMultipleScalesMode(false));\n};\n\n/**\n * Returns whether multiple scales mode is enabled.\n * @method UI.isMultipleScalesModeEnabled\n * @returns {boolean} True if multiple scales mode is enabled, false if multiple scales mode is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isMultipleScalesModeEnabled());\n  });\n */\nexport const isMultipleScalesModeEnabled = (store) => () => selectors.getIsMultipleScalesMode(store.getState());\n","import i18next from 'i18next';\n\n/**\n * Return the localized text for the given key. This functions exactly the same as the <b>t</b> API from the <b>i18n</b> library.\n * <br/>\n * This may be used to leverage the existing localization setup in WebViewer in custom elements, modals, etc.\n * @method UI.getLocalizedText\n * @return {string|Array<string>} The translation key\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const button = document.createElement('button');\n    button.innerText = instance.UI.getLocalizedText('action.add');\n\n    instance.UI.setHeaderItems(header => {\n      const renderButton = () => button;\n\n      const newCustomElement = {\n        type: 'customElement',\n        title: 'action.add',\n        render: renderButton\n      };\n      header.push(newCustomElement);\n    });\n\n    instance.UI.addEventListener(instance.UI.Events.LANGUAGE_CHANGED, () => {\n        // Manually update components\n        button.innerText = instance.UI.getLocalizedText('action.add');\n    });\n\n    instance.UI.setLanguage(instance.UI.Languages.FR);\n    // The button text will be 'Ajouter' (French) instead of 'Add' (English)\n  });\n */\n\nconst getLocalizedText = (key) => i18next.t(key);\n\nexport default getLocalizedText;\n","import core from 'core';\n\nexport default (documentViewerKey) => {\n  if (!documentViewerKey) {\n    return core.getDocumentViewer(1);\n  }\n\n  return core.getDocumentViewer(documentViewerKey);\n};","import actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * @method UI.enableMultiViewerSync\n * @param {number} [primaryViewerKey=1] Which DocumentViewer to set as primary for initial zoom sync (1 or 2)\n * @example\n WebViewer(...)\n .then((instance) => {\n    instance.UI.enableMultiViewerSync(1) // Value can be 1 (for left side) or 2 (for right side)\n  });\n */\nconst enableMultiViewerSync = (store) => (primaryViewerKey) => {\n  if (!primaryViewerKey || (primaryViewerKey !== 1 && primaryViewerKey !== 2)) {\n    primaryViewerKey = 1;\n  }\n  store.dispatch(actions.setSyncViewer(primaryViewerKey));\n};\n\n/**\n * @method UI.disableMultiViewerSync\n * @example\n WebViewer(...)\n .then((instance) => {\n    instance.UI.disableMultiViewerSync();\n  });\n */\nconst disableMultiViewerSync = (store) => () => {\n  store.dispatch(actions.setSyncViewer(null));\n};\n\n/**\n * @method UI.isMultiViewerSyncing\n * @return {boolean} returns true if sync is enabled false if disabled\n * @example\n WebViewer(...)\n .then((instance) => {\n    console.log(instance.UI.isMultiViewerSyncing());\n  });\n */\nconst isMultiViewerSyncing = (store) => () => !!selectors.getSyncViewer(store.getState());\n\nexport {\n  isMultiViewerSyncing,\n  enableMultiViewerSync,\n  disableMultiViewerSync,\n};","import actions from 'actions';\nimport selectors from 'selectors';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport setLanguage from './setLanguage';\nimport hotkeysManager, { ShortcutKeys } from 'helpers/hotkeysManager';\n\n/**\n * Set custom settings shown in Advanced Setting tab in Settings modal.\n * A custom setting item includes a label, a description, and a toggle button.\n * @method UI.setCustomSettings\n * @param {Array<UI.CustomSettingItem>} customSettings Array of custom setting items.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomSettings([\n      {\n        label: 'Enable High Contrast Mode',\n        description: 'Turns high contrast mode on to help with accessibility.',\n        isChecked: () => instance.UI.isHighContrastModeEnabled(),\n        onToggled: (enable) => {\n          if (enable) {\n            instance.UI.enableHighContrastMode();\n          } else {\n            instance.UI.disableHighContrastMode();\n          }\n        }\n      }\n    ]);\n  });\n */\nexport const setCustomSettings = (store) => (customSettings) => {\n  store.dispatch(actions.setCustomSettings(customSettings));\n};\n\n/**\n * @typedef {Object} UI.CustomSettingItem\n * @property {string} label Custom setting label\n * @property {string} description Custom setting description\n * @property {function|boolean} isChecked Whether the toggle button is checked.\n * @property {function} onToggled The callback function triggered when the toggle button is clicked.\n */\n\nconst SettingKeys = {\n  'LANGUAGE': 'language',\n  'THEME': 'theme',\n  'KEYBOARD_SHORTCUT': 'keyboardShortcut',\n  'DISABLE_FADE_PAGE_NAV': 'disableFadePageNavigationComponent',\n  'DISABLE_NATIVE_SCROLL': 'disableNativeScrolling',\n  'DISABLE_TOOL_STYLE_UPDATE': 'disableToolDefaultStyleUpdateFromAnnotationPopup',\n  'DISABLE_NOTE_SUBMIT_ENTER': 'disableNoteSubmissionWithEnter',\n  'DISABLE_AUTO_EXPAND_COMMENT': 'disableAutoExpandCommentThread',\n  'DISABLE_REPLY_COLLAPSE': 'disableReplyCollapse',\n  'DISABLE_TEXT_COLLAPSE': 'disableTextCollapse',\n  'DISABLE_CLEAR_SEARCH_ON_CLOSE': 'disableClearSearchOnPanelClose',\n  'DISABLE_PAGE_DELETE_CONFIRM': 'disablePageDeletionConfirmationModal',\n  'DISABLE_THUMBNAIL_MULTI_SELECT': 'disableThumbnailMultiselect'\n};\n/**\n * Export the current user settings as JSON object.\n * @method UI.exportUserSettings\n * @return {object} JSON object containing the current user settings\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    const userSettings = instance.UI.exportUserSettings();\n    console.log(userSettings);\n  });\n */\nexport const exportUserSettings = (store) => () => {\n  const state = store.getState();\n  return {\n    [SettingKeys.LANGUAGE]: selectors.getCurrentLanguage(state),\n    [SettingKeys.THEME]: selectors.getActiveTheme(state),\n    [SettingKeys.KEYBOARD_SHORTCUT]: selectors.getShortcutKeyMap(state),\n    [SettingKeys.DISABLE_FADE_PAGE_NAV]: !selectors.shouldFadePageNavigationComponent(state),\n    [SettingKeys.DISABLE_NATIVE_SCROLL]: !touchEventManager.useNativeScroll,\n    [SettingKeys.DISABLE_TOOL_STYLE_UPDATE]: !selectors.isToolDefaultStyleUpdateFromAnnotationPopupEnabled(state),\n    [SettingKeys.DISABLE_NOTE_SUBMIT_ENTER]: !selectors.isNoteSubmissionWithEnterEnabled(state),\n    [SettingKeys.DISABLE_AUTO_EXPAND_COMMENT]: !selectors.isCommentThreadExpansionEnabled(state),\n    [SettingKeys.DISABLE_REPLY_COLLAPSE]: !selectors.isNotesPanelRepliesCollapsingEnabled(state),\n    [SettingKeys.DISABLE_TEXT_COLLAPSE]: !selectors.isNotesPanelTextCollapsingEnabled(state),\n    [SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE]: !selectors.shouldClearSearchPanelOnClose(state),\n    [SettingKeys.DISABLE_PAGE_DELETE_CONFIRM]: !selectors.pageDeletionConfirmationModalEnabled(state),\n    [SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT]: !selectors.isThumbnailSelectingPages(state)\n  };\n};\n\n/**\n * Import user settings from JSON object.\n * @method UI.importUserSettings\n * @param {object} userSettings JSON object containing the new user settings\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    const userSettings = instance.UI.exportUserSettings();\n    const newUserSettings = {\n      'theme': 'dark',\n      'keyboardShortcut': { ...userSettings.keyboardShortcut, 'search': 'command+m' }\n    };\n    instance.UI.importUserSettings(newUserSettings);\n  });\n */\nexport const importUserSettings = (store) => (userSettings) => {\n  if (SettingKeys.LANGUAGE in userSettings) {\n    setLanguage(store)(userSettings[SettingKeys.LANGUAGE]);\n  }\n  if (SettingKeys.THEME in userSettings) {\n    store.dispatch(actions.setActiveTheme(userSettings[SettingKeys.THEME]));\n  }\n  if (SettingKeys.DISABLE_FADE_PAGE_NAV in userSettings) {\n    if (userSettings[SettingKeys.DISABLE_FADE_PAGE_NAV]) {\n      store.dispatch(actions.disableFadePageNavigationComponent());\n    } else {\n      store.dispatch(actions.enableFadePageNavigationComponent());\n    }\n  }\n  if (SettingKeys.DISABLE_NATIVE_SCROLL in userSettings) {\n    touchEventManager.useNativeScroll = !userSettings[SettingKeys.DISABLE_NATIVE_SCROLL];\n  }\n  if (SettingKeys.DISABLE_TOOL_STYLE_UPDATE in userSettings) {\n    store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(!userSettings[SettingKeys.DISABLE_TOOL_STYLE_UPDATE]));\n  }\n  if (SettingKeys.DISABLE_NOTE_SUBMIT_ENTER in userSettings) {\n    store.dispatch(actions.setNoteSubmissionEnabledWithEnter(!userSettings[SettingKeys.DISABLE_NOTE_SUBMIT_ENTER]));\n  }\n  if (SettingKeys.DISABLE_AUTO_EXPAND_COMMENT in userSettings) {\n    store.dispatch(actions.setCommentThreadExpansion(!userSettings[SettingKeys.DISABLE_AUTO_EXPAND_COMMENT]));\n  }\n  if (SettingKeys.DISABLE_REPLY_COLLAPSE in userSettings) {\n    store.dispatch(actions.setNotesPanelRepliesCollapsing(!userSettings[SettingKeys.DISABLE_REPLY_COLLAPSE]));\n  }\n  if (SettingKeys.DISABLE_TEXT_COLLAPSE in userSettings) {\n    store.dispatch(actions.setNotesPanelTextCollapsing(!userSettings[SettingKeys.DISABLE_TEXT_COLLAPSE]));\n  }\n  if (SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE in userSettings) {\n    store.dispatch(actions.setClearSearchOnPanelClose(!userSettings[SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE]));\n  }\n  if (SettingKeys.DISABLE_PAGE_DELETE_CONFIRM in userSettings) {\n    if (userSettings[SettingKeys.DISABLE_PAGE_DELETE_CONFIRM]) {\n      store.dispatch(actions.disablePageDeletionConfirmationModal());\n    } else {\n      store.dispatch(actions.enablePageDeletionConfirmationModal());\n    }\n  }\n  if (SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT in userSettings) {\n    store.dispatch(actions.setThumbnailSelectingPages(!userSettings[SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT]));\n  }\n  if (SettingKeys.KEYBOARD_SHORTCUT in userSettings) {\n    const shortcutKeyMap = selectors.getShortcutKeyMap(store.getState());\n    Object.values(shortcutKeyMap).forEach((key) => {\n      hotkeysManager.off(key);\n    });\n\n    const newShortcutKeyMap = userSettings[SettingKeys.KEYBOARD_SHORTCUT];\n    Object.keys(newShortcutKeyMap).forEach((shortcut) => {\n      hotkeysManager.on(newShortcutKeyMap[shortcut], hotkeysManager.keyHandlerMap[ShortcutKeys[shortcut]]);\n    });\n\n    store.dispatch(actions.setShortcutKeyMap({ ...newShortcutKeyMap }));\n  }\n};\n","import actions from 'actions';\n\n/**\n * Adds a custom panel in left or right side of the UI.\n * @method UI.addPanel\n * @param {object} options\n * @param {string} options.dataElement data-element for panel.\n * @param {string} options.location Location of the panel in UI, left or right.\n * @param {string | UI.renderCustomPanel} options.render Either the name of a predefined panel to render or a function that returns a panel element.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addPanel({\n      dataElement: 'myNewOutlinesPanel',\n      render: instance.UI.Panels.OUTLINE,\n    })\n\n    instance.openElement('myNewOutlinesPanel');\n  });\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addPanel({\n      dataElement: 'fooBarElement',\n      location: 'left',\n      render: function() {\n        var div = document.createElement('div');\n        div.innerHTML = 'Hello World, foobar panel';\n        return div;\n      }\n    });\n\n    instance.openElement('fooBarElement');\n  });\n */\n/**\n * Callback that gets passed to `options.panel.render` in {@link UI.addPanel addPanel}.\n * @callback UI.renderCustomPanel\n * @returns {HTMLElement} Panel element.\n */\n\nexport default (store) => (customPanel) => {\n  store.dispatch(actions.addPanel(customPanel));\n};","import { setGrayscaleDarknessFactor } from 'helpers/print';\n\n/**\n * Set Grayscale Darkness Factor for printing in Grayscale\n * @method UI.setGrayscaleDarknessFactor\n * @param {number} darknessFactor Default is '1', '0' is fully black and white\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setGrayscaleDarknessFactor(0.5);\n  });\n */\n\nexport default (darknessFactor) => {\n  setGrayscaleDarknessFactor(darknessFactor);\n};\n","import { ITEM_TYPE } from 'constants/customizationVariables';\nimport actions from 'actions';\nimport Flyout from './ModularComponents/flyout';\nimport selectors from 'selectors/index';\n\n/**\n * @ignore\n * Namespace used to add, remove, and interact with flyouts in the UI\n * @namespace UI.Flyouts\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * @ignore\n * Adds new flyout to the Flyout List\n * @method UI.Flyouts.addFlyouts\n * @param {Array<UI.Components.Flyout>} flyoutList Array of flyouts to add\n * @example\n * WebViewer(...).then(function(instance) {\n *  const flyout = new instance.UI.Components.Flyout({\n *    dataElement: 'customFlyout',\n *    draggable: true,\n *    items: [{\n *      label: 'Custom Flyout Item',\n *      onClick: () => console.log('Custom Flyout Item clicked'),\n *      icon: 'icon-save',\n *    }],\n *  });\n *  instance.UI.Flyouts.addFlyouts([ flyout ]);\n * });\n */\n\n/**\n * @ignore\n * Removes flyout from the Flyout List\n * @method UI.Flyouts.removeFlyout\n * @param {string} dataElement Data element of the flyout to remove\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.removeFlyout('customFlyout');\n * });\n */\n\n/**\n * @ignore\n * Sets the active flyout, set to null to hide the flyout\n * @method UI.Flyouts.setActiveFlyout\n * @param {string} dataElement Data element of the flyout to set as active\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * @ignore\n * Sets the position of the active flyout, (use UI.Flyouts.setActiveFlyout to show the flyout)\n * Position is relative to the root element of WebViewer\n * Coordinates going out of the WebViewer UI will be clamped\n * @method UI.Flyouts.setFlyoutPosition\n * @param {Object} position Position of the flyout\n * @param {number} position.x X position of the flyout\n * @param {number} position.y Y position of the flyout\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setFlyoutPosition({ x: 100, y: 100 });\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * @ignore\n * @method UI.Flyouts.getFlyout\n * @param {string} dataElement Data element of the flyout to get\n * @returns {UI.Components.Flyout} Flyout with the given data element\n */\n\n/**\n * @ignore\n * @method UI.Flyouts.getFlyouts\n * @returns {Array<UI.Components.Flyout>} Array of all flyouts registered with the UI\n */\n\nexport default (store) => {\n  const { checkTypes, TYPES } = window.Core;\n  const addFlyouts = (flyoutList) => {\n    for (const flyout of flyoutList) {\n      if (!flyout || !flyout.properties || flyout.type !== ITEM_TYPE.FLYOUT) {\n        return console.error('Invalid Flyout item passed to addFlyout: ', JSON.stringify(flyout));\n      }\n      const { properties } = flyout;\n\n      store.dispatch(actions.addFlyout(properties));\n    }\n  };\n\n  const removeFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.STRING], 'Flyouts.removeFlyout');\n    store.dispatch(actions.removeFlyout(dataElement));\n  };\n\n  const setActiveFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.OPTIONAL(TYPES.STRING)], 'Flyouts.setActiveFlyout');\n    store.dispatch(actions.setActiveFlyout(dataElement));\n  };\n\n  const setFlyoutPosition = (position) => {\n    checkTypes([position], [TYPES.OBJECT({ x: TYPES.NUMBER, y: TYPES.NUMBER })], 'Flyouts.setFlyoutPosition');\n    store.dispatch(actions.setFlyoutPosition(position));\n  };\n\n  const getFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.STRING], 'Flyouts.getFlyout');\n    const flyout = selectors.getFlyoutMap(store.getState())[dataElement];\n    if (!flyout) {\n      return null;\n    }\n    return new (Flyout(store))(flyout);\n  };\n\n  const getAllFlyouts = () => {\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    const flyouts = [];\n    for (const dataElement in flyoutMap) {\n      flyouts.push(getFlyout(dataElement));\n    }\n    return flyouts;\n  };\n\n  return {\n    addFlyouts,\n    removeFlyout,\n    setActiveFlyout,\n    setFlyoutPosition,\n    getFlyout,\n    getAllFlyouts,\n  };\n};\n","import { setClickMiddleWare as _setClickMiddleware } from 'helpers/clickTracker';\n\n/**\n * @name UI.ClickedItemTypes\n * @enum {string}\n * @property {string} BUTTON button type\n */\n\n/**\n * @callback UI.clickMiddleware\n * @param {string} dataElement The dataElement of the clicked item\n * @param {object} info\n * @param {string} info.type The type of the clicked item. Will be one of {@link UI.ClickedItemTypes}\n */\n\n/**\n * Sets a function to be called before the default click handler.\n * Can be used to track clicks on buttons in the UI.\n * @method UI.setClickMiddleware\n * @param {UI.clickMiddleware} middleware A callback function that will be called before the default click handler.\n * @example\n WebViewer(...)\n   .then(function(instance) {\n     instance.UI.setClickMiddleware(function(dataElement, { type }) {\n       if (type === instance.UI.ClickedItemTypes.BUTTON) {\n        console.log('clicked button: ', dataElement)\n       }\n     })\n   })\n */\nexport const setClickMiddleware = (middleware) => {\n  _setClickMiddleware(middleware);\n};\n","/**\n * Contains string enums for WebViewer feature flags\n * @name UI.FeatureFlags\n * @property {string} CUSTOMIZABLE_UI Feature flag for the new customizable UI\n * @ignore\n */\nconst FEATURE_FLAGS = {\n  CUSTOMIZABLE_UI: 'customizableUI',\n};\n\nexport default FEATURE_FLAGS;","/**\n * Enables a specified feature flag.\n * @ignore\n * @method UI.enableFeatureFlag\n * @param {string} featureFlag The feature flag to enable. To find feature flag names, refer to <a href='https://docs.apryse.com/documentation/web/guides/feature-flags/#feature-flags' target='_blank'>Feature flags</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatureFlag(instance.UI.FeatureFlags.CUSTOMIZABLE_UI);\n  });\n */\n\nimport actions from 'actions';\nimport FEATURE_FLAGS from 'constants/featureFlags';\n\nexport default (store) => (featureFlag) => {\n  const featureFlags = Object.values(FEATURE_FLAGS);\n  if (!featureFlags.includes(featureFlag)) {\n    console.warn(`Feature flag ${featureFlag} does not exist.`);\n  } else {\n    store.dispatch(actions.enableFeatureFlag(featureFlag));\n  }\n};","/**\n * Disables a specified feature flag.\n * @ignore\n * @method UI.disableFeatureFlag\n * @param {string} featureFlag The feature flag to disable. To find feature flag names, refer to <a href='https://docs.apryse.com/documentation/web/guides/feature-flags/#feature-flags' target='_blank'>Feature flags</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableFeatureFlag(instance.UI.FeatureFlags.CUSTOMIZABLE_UI);\n  });\n */\n\nimport actions from 'actions';\nimport FEATURE_FLAGS from 'constants/featureFlags';\n\nexport default (store) => (featureFlag) => {\n  const featureFlags = Object.values(FEATURE_FLAGS);\n  if (!featureFlags.includes(featureFlag)) {\n    console.warn(`Feature flag ${featureFlag} does not exist.`);\n  } else {\n    store.dispatch(actions.disableFeatureFlag(featureFlag));\n  }\n};","/**\n * Activate Multi-Viewer Mode (Side by side view).\n * @method UI.enterMultiViewerMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enterMultiViewerMode();\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  if (selectors.getIsMultiTab(store.getState())) {\n    console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiTab');\n    store.dispatch(actions.setMultiTab(false));\n    store.dispatch(actions.setTabManager(null));\n    store.dispatch(actions.setTabs([]));\n    store.dispatch(actions.setActiveTab(0));\n  }\n  store.dispatch(actions.setIsMultiViewerMode(true));\n};","/**\n * Exit Multi-Viewer Mode (Side by side view).\n * @method UI.exitMultiViewerMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.exitMultiViewerMode();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.setIsMultiViewerMode(false));\n};","import i18next from 'i18next';\n\nimport LayoutMode from 'constants/layoutMode';\nimport FitMode from 'constants/fitMode';\nimport Feature from 'constants/feature';\nimport Events from 'constants/events';\nimport ToolbarGroup from 'constants/toolbar';\nimport { NotesPanelSortStrategy } from 'constants/sortStrategies';\nimport Theme from 'constants/theme';\nimport RedactionSearchPatterns from 'constants/redactionSearchPatterns';\nimport { languageEnum } from 'constants/languages';\nimport { panelNames } from 'constants/panel';\nimport addSearchListener from './addSearchListener';\nimport addSortStrategy from './addSortStrategy';\nimport annotationPopup from './annotationPopup';\nimport closeDocument from './closeDocument';\nimport closeElements from './closeElements';\nimport contextMenuPopup from './contextMenuPopup';\nimport disableAnnotations from './disableAnnotations';\nimport disableDownload from './disableDownload';\nimport disableElement from './disableElement';\nimport disableElements from './disableElements';\nimport disableFeatures from './disableFeatures';\nimport disableFilePicker from './disableFilePicker';\nimport disableHighContrastMode from './disableHighContrastMode';\nimport disableLocalStorage from './disableLocalStorage';\nimport disableMeasurement from './disableMeasurement';\nimport disableNativeScrolling from './disableNativeScrolling';\nimport disableNotesPanel from './disableNotesPanel';\nimport disableNoteSubmissionWithEnter from './disableNoteSubmissionWithEnter';\nimport disablePrint from './disablePrint';\nimport disableRedaction from './disableRedaction';\nimport disableTextSelection from './disableTextSelection';\nimport disableTool from './disableTool';\nimport disableTools from './disableTools';\nimport disableTouchScrollLock from './disableTouchScrollLock';\nimport displayErrorMessage from './displayErrorMessage';\nimport downloadPdf from './downloadPdf';\nimport enableAllElements from './enableAllElements';\nimport enableAnnotations from './enableAnnotations';\nimport enableDownload from './enableDownload';\nimport enableElement from './enableElement';\nimport enableElements from './enableElements';\nimport enableHighContrastMode from './enableHighContrastMode';\nimport enableFeatures from './enableFeatures';\nimport enableFilePicker from './enableFilePicker';\nimport enableLocalStorage from './enableLocalStorage';\nimport enableMeasurement from './enableMeasurement';\nimport enableNativeScrolling from './enableNativeScrolling';\nimport enableNotesPanel from './enableNotesPanel';\nimport enablePrint from './enablePrint';\nimport enableRedaction from './enableRedaction';\nimport enableTextSelection from './enableTextSelection';\nimport enableTool from './enableTool';\nimport enableTools from './enableTools';\nimport enableTouchScrollLock from './enableTouchScrollLock';\nimport extractPagesWithAnnotations from './extractPagesWithAnnotations';\nimport focusNote from './focusNote';\nimport getAnnotationUser from './getAnnotationUser';\nimport getBBAnnotManager from './getBBAnnotManager';\nimport getCurrentLanguage from './getCurrentLanguage';\nimport getCurrentPageNumber from './getCurrentPageNumber';\nimport getFitMode from './getFitMode';\nimport getLayoutMode from './getLayoutMode';\nimport getPageCount from './getPageCount';\nimport getSelectors from './getSelectors';\nimport getShowSideWindow from './getShowSideWindow';\nimport getSideWindowVisibility from './getSideWindowVisibility';\nimport getToolMode from './getToolMode';\nimport getZoomLevel from './getZoomLevel';\nimport getMaxZoomLevel from './getMaxZoomLevel';\nimport getMinZoomLevel from './getMinZoomLevel';\nimport goToFirstPage from './goToFirstPage';\nimport goToLastPage from './goToLastPage';\nimport goToNextPage from './goToNextPage';\nimport goToPrevPage from './goToPrevPage';\nimport hideOutlineControl from './hideOutlineControl';\nimport hotkeys from './hotkeys';\nimport isAdminUser from './isAdminUser';\nimport isElementDisabled from './isElementDisabled';\nimport isElementOpen from './isElementOpen';\nimport isHighContrastModeEnabled from './isHighContrastModeEnabled';\nimport isReadOnly from './isReadOnly';\nimport isToolDisabled from './isToolDisabled';\nimport isFullscreen from './isFullscreen';\nimport loadDocument from './loadDocument';\nimport mentions from './mentions';\nimport settingsMenuOverlay from './menuOverlay';\nimport openElement from './openElement';\nimport openElements from './openElements';\nimport print from './print';\nimport printInBackground from './printInBackground';\nimport cancelPrint from './cancelPrint';\nimport registerTool from './registerTool';\nimport removeSearchListener from './removeSearchListener';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport saveAnnotations from './saveAnnotations';\nimport searchText from './searchText';\nimport searchTextFull from './searchTextFull';\nimport setWv3dPropertiesPanelModelData from './setWv3dPropertiesPanelModelData';\nimport setWv3dPropertiesPanelSchema from './setWv3dPropertiesPanelSchema';\nimport setActiveHeaderGroup from './setActiveHeaderGroup';\nimport setActiveLeftPanel from './setActiveLeftPanel';\nimport setTimezone from './setTimezone';\nimport setAdminUser from './setAdminUser';\nimport setAnnotationUser from './setAnnotationUser';\nimport setActivePalette from './setActivePalette';\nimport setColorPalette from './setColorPalette';\nimport setPageReplacementModalFileList from './setPageReplacementModalFileList';\nimport setCurrentPageNumber from './setCurrentPageNumber';\nimport addCustomModal from './addCustomModal';\nimport setCustomNoteFilter from './setCustomNoteFilter';\nimport setInlineCommentFilter from './setInlineCommentFilter';\nimport setCustomPanel from './setCustomPanel';\nimport exportBookmarks from './exportBookmarks';\nimport importBookmarks from './importBookmarks';\nimport setFitMode from './setFitMode';\nimport setHeaderItems from './setHeaderItems';\nimport setIconColor from './setIconColor';\nimport setLanguage from './setLanguage';\nimport setTranslations from './setTranslations';\nimport setLayoutMode from './setLayoutMode';\nimport setMaxZoomLevel from './setMaxZoomLevel';\nimport setMinZoomLevel from './setMinZoomLevel';\nimport setNoteDateFormat from './setNoteDateFormat';\nimport setPrintedNoteDateFormat from './setPrintedNoteDateFormat';\nimport setNotesPanelSort from './setNotesPanelSort';\nimport setPageLabels from './setPageLabels';\nimport setPrintQuality from './setPrintQuality';\nimport setDefaultPrintOptions from './setDefaultPrintOptions';\nimport setSelectedTab from './setSelectedTab';\nimport setSideWindowVisibility from './setSideWindowVisibility';\nimport setNotesPanelSortStrategy from './setNotesPanelSortStrategy';\nimport setSwipeOrientation from './setSwipeOrientation';\nimport setTheme from './setTheme';\nimport setToolbarGroup from './setToolbarGroup';\nimport createToolbarGroup from './createToolbarGroup';\nimport setToolMode from './setToolMode';\nimport setZoomLevel from './setZoomLevel';\nimport setZoomList from './setZoomList';\nimport showOutlineControl from './showOutlineControl';\nimport showWarningMessage from './showWarningMessage';\nimport syncNamespaces from './syncNamespaces';\nimport textPopup from './textPopup';\nimport toggleFullScreen from './toggleFullScreen';\nimport {\n  enableToolDefaultStyleUpdateFromAnnotationPopup,\n  disableToolDefaultStyleUpdateFromAnnotationPopup\n} from './toolDefaultStyleUpdateFromAnnotationPopup';\nimport unregisterTool from './unregisterTool';\nimport updateElement from './updateElement';\nimport updateTool from './updateTool';\nimport useEmbeddedPrint from './useEmbeddedPrint';\nimport setDisplayedSignaturesFilterFunction from './setDisplayedSignaturesFilterFunction';\nimport setMeasurementUnits from './setMeasurementUnits';\nimport setMaxSignaturesCount from './setMaxSignaturesCount';\nimport setSignatureFonts from './setSignatureFonts';\nimport disableReplyForAnnotations from './disableReplyForAnnotations';\nimport getCustomData from './getCustomData';\nimport setCustomMeasurementOverlayInfo from './setCustomMeasurementOverlayInfo';\nimport setNoteTransformFunction from './setNoteTransformFunction';\nimport setCustomNoteSelectionFunction from './setCustomNoteSelectionFunction';\nimport setCustomApplyRedactionsHandler from './setCustomApplyRedactionsHandler';\nimport setCustomMultiViewerSyncHandler from './setCustomMultiViewerSyncHandler';\nimport setCustomMultiViewerAcceptedFileFormats from './setCustomMultiViewerAcceptedFileFormats';\nimport setSearchResults from './setSearchResults';\nimport setActiveResult from './setActiveResult';\nimport setAnnotationContentOverlayHandler from './setAnnotationContentOverlayHandler';\nimport overrideSearchExecution from './overrideSearchExecution';\nimport reactElements from './reactElements';\nimport {\n  addTrustedCertificates,\n  loadTrustList,\n  enableOnlineCRLRevocationChecking,\n  setRevocationProxyPrefix,\n} from './verificationOptions';\nimport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread,\n  setCustomHeader,\n  setCustomEmptyPanel,\n  enableAttachmentPreview,\n  disableAttachmentPreview,\n  disableMultiSelect as notesPanelDisableMultiSelect,\n  setAttachmentHandler,\n  enableMeasurementAnnotationFilter,\n  disableMeasurementAnnotationFilter,\n} from './notesPanel';\nimport {\n  enableMultiselect,\n  disableMultiselect,\n  enableMultiSelect,\n  disableMultiSelect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n} from './thumbnailsPanel';\nimport toggleReaderMode from './toggleReaderMode';\nimport toggleElementVisibility from './toggleElementVisibility';\nimport setAnnotationReadState from './setAnnotationReadState';\nimport getAnnotationReadState from './getAnnotationReadState';\nimport enableClearSearchOnPanelClose from './enableClearSearchOnPanelClose';\nimport disableClearSearchOnPanelClose from './disableClearSearchOnPanelClose';\nimport disableFadePageNavigationComponent from './disableFadePageNavigationComponent';\nimport enableFadePageNavigationComponent from './enableFadePageNavigationComponent';\nimport disablePageDeletionConfirmationModal from './disablePageDeletionConfirmationModal';\nimport enablePageDeletionConfirmationModal from './enablePageDeletionConfirmationModal';\nimport addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\nimport enableDesktopOnlyMode from './enableDesktopOnlyMode';\nimport disableDesktopOnlyMode from './disableDesktopOnlyMode';\nimport isInDesktopOnlyMode from './isInDesktopOnlyMode';\nimport pageManipulationOverlay from './pageManipulationOverlay';\nimport multiPageManipulationControls from './multiPageManipulationControls';\nimport thumbnailControlMenu from './thumbnailControlMenu';\nimport getWatermarkModalOptions from './getWatermarkModalOptions';\nimport enableNoteSubmissionWithEnter from './enableNoteSubmissionWithEnter';\nimport willUseEmbeddedPrinting from 'src/apis/willUseEmbeddedPrinting';\nimport reloadOutline from './reloadOutline';\nimport Fonts from 'src/apis/fonts';\nimport TabManagerAPI from './TabManagerAPI';\nimport getAvailableLanguages from './getAvailableLanguages';\nimport replaceRedactionSearchPattern from './replaceRedactionSearchPattern';\nimport disableApplyCropWarningModal from './disableApplyCropWarningModal';\nimport enableApplyCropWarningModal from './enableApplyCropWarningModal';\nimport disableApplySnippingWarningModal from './disableApplySnippingWarningModal';\nimport enableApplySnippingWarningModal from './enableApplySnippingWarningModal';\nimport setPresetCropDimensions from './setPresetCropDimensions';\nimport setPresetNewPageDimensions from './setPresetNewPageDimensions';\nimport addDateTimeFormat from './addDateTimeFormat';\nimport addRedactionSearchPattern from './addRedactionSearchPattern';\nimport removeRedactionSearchPattern from './removeRedactionSearchPattern';\nimport getAnnotationStylePopupTabs from './getAnnotationStylePopupTabs';\nimport setAnnotationStylePopupTabs from './setAnnotationStylePopupTabs';\nimport { AnnotationKeys, AnnotationStylePopupTabs } from '../constants/map';\nimport getZoomStepFactors from './getZoomStepFactors';\nimport setZoomStepFactors from './setZoomStepFactors';\nimport enableBookmarkIconShortcutVisibility from './enableBookmarkIconShortcutVisibility';\nimport disableBookmarkIconShortcutVisibility from './disableBookmarkIconShortcutVisibility';\nimport showFormFieldIndicators from './showFormFieldIndicators';\nimport hideFormFieldIndicators from './hideFormFieldIndicators';\nimport signSignatureWidget from './signSignatureWidget';\nimport addModularHeaders from './addModularHeaders';\nimport getModularHeader from './getModularHeader';\nimport getModularHeaderList from './getModularHeaderList';\nimport setGroupedItemsGap from './setGroupedItemsGap';\nimport setGroupedItemsJustifyContent from './setGroupedItemsJustifyContent';\nimport setGroupedItemsGrow from './setGroupedItemsGrow';\nimport core from 'core';\nimport { setDefaultOptions } from './outlinesPanel';\nimport Item from './ModularComponents/item';\nimport GroupedItems from './ModularComponents/groupedItems';\nimport ModularHeader from './ModularComponents/modularHeader';\nimport CustomButton from './ModularComponents/customButton';\nimport ToolButton from './ModularComponents/toolButton';\nimport RibbonItem from './ModularComponents/ribbonItem';\nimport RibbonGroup from './ModularComponents/ribbonGroup';\nimport ToggleElementButton from './ModularComponents/toggleElementButton';\nimport ToolGroupButton from './ModularComponents/toolGroupButton';\nimport Zoom from './ModularComponents/zoom';\nimport Flyout from './ModularComponents/flyout';\nimport GroupedTools from './ModularComponents/groupedTools';\nimport setMultiViewerSyncScrollingMode from './setMultiViewerSyncScrollingMode';\nimport setTextSignatureQuality from './setTextSignatureQuality';\nimport getTextSignatureQuality from './getTextSignatureQuality';\nimport {\n  getMeasurementScalePreset,\n  addMeasurementScalePreset,\n  removeMeasurementScalePreset,\n  enableMultipleScalesMode,\n  disableMultipleScalesMode,\n  isMultipleScalesModeEnabled,\n} from './measurementScale';\nimport getLocalizedText from './getLocalizedText';\nimport getDocumentViewer from './getDocumentViewer';\nimport { enableMultiViewerSync, disableMultiViewerSync, isMultiViewerSyncing } from './multiViewerSync';\nimport { setCustomSettings, exportUserSettings, importUserSettings } from './userSettings';\nimport addPanel from './addPanel';\nimport setGrayscaleDarknessFactor from './setGrayscaleDarknessFactor';\nimport { JUSTIFY_CONTENT } from 'constants/customizationVariables';\nimport FlyoutsAPI from './FlyoutsAPI';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { setClickMiddleware } from 'src/apis/setClickMiddleware';\nimport { ClickedItemTypes } from 'helpers/clickTracker';\nimport FeatureFlags from 'constants/featureFlags';\nimport enableFeatureFlag from './enableFeatureFlag';\nimport disableFeatureFlag from './disableFeatureFlag';\nimport enterMultiViewerMode from './enterMultiViewerMode';\nimport exitMultiViewerMode from './exitMultiViewerMode';\n\nexport default (store) => {\n  const CORE_NAMESPACE = 'Core';\n  const UI_NAMESPACE = 'UI';\n  const objForWebViewerCore = {\n    Tools: window.Core.Tools,\n    Annotations: window.Core.Annotations,\n    PartRetrievers: window.Core.PartRetrievers,\n    Actions: window.Core.Actions,\n    PDFNet: window.Core.PDFNet,\n  };\n  const objForWebViewerUI = {\n    FitMode,\n    LayoutMode,\n    Feature,\n    Events,\n    Languages: languageEnum,\n    ToolbarGroup,\n    NotesPanelSortStrategy,\n    Theme,\n    RedactionSearchPatterns,\n    JustifyContent: JUSTIFY_CONTENT,\n    addSearchListener,\n    addSortStrategy: addSortStrategy(store),\n    annotationPopup: annotationPopup(store),\n    closeDocument: closeDocument(store),\n    closeElements: closeElements(store),\n    contextMenuPopup: contextMenuPopup(store),\n    disableElements: disableElements(store),\n    setWv3dPropertiesPanelModelData: setWv3dPropertiesPanelModelData(store),\n    setWv3dPropertiesPanelSchema: setWv3dPropertiesPanelSchema(store),\n    disableFeatures: disableFeatures(store),\n    disableTools: disableTools(store),\n    disableReplyForAnnotations: disableReplyForAnnotations(store),\n    displayErrorMessage: displayErrorMessage(store),\n    disableHighContrastMode: disableHighContrastMode(store),\n    downloadPdf: downloadPdf(store),\n    enableElements: enableElements(store),\n    enableFeatures: enableFeatures(store),\n    enableTools: enableTools(store),\n    focusNote: focusNote(store),\n    getFitMode: getFitMode(store),\n    getLayoutMode: getLayoutMode(store),\n    getToolMode,\n    getZoomLevel,\n    getMaxZoomLevel,\n    getMinZoomLevel,\n    hotkeys,\n    hideOutlineControl: hideOutlineControl(store),\n    isElementDisabled: isElementDisabled(store),\n    isElementOpen: isElementOpen(store),\n    isToolDisabled: isToolDisabled(store),\n    isHighContrastModeEnabled: isHighContrastModeEnabled(store),\n    isFullscreen,\n    loadDocument: loadDocument(store),\n    settingsMenuOverlay: settingsMenuOverlay(store),\n    pageManipulationOverlay: pageManipulationOverlay(store),\n    multiPageManipulationControls: multiPageManipulationControls(store),\n    thumbnailControlMenu: thumbnailControlMenu(store),\n    openElements: openElements(store),\n    print: print(store),\n    printInBackground: printInBackground(store),\n    cancelPrint,\n    registerTool: registerTool(store),\n    removeSearchListener,\n    searchText: searchText(store.dispatch),\n    searchTextFull: searchTextFull(store),\n    overrideSearchExecution,\n    setActiveHeaderGroup: setActiveHeaderGroup(store),\n    setActiveLeftPanel: setActiveLeftPanel(store),\n    setTimezone: setTimezone(store),\n    addCustomModal: addCustomModal(store),\n    addPanel: addPanel(store),\n    showOutlineControl: showOutlineControl(store),\n    setCustomNoteFilter: setCustomNoteFilter(store),\n    setInlineCommentFilter: setInlineCommentFilter(store),\n    setCustomPanel: setCustomPanel(store),\n    exportBookmarks: exportBookmarks(store),\n    extractPagesWithAnnotations,\n    importBookmarks: importBookmarks(store),\n    setFitMode,\n    setHeaderItems: setHeaderItems(store),\n    setIconColor: setIconColor(store),\n    setLanguage: setLanguage(store),\n    setTranslations,\n    setLayoutMode,\n    setMaxZoomLevel: setMaxZoomLevel(store),\n    setMinZoomLevel: setMinZoomLevel(store),\n    setNoteDateFormat: setNoteDateFormat(store),\n    setPrintedNoteDateFormat: setPrintedNoteDateFormat(store),\n    setMeasurementUnits: setMeasurementUnits(store),\n    setPageLabels: setPageLabels(store),\n    setPrintQuality: setPrintQuality(store),\n    setDefaultPrintOptions: setDefaultPrintOptions(store),\n    setNotesPanelSortStrategy: setNotesPanelSortStrategy(store),\n    setSwipeOrientation,\n    setTheme: setTheme(store),\n    setToolbarGroup: setToolbarGroup(store),\n    createToolbarGroup: createToolbarGroup(store),\n    dangerouslySetNoteTransformFunction: setNoteTransformFunction(store),\n    setCustomNoteSelectionFunction: setCustomNoteSelectionFunction(store),\n    setCustomApplyRedactionsHandler: setCustomApplyRedactionsHandler(store),\n    setCustomMultiViewerSyncHandler: setCustomMultiViewerSyncHandler(store),\n    setCustomMultiViewerAcceptedFileFormats: setCustomMultiViewerAcceptedFileFormats(store),\n    setToolMode,\n    setZoomLevel,\n    setZoomList: setZoomList(store),\n    setSearchResults,\n    setActiveResult,\n    textPopup: textPopup(store),\n    toggleElementVisibility: toggleElementVisibility(store),\n    toggleFullScreen,\n    unregisterTool: unregisterTool(store),\n    updateTool: updateTool(store),\n    updateElement: updateElement(store),\n    useEmbeddedPrint: useEmbeddedPrint(store),\n    willUseEmbeddedPrinting: willUseEmbeddedPrinting(store),\n    setMaxSignaturesCount: setMaxSignaturesCount(store),\n    mentions: mentions(store),\n    setCustomMeasurementOverlayInfo: setCustomMeasurementOverlayInfo(store),\n    setSignatureFonts: setSignatureFonts(store),\n    setSelectedTab: setSelectedTab(store),\n\n    setDisplayedSignaturesFilter: setDisplayedSignaturesFilterFunction(store),\n\n    setAnnotationContentOverlayHandler: setAnnotationContentOverlayHandler(store),\n    VerificationOptions: {\n      addTrustedCertificates: addTrustedCertificates(store),\n      loadTrustList: loadTrustList(store),\n      enableOnlineCRLRevocationChecking: enableOnlineCRLRevocationChecking(store),\n      setRevocationProxyPrefix: setRevocationProxyPrefix(store),\n    },\n    Panels: panelNames,\n    ThumbnailsPanel: {\n      selectPages: selectPages(store),\n      unselectPages: unselectPages(store),\n      getSelectedPageNumbers: getSelectedPageNumbers(store),\n      enableMultiselect: enableMultiselect(store),\n      disableMultiselect: disableMultiselect(store),\n      enableMultiSelect: enableMultiSelect(store),\n      disableMultiSelect: disableMultiSelect(store),\n      setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n    },\n    NotesPanel: {\n      enableTextCollapse: enableTextCollapse(store),\n      disableTextCollapse: disableTextCollapse(store),\n      enableReplyCollapse: enableReplyCollapse(store),\n      disableReplyCollapse: disableReplyCollapse(store),\n      disableAutoExpandCommentThread: disableAutoExpandCommentThread(store),\n      enableAutoExpandCommentThread: enableAutoExpandCommentThread(store),\n      setCustomHeader: setCustomHeader(store),\n      setCustomEmptyPanel: setCustomEmptyPanel(store),\n      enableAttachmentPreview: enableAttachmentPreview(store),\n      disableAttachmentPreview: disableAttachmentPreview(store),\n      disableMultiSelect: notesPanelDisableMultiSelect(store),\n      setAttachmentHandler: setAttachmentHandler(store),\n      enableMeasurementAnnotationFilter: enableMeasurementAnnotationFilter(store),\n      disableMeasurementAnnotationFilter: disableMeasurementAnnotationFilter(store),\n    },\n    OutlinesPanel: {\n      setDefaultOptions: setDefaultOptions(store),\n    },\n    addModularHeaders: addModularHeaders(store),\n    getModularHeader: getModularHeader(store),\n    getModularHeaderList: getModularHeaderList(store),\n    Flyouts: FlyoutsAPI(store),\n    setGroupedItemsGap: setGroupedItemsGap(store),\n    setGroupedItemsJustifyContent: setGroupedItemsJustifyContent(store),\n    setGroupedItemsGrow: setGroupedItemsGrow(store),\n    Components: {\n      Item,\n      GroupedItems: GroupedItems(store),\n      ModularHeader: ModularHeader(store),\n      TopHeader: ModularHeader(store),\n      BottomHeader: ModularHeader(store),\n      LeftHeader: ModularHeader(store),\n      RightHeader: ModularHeader(store),\n      CustomButton,\n      ToolButton,\n      ToggleElementButton,\n      RibbonItem,\n      RibbonGroup: RibbonGroup(store),\n      ToolGroupButton,\n      Zoom,\n      Flyout: Flyout(store),\n      GroupedTools\n    },\n    getWatermarkModalOptions: getWatermarkModalOptions(store),\n    // undocumented and deprecated, to be removed in 7.0\n    disableAnnotations: disableAnnotations(store),\n    disableDownload: disableDownload(store),\n    disableElement: disableElement(store),\n    disableFilePicker: disableFilePicker(store),\n    disableLocalStorage,\n    disableMeasurement: disableMeasurement(store),\n    disableNotesPanel: disableNotesPanel(store),\n    disableNoteSubmissionWithEnter: disableNoteSubmissionWithEnter(store),\n    disablePrint: disablePrint(store),\n    disableRedaction: disableRedaction(store),\n    disableTextSelection: disableTextSelection(store),\n    disableTouchScrollLock,\n    enableAnnotations: enableAnnotations(store),\n    enableDownload: enableDownload(store),\n    enableElement: enableElement(store),\n    enableFilePicker: enableFilePicker(store),\n    enableHighContrastMode: enableHighContrastMode(store),\n    enableLocalStorage,\n    enableMeasurement: enableMeasurement(store),\n    enableNotesPanel: enableNotesPanel(store),\n    enableNoteSubmissionWithEnter: enableNoteSubmissionWithEnter(store),\n    enablePrint: enablePrint(store),\n    enableRedaction: enableRedaction(store),\n    enableTextSelection: enableTextSelection(store),\n    enableTool: enableTool(store),\n    enableTouchScrollLock,\n    enableNativeScrolling,\n    getAnnotationUser,\n    getCurrentPageNumber: getCurrentPageNumber(store),\n    getCurrentLanguage: getCurrentLanguage(store),\n    getLocalizedText,\n    getPageCount: getPageCount(store),\n    getShowSideWindow: getShowSideWindow(store),\n    getSideWindowVisibility: getSideWindowVisibility(store),\n    setNotesPanelSort: setNotesPanelSort(store),\n    setActivePalette: setActivePalette(store),\n    setColorPalette: setColorPalette(store),\n    setPageReplacementModalFileList: setPageReplacementModalFileList(store),\n    disableTool: disableTool(store),\n    enableAllElements: enableAllElements(store),\n    goToFirstPage,\n    goToLastPage: goToLastPage(store),\n    goToNextPage: goToNextPage(store),\n    goToPrevPage: goToPrevPage(store),\n    isAdminUser,\n    isReadOnly,\n    openElement: openElement(store),\n    rotateClockwise,\n    rotateCounterClockwise,\n    saveAnnotations: saveAnnotations(store),\n    setAdminUser,\n    setAnnotationUser,\n    setCurrentPageNumber,\n    getCustomData,\n    toggleReaderMode: toggleReaderMode(store),\n    enableToolDefaultStyleUpdateFromAnnotationPopup: enableToolDefaultStyleUpdateFromAnnotationPopup(store),\n    disableToolDefaultStyleUpdateFromAnnotationPopup: disableToolDefaultStyleUpdateFromAnnotationPopup(store),\n    addEventListener,\n    removeEventListener,\n    syncNamespaces,\n    Fonts: Fonts(store),\n    reloadOutline: reloadOutline(store),\n    TabManager: TabManagerAPI(store),\n    getAvailableLanguages,\n    replaceRedactionSearchPattern: replaceRedactionSearchPattern(store),\n    disableApplyCropWarningModal: disableApplyCropWarningModal(store),\n    enableApplyCropWarningModal: enableApplyCropWarningModal(store),\n    disableApplySnippingWarningModal: disableApplySnippingWarningModal(store),\n    enableApplySnippingWarningModal: enableApplySnippingWarningModal(store),\n    setPresetCropDimensions: setPresetCropDimensions(store),\n    setPresetNewPageDimensions: setPresetNewPageDimensions(store),\n    addDateTimeFormat: addDateTimeFormat(store),\n    addRedactionSearchPattern: addRedactionSearchPattern(store),\n    removeRedactionSearchPattern: removeRedactionSearchPattern(store),\n    setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n    enableBookmarkIconShortcutVisibility: enableBookmarkIconShortcutVisibility(store),\n    disableBookmarkIconShortcutVisibility: disableBookmarkIconShortcutVisibility(store),\n    showFormFieldIndicators: showFormFieldIndicators(store),\n    hideFormFieldIndicators: hideFormFieldIndicators(store),\n    signSignatureWidget,\n    getMeasurementScalePreset: getMeasurementScalePreset(store),\n    addMeasurementScalePreset: addMeasurementScalePreset(store),\n    removeMeasurementScalePreset: removeMeasurementScalePreset(store),\n    enableMultipleScalesMode: enableMultipleScalesMode(store),\n    disableMultipleScalesMode: disableMultipleScalesMode(store),\n    isMultipleScalesModeEnabled: isMultipleScalesModeEnabled(store),\n    enableMultiViewerSync: enableMultiViewerSync(store),\n    disableMultiViewerSync: disableMultiViewerSync(store),\n    isMultiViewerSyncing: isMultiViewerSyncing(store),\n    setCustomSettings: setCustomSettings(store),\n    exportUserSettings: exportUserSettings(store),\n    importUserSettings: importUserSettings(store),\n    setGrayscaleDarknessFactor,\n    setSideWindowVisibility: setSideWindowVisibility(store),\n    setMultiViewerSyncScrollingMode: setMultiViewerSyncScrollingMode(store),\n    setTextSignatureQuality: setTextSignatureQuality(store),\n    getTextSignatureQuality: getTextSignatureQuality(store),\n    setClickMiddleware,\n    ClickedItemTypes,\n    FeatureFlags,\n    enableFeatureFlag: enableFeatureFlag(store),\n    disableFeatureFlag: disableFeatureFlag(store),\n\n    // undocumented\n    loadedFromServer: false,\n    serverFailed: false,\n    i18n: i18next,\n    showWarningMessage: showWarningMessage(store),\n    getBBAnnotManager,\n    selectors: getSelectors(store),\n    reactElements,\n    enableClearSearchOnPanelClose: enableClearSearchOnPanelClose(store),\n    disableClearSearchOnPanelClose: disableClearSearchOnPanelClose(store),\n    disableNativeScrolling,\n    setAnnotationReadState: setAnnotationReadState(store),\n    getAnnotationReadState: getAnnotationReadState(store),\n    disableFadePageNavigationComponent: disableFadePageNavigationComponent(store),\n    enableFadePageNavigationComponent: enableFadePageNavigationComponent(store),\n    enableDesktopOnlyMode: enableDesktopOnlyMode(store),\n    disableDesktopOnlyMode: disableDesktopOnlyMode(store),\n    isInDesktopOnlyMode: isInDesktopOnlyMode(store),\n    disablePageDeletionConfirmationModal: disablePageDeletionConfirmationModal(store),\n    enablePageDeletionConfirmationModal: enablePageDeletionConfirmationModal(store),\n    getAnnotationStylePopupTabs,\n    setAnnotationStylePopupTabs: setAnnotationStylePopupTabs(store),\n    AnnotationKeys,\n    AnnotationStylePopupTabs,\n    getZoomStepFactors: getZoomStepFactors(store),\n    setZoomStepFactors: setZoomStepFactors(store),\n    getDocumentViewer,\n    enterMultiViewerMode: enterMultiViewerMode(store),\n    exitMultiViewerMode: exitMultiViewerMode(store),\n  };\n  const documentViewer = core.getDocumentViewer(1);\n\n  getInstanceNode().instance = {\n    // keys needed for webviewer.js\n    CORE_NAMESPACE_KEY: CORE_NAMESPACE,\n    UI_NAMESPACE_KEY: UI_NAMESPACE,\n    [CORE_NAMESPACE]: {\n      ...objForWebViewerCore,\n      ...window.Core,\n      documentViewer,\n      annotationManager: documentViewer.getAnnotationManager(),\n      getDocumentViewers: () => core.getDocumentViewers(),\n    },\n    [UI_NAMESPACE]: objForWebViewerUI,\n  };\n};\n","export default (docType) => (docType === 'auto' || docType === 'wait'\n  ? window.Core.getDefaultBackendType()\n  : Promise.resolve(docType));\n","import PropTypes from 'prop-types';\n\nconst wildCardMatch = (allowedOrigins, origin) => allowedOrigins.filter((allowedOrigin) => wildcardToRegExp(allowedOrigin).test(origin)).length;\n\n// Creates a RegExp from the given string, converting asterisks to .* expressions,\n// and escaping all other characters.\nconst wildcardToRegExp = (s) => {\n  return new RegExp(`^${s.split(/\\*+/).map(regExpEscape).join('.*')}$`);\n};\n\n// RegExp-escapes all characters in the given string\nconst regExpEscape = (s) => {\n  return s.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nwildCardMatch.PropTypes = {\n  allowedOrigins: PropTypes.array,\n  origin: PropTypes.string\n};\n\nexport default wildCardMatch;","import getHashParameters from 'helpers/getHashParameters';\nimport wildCardMatch from 'helpers/wildCardMatch';\n\nconst loadScript = (scriptSrc, warning) => new Promise((resolve) => {\n  if (!scriptSrc) {\n    return resolve();\n  }\n\n  const script = document.createElement('script');\n  script.type = 'text/javascript';\n  script.onload = function() {\n    resolve();\n  };\n  script.onerror = function() {\n    if (warning) {\n      console.warn(warning);\n    }\n    resolve();\n  };\n  script.src = scriptSrc;\n  document.getElementsByTagName('head')[0].appendChild(script);\n});\n\n// communicates with the parent window to get the URL of the config file and loads it\n// ignore subsequent messages after successfully loads a config file\nconst loadConfig = () => new Promise((resolve) => {\n  if (window.parent === window || window.isApryseWebViewerWebComponent) {\n    // resolve immediately if we are developing the UI on its own\n    resolve();\n  } else {\n    window.addEventListener('message', async function loadConfig(e) {\n      if (e.data.type === 'responseConfig') {\n        const { value } = e.data;\n\n        try {\n          if (value) {\n            if (e.origin !== window.location.origin) {\n              const response = await fetch('configorigin.txt');\n\n              let data = '';\n              if (response.status === 200) {\n                data = await response.text();\n              }\n\n              data = data.replace(/\\r|\\t/g, '\\n');\n              const allowedOrigins = data.split('\\n').filter(Boolean);\n              if (!wildCardMatch(allowedOrigins, `${e.origin}`)) {\n                console.warn(`Config file requested to be loaded by origin ${e.origin}. Please include this origin inside lib/ui/configorigin.txt to allow it to request config files.`);\n                return;\n              }\n            }\n\n            await loadScript(e.data.value, 'Config script could not be loaded');\n            window.removeEventListener('message', loadConfig);\n          }\n        } finally {\n          resolve();\n        }\n      }\n    });\n\n    window.parent.postMessage({\n      type: 'requestConfig',\n      id: parseInt(getHashParameters('id'), 10),\n    }, '*');\n  }\n});\n\nexport default loadScript;\nexport { loadConfig };","function _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 { defaults, makePromise } from './utils.js';\nimport request from './request.js';\n\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      this._readAny(languages, languages, namespaces, namespaces, callback);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      this._readAny([language], language, [namespace], namespace, callback);\n    }\n  }, {\n    key: \"_readAny\",\n    value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n      var _this2 = this;\n\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      loadPath = makePromise(loadPath);\n      loadPath.then(function (resolvedLoadPath) {\n        if (!resolvedLoadPath) return callback(null, {});\n\n        var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n          lng: languages.join('+'),\n          ns: namespaces.join('+')\n        });\n\n        _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n      });\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this3 = this;\n\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this3.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this4 = this;\n\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this4.options.addPath;\n\n        if (typeof _this4.options.addPath === 'function') {\n          addPath = _this4.options.addPath(lng, namespace);\n        }\n\n        var url = _this4.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n\n        _this4.options.request(_this4.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this5 = this;\n\n      var _this$services = this.services,\n          backendConnector = _this$services.backendConnector,\n          languageUtils = _this$services.languageUtils,\n          logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n      var toLoad = [];\n\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this5.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import i18next from 'i18next';\nimport HttpApi from 'i18next-http-backend';\nimport languageRules from '../constants/languageRules';\nimport getAvailableLanguages from '../apis/getAvailableLanguages';\n\n// https://github.com/isaachinman/next-i18next/issues/562\ni18next.languages = getAvailableLanguages();\n// this is required for Cordova https://github.com/i18next/i18next-http-backend/issues/23#issuecomment-718929822\nconst requestWithXmlHttpRequest = (options, url, payload, callback) => {\n  try {\n    const request = new XMLHttpRequest();\n    request.open('GET', url, 1);\n    if (!options.crossDomain) {\n      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n    request.withCredentials = !!options.withCredentials;\n    if (payload) {\n      request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n    if (request.overrideMimeType) {\n      request.overrideMimeType('application/json');\n    }\n    let headers = options.customHeaders;\n    headers = typeof headers === 'function' ? headers() : headers;\n    if (headers) {\n      for (const i in headers) {\n        request.setRequestHeader(i, headers[i]);\n      }\n    }\n    request.onreadystatechange = () => {\n      // in android webview loading a file is status status 0\n      request.readyState > 3 && callback(request.status >= 400 ? request.statusText : null, { status: request.status || 200, data: request.responseText });\n    };\n    request.send(payload);\n  } catch (e) {\n    console.warn(e);\n  }\n};\n\nexport default (state) => {\n  const options = {\n    fallbackLng: 'en',\n    react: {\n      useSuspense: false,\n    },\n  };\n  const callback = (err, t) => {\n    window.Core.Annotations.Utilities.setAnnotationSubjectHandler((type) => t(`annotation.${type}`),\n    );\n\n    window.Core.Tools.SignatureCreateTool.setTextHandler(() => t('message.signHere'),\n    );\n\n    window.Core.Tools.SignatureCreateTool.setInitialsTextHandler(() => t('option.type.initials'),\n    );\n\n    window.Core.Tools.FreeTextCreateTool.setTextHandler(() => t('message.insertTextHere'),\n    );\n\n    window.Core.Tools.CalloutCreateTool.setTextHandler(() => t('message.insertTextHere'),\n    );\n  };\n\n  if (state.advanced.disableI18n) {\n    i18next.init(options, callback);\n  } else {\n    // eslint-disable-next-line no-undef, camelcase\n    const i18nURL = `${window.isApryseWebViewerWebComponent ? __webpack_public_path__ : './'}i18n/{{ns}}-{{lng}}.json`;\n    i18next.use(HttpApi).init(\n      {\n        ...options,\n        backend: {\n          loadPath: i18nURL,\n          request: requestWithXmlHttpRequest,\n        },\n      },\n      callback,\n    );\n  }\n\n  // set custom rules. since i18next doesn't support (i.e 'zh-ch', 'zh-tw', or 'pt-br')\n  // have to look inside the i18n source code \"getRule\" function to see what rule we can copy\n  Object.keys(languageRules).forEach((lang) => {\n    if (languageRules[lang].i18next) {\n      const rule = i18next.services.pluralResolver.getRule(languageRules[lang].i18next);\n      i18next.services.pluralResolver.addRule(lang, rule);\n    }\n  });\n};\n","import getHashParameters from 'helpers/getHashParameters';\nimport packageConfig from '../../package.json';\n\n/* eslint-disable no-console */\nexport default () => {\n  // log UI and Core versions and warn/error if necessary\n  const coreVersion = window.Core.getVersion();\n  const coreBuild = window.Core.getBuild();\n  const uiVersion = packageConfig.version;\n  const webViewerJSVersion = getHashParameters('webViewerJSVersion', null);\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const fullAPI = !!getHashParameters('pdfnet', false);\n  const disableLogs = getHashParameters('disableLogs', false);\n  if (disableLogs) {\n    return;\n  }\n\n  if (coreVersion && uiVersion) {\n    // we are using semantic versioning (ie ###.###.###) so the first number is the major version, follow by the minor version, and the patch number\n    const [coreMajorVersion, coreMinorVersion] = coreVersion\n      .split('.')\n      .map((version) => parseInt(version, 10));\n    const [uiMajorVersion, uiMinorVersion] = uiVersion\n      .split('.')\n      .map((version) => parseInt(version, 10));\n\n    let webViewerJSMajorVersion = null;\n    let webViewerJSMinorVersion = null;\n    if (webViewerJSVersion) {\n      [webViewerJSMajorVersion, webViewerJSMinorVersion] = webViewerJSVersion\n        .split('.')\n        .map((version) => parseInt(version, 10));\n    }\n\n    if (console.table) {\n      const versions = {\n        'UI version': uiVersion,\n        'Core version': coreVersion,\n        'webviewer.min.js': webViewerJSVersion,\n        'Build': coreBuild,\n        'WebViewer Server': wvServer,\n        'Full API': fullAPI,\n      };\n      console.table(versions);\n    } else {\n      console.log(\n        `[WebViewer] UI version: ${uiVersion}, Core version: ${coreVersion}, Build: ${coreBuild}, WebViewer Server: ${wvServer}, Full API: ${fullAPI}`,\n      );\n    }\n\n    // if there's any major version differences, log with console.error\n    // if there's only minor version differences, log with console.warn\n    const webViewerComponents = [\n      {\n        name: 'Core',\n        version: coreVersion,\n        majorVersion: coreMajorVersion,\n        minorVersion: coreMinorVersion\n      },\n      {\n        name: 'UI',\n        version: uiVersion,\n        majorVersion: uiMajorVersion,\n        minorVersion: uiMinorVersion\n      },\n    ];\n\n    if (webViewerJSVersion === null) {\n      console.error(\n        'WebViewerJS version not found. Please update webviewer.min.js to the latest version.',\n      );\n    } else {\n      webViewerComponents.push({\n        name: 'webviewer.min.js',\n        version: webViewerJSVersion,\n        majorVersion: webViewerJSMajorVersion,\n        minorVersion: webViewerJSMinorVersion,\n      });\n    }\n\n    webViewerComponents.sort((a, b) => {\n      let comparison = null;\n      if (a.majorVersion !== b.majorVersion) {\n        comparison = b.majorVersion - a.majorVersion;\n      } else if (a.minorVersion !== b.minorVersion) {\n        comparison = b.minorVersion - a.minorVersion;\n      }\n      return comparison;\n    });\n\n    let warningText = '[WebViewer] Version Mismatch: ';\n    const majorVersionOutdatedComponents = [];\n    const minorVersionOutdatedComponents = [];\n    const latestComponent = webViewerComponents[0];\n\n    webViewerComponents.forEach((component) => {\n      if (latestComponent.majorVersion > component.majorVersion) {\n        majorVersionOutdatedComponents.push(component.name);\n      } else if (latestComponent.minorVersion > component.minorVersion) {\n        minorVersionOutdatedComponents.push(component.name);\n      }\n    });\n    if (majorVersionOutdatedComponents.length) {\n      const outdatedComponents =\n        majorVersionOutdatedComponents.concat(minorVersionOutdatedComponents);\n      warningText += `${outdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.error(warningText);\n    } else if (minorVersionOutdatedComponents.length) {\n      warningText += `${minorVersionOutdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.warn(warningText);\n    }\n  }\n};","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport { I18nextProvider } from 'react-i18next';\nimport i18next from 'i18next';\nimport thunk from 'redux-thunk';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport rootReducer from 'reducers/rootReducer';\nimport { persistStore } from 'redux-persist';\nimport { PersistGate } from 'redux-persist/integration/react';\n\nimport core from 'core';\nimport actions from 'actions';\nimport App from 'components/App';\nimport { workerTypes } from 'constants/types';\nimport defaultTool from 'constants/defaultTool';\nimport defineWebViewerInstanceUIAPIs from 'src/apis';\n\nimport getBackendPromise from 'helpers/getBackendPromise';\nimport loadCustomCSS from 'helpers/loadCustomCSS';\nimport loadScript, { loadConfig } from 'helpers/loadScript';\nimport setupLoadAnnotationsFromServer from 'helpers/setupLoadAnnotationsFromServer';\nimport eventHandler from 'helpers/eventHandler';\nimport setupI18n from 'helpers/setupI18n';\nimport setAutoSwitch from 'helpers/setAutoSwitch';\nimport setUserPermission from 'helpers/setUserPermission';\nimport logDebugInfo from 'helpers/logDebugInfo';\nimport getHashParameters from 'helpers/getHashParameters';\nimport { addDocumentViewer } from 'helpers/documentViewerHelper';\nimport setEnableAnnotationNumbering from 'helpers/setEnableAnnotationNumbering';\nimport retargetEvents from 'react-shadow-dom-retarget-events';\n\nimport './index.scss';\nimport getRootNode from 'helpers/getRootNode';\nimport openURI from './helpers/openURI';\n\nif (window.isApryseWebViewerWebComponent) {\n  if (window.webViewerPath.lastIndexOf('/') !== window.webViewerPath.length - 1) {\n    window.webViewerPath += '/';\n  }\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = `${window.webViewerPath}ui/`;\n}\n\nconst middleware = [thunk];\n\nlet composeEnhancer = function noopStoreComposeEnhancer(middleware) {\n  return middleware;\n};\n\nif (process.env.NODE_ENV === 'development') {\n  const isSpamDisabled = localStorage.getItem('spamDisabled') === 'true';\n  if (!isSpamDisabled) {\n    // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require\n    const { createLogger } = require('redux-logger');\n    middleware.push(createLogger({ collapsed: true }));\n  }\n  // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require\n  const { composeWithDevTools } = require('redux-devtools-extension/logOnlyInProduction');\n  composeEnhancer = composeWithDevTools({});\n}\n\n\nconst store = createStore(rootReducer, composeEnhancer(applyMiddleware(...middleware)));\nconst persistor = persistStore(store);\n\nif (process.env.NODE_ENV === 'development' && module.hot) {\n  module.hot.accept('reducers/rootReducer', () => {\n    // eslint-disable-next-line global-require\n    const updatedReducer = require('reducers/rootReducer').default;\n    store.replaceReducer(updatedReducer);\n  });\n\n  module.hot.accept();\n}\n\nif (process.env.NODE_ENV === 'development') {\n  window.disableSpam = () => {\n    localStorage.setItem('spamDisabled', 'true');\n    location.reload();\n  };\n\n  window.enableSpam = () => {\n    localStorage.setItem('spamDisabled', 'false');\n    location.reload();\n  };\n}\n\nif (window.CanvasRenderingContext2D) {\n  let fullAPIReady = Promise.resolve();\n  const state = store.getState();\n\n  if (state.advanced.fullAPI) {\n    window.Core.enableFullPDF();\n    if (window.isApryseWebViewerWebComponent) {\n      fullAPIReady = loadScript(`${window.webViewerPath}core/pdf/PDFNet.js`);\n    } else {\n      fullAPIReady = loadScript('../core/pdf/PDFNet.js');\n    }\n  }\n\n\n  if (getHashParameters('disableLogs', false)) {\n    window.Core.disableLogs(true);\n  }\n\n  if (getHashParameters('disableObjectURLBlobs', false)) {\n    window.Core.disableObjectURLBlobs(getHashParameters('disableObjectURLBlobs', false));\n  }\n\n  window._disableStreaming = getHashParameters('disableStreaming', false);\n  if (window.isApryseWebViewerWebComponent) {\n    window.Core.setWorkerPath(`${window.webViewerPath}core`);\n    window.Core.setResourcesPath(`${window.webViewerPath}core/assets`);\n    loadScript(`${window.webViewerPath}core/pdf/PDFNetLean.js`);\n  } else {\n    window.Core.setWorkerPath('../core');\n    window.Core.setResourcesPath('../core/assets');\n    loadScript('../core/pdf/PDFNetLean.js');\n  }\n\n  try {\n    const isUsingSharedWorker = state.advanced.useSharedWorker === 'true' || state.advanced.useSharedWorker === true;\n    if (isUsingSharedWorker) {\n      let workerTransportPromise;\n      if (window.parent.WebViewer && !window.isApryseWebViewerWebComponent) {\n        workerTransportPromise = window.parent.WebViewer.workerTransportPromise(window.frameElement);\n      } else if (window.isApryseWebViewerWebComponent && window.apryseWorkerTransportPromise) {\n        workerTransportPromise = window.apryseWorkerTransportPromise;\n      }\n      // originally the option was just for the pdf worker transport promise, now it can be an object\n      // containing both the pdf and office promises\n      if (workerTransportPromise.pdf || workerTransportPromise.office) {\n        window.Core.setWorkerTransportPromise(workerTransportPromise);\n      } else {\n        window.Core.setWorkerTransportPromise({ 'pdf': workerTransportPromise });\n      }\n    }\n  } catch (e) {\n    console.warn(e);\n    if (e.name === 'SecurityError') {\n      console.warn('workerTransportPromise option cannot be used with CORS');\n    }\n  }\n\n  const backendType = getHashParameters('pdf');\n  if (backendType) {\n    window.Core.forceBackendType(backendType);\n  }\n\n  const { enableOptimizedWorkers } = state.advanced;\n\n  if (!enableOptimizedWorkers) {\n    window.Core.disableOptimizedWorkers();\n  }\n\n  const { preloadWorker } = state.advanced;\n\n  loadCustomCSS(state.advanced.customCSS);\n\n  logDebugInfo();\n  const documentViewer = addDocumentViewer(1);\n\n  documentViewer.setOpenURIHandler((uri, isOpenInNewWindow) => {\n    store.dispatch(actions.showWarningMessage({\n      title: 'warning.connectToURL.title',\n      message: 'warning.connectToURL.message',\n      onConfirm: () => Promise.resolve(),\n      onSecondary: () => {\n        openURI(uri, isOpenInNewWindow);\n        return Promise.resolve();\n      },\n      confirmBtnText: 'action.cancel',\n      secondaryBtnText: 'action.confirm',\n      secondaryBtnClass: 'secondary-btn-custom',\n      templateStrings: {\n        uri,\n      },\n      modalClass: 'connect-to-url-modal'\n    }));\n  });\n\n  if (getHashParameters('hideDetachedReplies', false)) {\n    documentViewer.getAnnotationManager().hideDetachedReplies();\n  }\n\n  defineWebViewerInstanceUIAPIs(store);\n\n  setupI18n(state);\n  setEnableAnnotationNumbering(state);\n  setUserPermission(state);\n  setAutoSwitch();\n  core.setToolMode(defaultTool);\n\n  const { addEventHandlers, removeEventHandlers } = eventHandler(store);\n\n  const getWorkersToLoad = (preloadWorker) => {\n    const { PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR, ALL } = workerTypes;\n    if (preloadWorker === ALL) {\n      return [PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR];\n    }\n    const workersToLoad = [];\n\n    const shouldLoadOfficeWorker = Array.isArray(preloadWorker) && preloadWorker.includes(OFFICE)\n      || typeof preloadWorker === 'string' && preloadWorker.match(/(office[,|\\s]|office$)/g);\n    if (shouldLoadOfficeWorker) {\n      workersToLoad.push(OFFICE);\n    }\n\n    [PDF, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR].forEach((workerType) => {\n      if (preloadWorker.includes(workerType)) {\n        workersToLoad.push(workerType);\n      }\n    });\n\n    return workersToLoad;\n  };\n\n  const initTransports = () => {\n    const { PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR } = workerTypes;\n    const workersToLoad = getWorkersToLoad(preloadWorker);\n\n    if (workersToLoad.includes(PDF)) {\n      getBackendPromise(getHashParameters('pdf', 'auto')).then((pdfType) => {\n        window.Core.initPDFWorkerTransports(pdfType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(OFFICE)) {\n      getBackendPromise(getHashParameters('office', 'auto')).then((officeType) => {\n        window.Core.initOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(OFFICE_EDITOR)) {\n      window.Core.initOfficeEditorWorkerTransports({\n        workerLoadingProgress: (percent) => {\n          store.dispatch(actions.setLoadingProgress(percent));\n        },\n      }, window.sampleL);\n    }\n\n    if (workersToLoad.includes(LEGACY_OFFICE)) {\n      getBackendPromise(getHashParameters('legacyOffice', 'auto')).then((officeType) => {\n        window.Core.initLegacyOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(CONTENT_EDIT)) {\n      window.Core.ContentEdit.preloadWorker(documentViewer.getContentEditManager());\n    }\n  };\n\n  fullAPIReady.then(() => loadConfig()).then(() => {\n    if (preloadWorker) {\n      initTransports();\n    }\n\n    if (getHashParameters('disableVirtualDisplayMode', false)) {\n      const displayMode = documentViewer.getDisplayModeManager();\n      displayMode.disableVirtualDisplayMode();\n    }\n\n    if (getHashParameters('enableViewStateAnnotations', false)) {\n      const tool = documentViewer.getTool(window.Core.Tools.ToolNames.STICKY);\n      tool?.enableViewStateSaving();\n    }\n\n    setupLoadAnnotationsFromServer(store);\n\n    ReactDOM.render(\n      <Provider store={store}>\n        <PersistGate loading={null} persistor={persistor}>\n          <I18nextProvider i18n={i18next}>\n            <DndProvider backend={HTML5Backend}>\n              <App removeEventHandlers={removeEventHandlers} />\n            </DndProvider>\n          </I18nextProvider>\n        </PersistGate>\n      </Provider>,\n      getRootNode().getElementById('app'),\n    );\n    window.isApryseWebViewerWebComponent && retargetEvents(getRootNode());\n  });\n  addEventHandlers();\n}\n\n\nwindow.addEventListener('hashchange', () => {\n  window.location.reload();\n});\n\n/* The following adds a data attribute to `<html>` when user is keyboard navigating. */\n\nfunction onTab(event) {\n  if (event.key === 'Tab') {\n    document.documentElement.setAttribute('data-tabbing', 'true');\n    window.removeEventListener('keydown', onTab);\n    window.addEventListener('mousedown', onMouse);\n  }\n}\n\nfunction onMouse() {\n  document.documentElement.removeAttribute('data-tabbing');\n  window.removeEventListener('mousedown', onMouse);\n  window.addEventListener('keydown', onTab);\n}\n\nwindow.addEventListener('keydown', onTab);\n","import getRootNode from 'helpers/getRootNode';\n\nexport default (CSSFile) => {\n  if (CSSFile) {\n    const link = document.createElement('link');\n\n    link.rel = 'stylesheet';\n    link.type = 'text/css';\n    link.href = CSSFile;\n    if (window.isApryseWebViewerWebComponent) {\n      getRootNode().appendChild(link);\n    } else {\n      document.getElementsByTagName('head')[0].appendChild(link);\n    }\n  }\n};","export default function openURI(uri, isOpenInNewWindow) {\n  let target = uri.trim();\n\n  // if it has :// then assume it's using an internal protocol and don't change the link\n  if (target.indexOf('://') === -1) {\n    if (target.indexOf('@') !== -1) {\n      target = `mailto:${target}`;\n    } else {\n      // unknown or missing URI scheme, default to http://\n      target = `http://${target}`;\n    }\n  }\n\n  if (isOpenInNewWindow) {\n    const newWindow = window.open(target);\n    if (newWindow) {\n      newWindow.opener = null;\n    }\n  } else {\n    window.location = target;\n  }\n}","/**\n * Closes the document that's currently opened.\n * @method UI.closeDocument\n * @return {Promise<void>} A promise resolved after document is closed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      setTimeout(function() {\n        instance.UI.closeDocument().then(function() {\n          console.log('Document is closed');\n        });\n      }, 3000);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default () => () => core.closeDocument();\n","import core from 'core';\n\nexport default (state) => {\n  if (state.viewer.isAnnotationNumberingEnabled) {\n    core.enableAnnotationNumbering();\n  }\n};","import core from 'core';\n\nexport default (state) => {\n  core.setCurrentUser(state.user.name);\n  core.setIsAdminUser(state.user.isAdmin);\n};","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default () => {\n  if (isIOS || isAndroid) {\n    window.Core.Tools.Tool.ENABLE_AUTO_SWITCH = false;\n  }\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (store) => {\n  const state = store.getState();\n  let { serverUrl } = state.advanced;\n  const { serverUrlHeaders } = state.advanced;\n\n  if (!serverUrl) {\n    return;\n  }\n\n  const getAnnotsFromServer = (originalData, callback) => {\n    const documentId = core.getDocument().getDocumentId();\n    if (getInstanceNode().instance.UI.serverFailed) {\n      callback(originalData);\n      return;\n    }\n    if (getInstanceNode().instance.UI.loadedFromServer) {\n      callback('');\n      return;\n    }\n\n    // make sure we are not getting cached responses\n    if (serverUrl.indexOf('?') === -1) {\n      serverUrl += `?_=${Date.now()}`;\n    } else {\n      serverUrl += `&_=${Date.now()}`;\n    }\n\n    if (documentId) {\n      serverUrl += `&did=${documentId}`;\n    }\n\n    serverUrl = documentId ? `${serverUrl}?did=${documentId}` : serverUrl;\n\n    fetch(serverUrl, {\n      headers: serverUrlHeaders,\n      credentials: 'include'\n    })\n      .then((response) => {\n        if (response.ok) {\n          return response.text();\n        }\n\n        return Promise.reject(response);\n      })\n      .then((data) => {\n        if (data !== null && data !== undefined) {\n          getInstanceNode().instance.UI.loadedFromServer = true;\n          callback(data);\n        } else {\n          getInstanceNode().instance.UI.serverFailed = true;\n          callback(originalData);\n        }\n      })\n      .catch((e) => {\n        getInstanceNode().instance.UI.serverFailed = true;\n        console.warn(\n          `Error ${e.status}: Annotations could not be loaded from the server.`,\n        );\n        callback(originalData);\n      });\n  };\n\n  core.setInternalAnnotationsTransform(getAnnotsFromServer);\n  core.setPagesUpdatedInternalAnnotationsTransform(\n    (origData, pages, callback) => {\n      getAnnotsFromServer(origData, callback);\n    },\n  );\n  core.addEventListener('documentLoaded', function() {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getDocument().getType() === workerTypes.OFFICE) {\n      getAnnotsFromServer(null, function(data) {\n        documentViewer.getAnnotationManager().importAnnotations(data);\n      });\n    }\n  });\n};\n","/**\n * Returns an object describing whether the object is visible. It will detect if\n * the item is cut off by either the top or bottom of the window, or by the\n * container passed in.\n * @param element The element to detect scroll position of.\n * @param container The scroll container which could be cutting off the item.\n */\nexport function isScrolledIntoView(element, container) {\n    if (!element || !container)\n        return { isVisible: true, isAbove: false, isBelow: false };\n    var elem = element.getBoundingClientRect();\n    var cont = container.getBoundingClientRect();\n    var elemTop = elem.top;\n    var elemBottom = elem.bottom;\n    // Can be cut off by container, or by window if container extends outside.\n    var contTop = Math.max(cont.top, 0);\n    var contBottom = Math.min(cont.bottom, window.innerHeight);\n    // Only completely visible elements return true:\n    var isAbove = elemTop < contTop;\n    var isBelow = elemBottom > contBottom;\n    var isVisible = !isAbove && !isBelow;\n    return { isVisible: isVisible, isAbove: isAbove, isBelow: isBelow };\n}\n/**\n * Get a sibling in the DOM based on an index diff.\n * @param element The element to find the sibling of.\n * @param indexDiff The index diff of the sibling to find (ex: 1 returns next sibling).\n */\nexport function getSibling(element, indexDiff) {\n    if (!element || !element.parentElement)\n        return undefined;\n    var siblings = Array.from(element.parentElement.children);\n    var nodeIndex = siblings.indexOf(element);\n    // Get the item occupying the previous index location.\n    var sibling = siblings[nodeIndex + indexDiff];\n    return sibling;\n}\n/**\n * Generates a click mouse event from an input keyboard event.\n * @param keyboardEvent The keyboard event to translate into a mouse event.\n */\nexport function generateClickEventFromKeyboardEvent(keyboardEvent) {\n    var clickEvent = new MouseEvent('click', {\n        bubbles: keyboardEvent.bubbles,\n        cancelable: keyboardEvent.cancelable,\n        altKey: keyboardEvent.altKey,\n        shiftKey: keyboardEvent.shiftKey,\n        ctrlKey: keyboardEvent.ctrlKey,\n        metaKey: keyboardEvent.metaKey,\n    });\n    return clickEvent;\n}\n/**\n * A string for querying all focusable elements.\n */\nexport var focusableElementDomString = [\n    'a[href]',\n    'area[href]',\n    'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n    'select:not([disabled]):not([aria-hidden])',\n    'textarea:not([disabled]):not([aria-hidden])',\n    'button:not([disabled]):not([aria-hidden])',\n    'iframe',\n    'object',\n    'embed',\n    '[contenteditable]',\n    '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n","import { useCallback, useState } from 'react';\n/**\n * Returns handlers for onFocus and onBlur, as well as a property focused which\n * is true if the component or any child is being focused.\n * @param onFocus The onFocus prop if it's available.\n * @param onBlur The onBlur prop if it's available.\n */\nexport function useFocus(onFocus, onBlur) {\n    var _a = useState(false), focused = _a[0], setFocused = _a[1];\n    var handleOnFocus = useCallback(function (event) {\n        setFocused(true);\n        onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);\n    }, [onFocus]);\n    var handleOnBlur = useCallback(function (event) {\n        setFocused(false);\n        onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);\n    }, [onBlur]);\n    return { focused: focused, handleOnFocus: handleOnFocus, handleOnBlur: handleOnBlur };\n}\n","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n  return {\n    type: INIT_COORDS,\n    payload: {\n      sourceClientOffset: sourceClientOffset || null,\n      clientOffset: clientOffset || null\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// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n  return path.split('.').reduce(function (a, c) {\n    return a && a[c] ? a[c] : defaultValue || null;\n  }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n  return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n  return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n  var map = new Map();\n\n  var insertItem = function insertItem(item) {\n    map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  map.forEach(function (count, key) {\n    if (count === 1) {\n      result.push(key);\n    }\n  });\n  return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n  return itemsA.filter(function (t) {\n    return itemsB.indexOf(t) > -1;\n  });\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n  type: INIT_COORDS,\n  payload: {\n    clientOffset: null,\n    sourceClientOffset: null\n  }\n};\nexport function createBeginDrag(manager) {\n  return function beginDrag() {\n    var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      publishSource: true\n    };\n    var _options$publishSourc = options.publishSource,\n        publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n        clientOffset = options.clientOffset,\n        getSourceClientOffset = options.getSourceClientOffset;\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n    manager.dispatch(setClientOffset(clientOffset));\n    verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n    var sourceId = getDraggableSource(sourceIds, monitor);\n\n    if (sourceId === null) {\n      manager.dispatch(ResetCoordinatesAction);\n      return;\n    } // Get the source client offset\n\n\n    var sourceClientOffset = null;\n\n    if (clientOffset) {\n      if (!getSourceClientOffset) {\n        throw new Error('getSourceClientOffset must be defined');\n      }\n\n      verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n      sourceClientOffset = getSourceClientOffset(sourceId);\n    } // Initialize the full coordinates\n\n\n    manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n    var source = registry.getSource(sourceId);\n    var item = source.beginDrag(monitor, sourceId); // If source.beginDrag returns null, this is an indicator to cancel the drag\n\n    if (item == null) {\n      return undefined;\n    }\n\n    verifyItemIsObject(item);\n    registry.pinSource(sourceId);\n    var itemType = registry.getSourceType(sourceId);\n    return {\n      type: BEGIN_DRAG,\n      payload: {\n        itemType: itemType,\n        item: item,\n        sourceId: sourceId,\n        clientOffset: clientOffset || null,\n        sourceClientOffset: sourceClientOffset || null,\n        isSourcePublic: !!publishSource\n      }\n    };\n  };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n  invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n  sourceIds.forEach(function (sourceId) {\n    invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n  });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n  invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n  invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n  var sourceId = null;\n\n  for (var i = sourceIds.length - 1; i >= 0; i--) {\n    if (monitor.canDragSource(sourceIds[i])) {\n      sourceId = sourceIds[i];\n      break;\n    }\n  }\n\n  return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n  return function publishDragSource() {\n    var monitor = manager.getMonitor();\n\n    if (monitor.isDragging()) {\n      return {\n        type: PUBLISH_DRAG_SOURCE\n      };\n    }\n  };\n}","export function matchesType(targetType, draggedItemType) {\n  if (draggedItemType === null) {\n    return targetType === null;\n  }\n\n  return Array.isArray(targetType) ? targetType.some(function (t) {\n    return t === draggedItemType;\n  }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n  return function hover(targetIdsArg) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        clientOffset = _ref.clientOffset;\n\n    verifyTargetIdsIsArray(targetIdsArg);\n    var targetIds = targetIdsArg.slice(0);\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    checkInvariants(targetIds, monitor, registry);\n    var draggedItemType = monitor.getItemType();\n    removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n    hoverAllTargets(targetIds, monitor, registry);\n    return {\n      type: HOVER,\n      payload: {\n        targetIds: targetIds,\n        clientOffset: clientOffset || null\n      }\n    };\n  };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n  invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n  invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n  for (var i = 0; i < targetIds.length; i++) {\n    var targetId = targetIds[i];\n    invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n    var target = registry.getTarget(targetId);\n    invariant(target, 'Expected targetIds to be registered.');\n  }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n  // Remove those targetIds that don't match the targetType.  This\n  // fixes shallow isOver which would only be non-shallow because of\n  // non-matching targets.\n  for (var i = targetIds.length - 1; i >= 0; i--) {\n    var targetId = targetIds[i];\n    var targetType = registry.getTargetType(targetId);\n\n    if (!matchesType(targetType, draggedItemType)) {\n      targetIds.splice(i, 1);\n    }\n  }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n  // Finally call hover on all matching targets.\n  targetIds.forEach(function (targetId) {\n    var target = registry.getTarget(targetId);\n    target.hover(monitor, targetId);\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n  return function drop() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyInvariants(monitor);\n    var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n    targetIds.forEach(function (targetId, index) {\n      var dropResult = determineDropResult(targetId, index, registry, monitor);\n      var action = {\n        type: DROP,\n        payload: {\n          dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n        }\n      };\n      manager.dispatch(action);\n    });\n  };\n}\n\nfunction verifyInvariants(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n  var target = registry.getTarget(targetId);\n  var dropResult = target ? target.drop(monitor, targetId) : undefined;\n  verifyDropResultType(dropResult);\n\n  if (typeof dropResult === 'undefined') {\n    dropResult = index === 0 ? {} : monitor.getDropResult();\n  }\n\n  return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n  invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n  var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n  targetIds.reverse();\n  return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n  return function endDrag() {\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyIsDragging(monitor);\n    var sourceId = monitor.getSourceId();\n\n    if (sourceId != null) {\n      var source = registry.getSource(sourceId, true);\n      source.endDrag(monitor, sourceId);\n      registry.unpinSource();\n    }\n\n    return {\n      type: END_DRAG\n    };\n  };\n}\n\nfunction verifyIsDragging(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","function _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 _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 { createDragDropActions } from '../actions/dragDrop';\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n  function DragDropManagerImpl(store, monitor) {\n    var _this = this;\n\n    _classCallCheck(this, DragDropManagerImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    _defineProperty(this, \"isSetUp\", false);\n\n    _defineProperty(this, \"handleRefCountChange\", function () {\n      var shouldSetUp = _this.store.getState().refCount > 0;\n\n      if (_this.backend) {\n        if (shouldSetUp && !_this.isSetUp) {\n          _this.backend.setup();\n\n          _this.isSetUp = true;\n        } else if (!shouldSetUp && _this.isSetUp) {\n          _this.backend.teardown();\n\n          _this.isSetUp = false;\n        }\n      }\n    });\n\n    this.store = store;\n    this.monitor = monitor;\n    store.subscribe(this.handleRefCountChange);\n  }\n\n  _createClass(DragDropManagerImpl, [{\n    key: \"receiveBackend\",\n    value: function receiveBackend(backend) {\n      this.backend = backend;\n    }\n  }, {\n    key: \"getMonitor\",\n    value: function getMonitor() {\n      return this.monitor;\n    }\n  }, {\n    key: \"getBackend\",\n    value: function getBackend() {\n      return this.backend;\n    }\n  }, {\n    key: \"getRegistry\",\n    value: function getRegistry() {\n      return this.monitor.registry;\n    }\n  }, {\n    key: \"getActions\",\n    value: function getActions() {\n      /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n      var manager = this;\n      var dispatch = this.store.dispatch;\n\n      function bindActionCreator(actionCreator) {\n        return function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          var action = actionCreator.apply(manager, args);\n\n          if (typeof action !== 'undefined') {\n            dispatch(action);\n          }\n        };\n      }\n\n      var actions = createDragDropActions(this);\n      return Object.keys(actions).reduce(function (boundActions, key) {\n        var action = actions[key];\n        boundActions[key] = bindActionCreator(action);\n        return boundActions;\n      }, {});\n    }\n  }, {\n    key: \"dispatch\",\n    value: function dispatch(action) {\n      this.store.dispatch(action);\n    }\n  }]);\n\n  return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n  return {\n    beginDrag: createBeginDrag(manager),\n    publishDragSource: createPublishDragSource(manager),\n    hover: createHover(manager),\n    drop: createDrop(manager),\n    endDrag: createEndDrag(manager)\n  };\n}","export var strictEquality = function strictEquality(a, b) {\n  return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n  if (!offsetA && !offsetB) {\n    return true;\n  } else if (!offsetA || !offsetB) {\n    return false;\n  } else {\n    return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n  }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n  var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (var i = 0; i < a.length; ++i) {\n    if (!isEqual(a[i], b[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n  initialSourceClientOffset: null,\n  initialClientOffset: null,\n  clientOffset: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case INIT_COORDS:\n    case BEGIN_DRAG:\n      return {\n        initialSourceClientOffset: payload.sourceClientOffset,\n        initialClientOffset: payload.clientOffset,\n        clientOffset: payload.clientOffset\n      };\n\n    case HOVER:\n      if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        clientOffset: payload.clientOffset\n      });\n\n    case END_DRAG:\n    case DROP:\n      return initialState;\n\n    default:\n      return state;\n  }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n  return {\n    type: ADD_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function addTarget(targetId) {\n  return {\n    type: ADD_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}\nexport function removeSource(sourceId) {\n  return {\n    type: REMOVE_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function removeTarget(targetId) {\n  return {\n    type: REMOVE_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n  itemType: null,\n  item: null,\n  sourceId: null,\n  targetIds: [],\n  dropResult: null,\n  didDrop: false,\n  isSourcePublic: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case BEGIN_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: payload.itemType,\n        item: payload.item,\n        sourceId: payload.sourceId,\n        isSourcePublic: payload.isSourcePublic,\n        dropResult: null,\n        didDrop: false\n      });\n\n    case PUBLISH_DRAG_SOURCE:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isSourcePublic: true\n      });\n\n    case HOVER:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: payload.targetIds\n      });\n\n    case REMOVE_TARGET:\n      if (state.targetIds.indexOf(payload.targetId) === -1) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: without(state.targetIds, payload.targetId)\n      });\n\n    case DROP:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        dropResult: payload.dropResult,\n        didDrop: true,\n        targetIds: []\n      });\n\n    case END_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: null,\n        item: null,\n        sourceId: null,\n        dropResult: null,\n        didDrop: false,\n        isSourcePublic: null,\n        targetIds: []\n      });\n\n    default:\n      return state;\n  }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case ADD_SOURCE:\n    case ADD_TARGET:\n      return state + 1;\n\n    case REMOVE_SOURCE:\n    case REMOVE_TARGET:\n      return state - 1;\n\n    default:\n      return state;\n  }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n  if (dirtyIds === NONE) {\n    return false;\n  }\n\n  if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n    return true;\n  }\n\n  var commonIds = intersection(handlerIds, dirtyIds);\n  return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n  var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case HOVER:\n      break;\n\n    case ADD_SOURCE:\n    case ADD_TARGET:\n    case REMOVE_TARGET:\n    case REMOVE_SOURCE:\n      return NONE;\n\n    case BEGIN_DRAG:\n    case PUBLISH_DRAG_SOURCE:\n    case END_DRAG:\n    case DROP:\n    default:\n      return ALL;\n  }\n\n  var _action$payload = action.payload,\n      _action$payload$targe = _action$payload.targetIds,\n      targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n      _action$payload$prevT = _action$payload.prevTargetIds,\n      prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n  var result = xor(targetIds, prevTargetIds);\n  var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n  if (!didChange) {\n    return NONE;\n  } // Check the target ids at the innermost position. If they are valid, add them\n  // to the result\n\n\n  var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n  var innermostTargetId = targetIds[targetIds.length - 1];\n\n  if (prevInnermostTargetId !== innermostTargetId) {\n    if (prevInnermostTargetId) {\n      result.push(prevInnermostTargetId);\n    }\n\n    if (innermostTargetId) {\n      result.push(innermostTargetId);\n    }\n  }\n\n  return result;\n}","export function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  return state + 1;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  return {\n    dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n      type: action.type,\n      payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n        prevTargetIds: get(state, 'dragOperation.targetIds', [])\n      })\n    }),\n    dragOffset: dragOffset(state.dragOffset, action),\n    refCount: refCount(state.refCount, action),\n    dragOperation: dragOperation(state.dragOperation, action),\n    stateId: stateId(state.stateId)\n  };\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n  return {\n    x: a.x + b.x,\n    y: a.y + b.y\n  };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset,\n      initialSourceClientOffset = state.initialSourceClientOffset;\n\n  if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n    return null;\n  }\n\n  return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset;\n\n  if (!clientOffset || !initialClientOffset) {\n    return null;\n  }\n\n  return subtract(clientOffset, initialClientOffset);\n}","function _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 _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 '@react-dnd/invariant';\nimport { matchesType } from '../utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from '../utils/coords';\nimport { areDirty } from '../utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n  function DragDropMonitorImpl(store, registry) {\n    _classCallCheck(this, DragDropMonitorImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    this.store = store;\n    this.registry = registry;\n  }\n\n  _createClass(DragDropMonitorImpl, [{\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        handlerIds: undefined\n      };\n      var handlerIds = options.handlerIds;\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n      var prevStateId = this.store.getState().stateId;\n\n      var handleChange = function handleChange() {\n        var state = _this.store.getState();\n\n        var currentStateId = state.stateId;\n\n        try {\n          var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n          if (!canSkipListener) {\n            listener();\n          }\n        } finally {\n          prevStateId = currentStateId;\n        }\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      var _this2 = this;\n\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      var previousState = this.store.getState().dragOffset;\n\n      var handleChange = function handleChange() {\n        var nextState = _this2.store.getState().dragOffset;\n\n        if (nextState === previousState) {\n          return;\n        }\n\n        previousState = nextState;\n        listener();\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (this.isDragging()) {\n        return false;\n      }\n\n      return source.canDrag(this, sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var target = this.registry.getTarget(targetId);\n      invariant(target, \"Expected to find a valid target. targetId=\".concat(targetId));\n\n      if (!this.isDragging() || this.didDrop()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n      return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      return Boolean(this.getItemType());\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      // undefined on initial render\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId, true);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (!this.isDragging() || !this.isSourcePublic()) {\n        return false;\n      }\n\n      var sourceType = this.registry.getSourceType(sourceId);\n      var draggedItemType = this.getItemType();\n\n      if (sourceType !== draggedItemType) {\n        return false;\n      }\n\n      return source.isDragging(this, sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        shallow: false\n      };\n\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var shallow = options.shallow;\n\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n\n      if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n        return false;\n      }\n\n      var targetIds = this.getTargetIds();\n\n      if (!targetIds.length) {\n        return false;\n      }\n\n      var index = targetIds.indexOf(targetId);\n\n      if (shallow) {\n        return index === targetIds.length - 1;\n      } else {\n        return index > -1;\n      }\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.store.getState().dragOperation.itemType;\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.store.getState().dragOperation.item;\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.store.getState().dragOperation.sourceId;\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.store.getState().dragOperation.targetIds;\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.store.getState().dragOperation.dropResult;\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.store.getState().dragOperation.didDrop;\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return Boolean(this.store.getState().dragOperation.isSourcePublic);\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.store.getState().dragOffset.initialClientOffset;\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.store.getState().dragOffset.initialSourceClientOffset;\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.store.getState().dragOffset.clientOffset;\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return _getSourceClientOffset(this.store.getState().dragOffset);\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n    }\n  }]);\n\n  return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n  HandlerRole[\"SOURCE\"] = \"SOURCE\";\n  HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n  return nextUniqueId++;\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\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n  invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n  invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n  invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n  invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n  invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n  invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n  if (allowArray && Array.isArray(type)) {\n    type.forEach(function (t) {\n      return validateType(t, false);\n    });\n    return;\n  }\n\n  invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","function _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 _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 _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\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from '../actions/registry';\nimport { getNextUniqueId } from '../utils/getNextUniqueId';\nimport { HandlerRole } from '../interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from '../contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n  var id = getNextUniqueId().toString();\n\n  switch (role) {\n    case HandlerRole.SOURCE:\n      return \"S\".concat(id);\n\n    case HandlerRole.TARGET:\n      return \"T\".concat(id);\n\n    default:\n      throw new Error(\"Unknown Handler Role: \".concat(role));\n  }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n  switch (handlerId[0]) {\n    case 'S':\n      return HandlerRole.SOURCE;\n\n    case 'T':\n      return HandlerRole.TARGET;\n\n    default:\n      invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n  }\n}\n\nfunction mapContainsValue(map, searchValue) {\n  var entries = map.entries();\n  var isDone = false;\n\n  do {\n    var _entries$next = entries.next(),\n        done = _entries$next.done,\n        _entries$next$value = _slicedToArray(_entries$next.value, 2),\n        value = _entries$next$value[1];\n\n    if (value === searchValue) {\n      return true;\n    }\n\n    isDone = !!done;\n  } while (!isDone);\n\n  return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n  function HandlerRegistryImpl(store) {\n    _classCallCheck(this, HandlerRegistryImpl);\n\n    _defineProperty(this, \"types\", new Map());\n\n    _defineProperty(this, \"dragSources\", new Map());\n\n    _defineProperty(this, \"dropTargets\", new Map());\n\n    _defineProperty(this, \"pinnedSourceId\", null);\n\n    _defineProperty(this, \"pinnedSource\", null);\n\n    _defineProperty(this, \"store\", void 0);\n\n    this.store = store;\n  }\n\n  _createClass(HandlerRegistryImpl, [{\n    key: \"addSource\",\n    value: function addSource(type, source) {\n      validateType(type);\n      validateSourceContract(source);\n      var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n      this.store.dispatch(_addSource(sourceId));\n      return sourceId;\n    }\n  }, {\n    key: \"addTarget\",\n    value: function addTarget(type, target) {\n      validateType(type, true);\n      validateTargetContract(target);\n      var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n      this.store.dispatch(_addTarget(targetId));\n      return targetId;\n    }\n  }, {\n    key: \"containsHandler\",\n    value: function containsHandler(handler) {\n      return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n    }\n  }, {\n    key: \"getSource\",\n    value: function getSource(sourceId) {\n      var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      var isPinned = includePinned && sourceId === this.pinnedSourceId;\n      var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n      return source;\n    }\n  }, {\n    key: \"getTarget\",\n    value: function getTarget(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.dropTargets.get(targetId);\n    }\n  }, {\n    key: \"getSourceType\",\n    value: function getSourceType(sourceId) {\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      return this.types.get(sourceId);\n    }\n  }, {\n    key: \"getTargetType\",\n    value: function getTargetType(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.types.get(targetId);\n    }\n  }, {\n    key: \"isSourceId\",\n    value: function isSourceId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.SOURCE;\n    }\n  }, {\n    key: \"isTargetId\",\n    value: function isTargetId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.TARGET;\n    }\n  }, {\n    key: \"removeSource\",\n    value: function removeSource(sourceId) {\n      var _this = this;\n\n      invariant(this.getSource(sourceId), 'Expected an existing source.');\n      this.store.dispatch(_removeSource(sourceId));\n      asap(function () {\n        _this.dragSources.delete(sourceId);\n\n        _this.types.delete(sourceId);\n      });\n    }\n  }, {\n    key: \"removeTarget\",\n    value: function removeTarget(targetId) {\n      invariant(this.getTarget(targetId), 'Expected an existing target.');\n      this.store.dispatch(_removeTarget(targetId));\n      this.dropTargets.delete(targetId);\n      this.types.delete(targetId);\n    }\n  }, {\n    key: \"pinSource\",\n    value: function pinSource(sourceId) {\n      var source = this.getSource(sourceId);\n      invariant(source, 'Expected an existing source.');\n      this.pinnedSourceId = sourceId;\n      this.pinnedSource = source;\n    }\n  }, {\n    key: \"unpinSource\",\n    value: function unpinSource() {\n      invariant(this.pinnedSource, 'No source is pinned at the time.');\n      this.pinnedSourceId = null;\n      this.pinnedSource = null;\n    }\n  }, {\n    key: \"addHandler\",\n    value: function addHandler(role, type, handler) {\n      var id = getNextHandlerId(role);\n      this.types.set(id, type);\n\n      if (role === HandlerRole.SOURCE) {\n        this.dragSources.set(id, handler);\n      } else if (role === HandlerRole.TARGET) {\n        this.dropTargets.set(id, handler);\n      }\n\n      return id;\n    }\n  }]);\n\n  return HandlerRegistryImpl;\n}();","import { DragDropManagerImpl } from './classes/DragDropManagerImpl';\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl';\nexport function createDragDropManager(backendFactory) {\n  var globalContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  var backendOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var debugMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  var store = makeStoreInstance(debugMode);\n  var monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n  var manager = new DragDropManagerImpl(store, monitor);\n  var backend = backendFactory(manager, globalContext, backendOptions);\n  manager.receiveBackend(backend);\n  return manager;\n}\n\nfunction makeStoreInstance(debugMode) {\n  // TODO: if we ever make a react-native version of this,\n  // we'll need to consider how to pull off dev-tooling\n  var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n  return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n    name: 'dnd-core',\n    instanceId: 'dnd-core'\n  }));\n}","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Check(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M10 15.586L6.707 12.293 5.293 13.707 10 18.414 19.707 8.707 18.293 7.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function ChevronDown(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"12\", height: \"12\", viewBox: \"0 0 12 12\" }, props),\n        React.createElement(\"path\", { d: \"M5.67,8.35a.44.44,0,0,0,.66,0L9.93,4a.3.3,0,0,0,0-.35A.4.4,0,0,0,9.6,3.5H2.4a.4.4,0,0,0-.35.18.3.3,0,0,0,0,.35Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Circle(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Close(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M16.192 6.344L11.949 10.586 7.707 6.344 6.293 7.758 10.535 12 6.293 16.242 7.707 17.656 11.949 13.414 16.192 17.656 17.606 16.242 13.364 12 17.606 7.758z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Download(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M19 9L15 9 15 3 9 3 9 9 5 9 12 17zM4 19H20V21H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Error(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M9.172 16.242L12 13.414 14.828 16.242 16.242 14.828 13.414 12 16.242 9.172 14.828 7.758 12 10.586 9.172 7.758 7.758 9.172 10.586 12 7.758 14.828z\" }),\n        React.createElement(\"path\", { d: \"M12,22c5.514,0,10-4.486,10-10S17.514,2,12,2S2,6.486,2,12S6.486,22,12,22z M12,4c4.411,0,8,3.589,8,8s-3.589,8-8,8 s-8-3.589-8-8S7.589,4,12,4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Hide(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12 19c.946 0 1.81-.103 2.598-.281l-1.757-1.757C12.568 16.983 12.291 17 12 17c-5.351 0-7.424-3.846-7.926-5 .204-.47.674-1.381 1.508-2.297L4.184 8.305c-1.538 1.667-2.121 3.346-2.132 3.379-.069.205-.069.428 0 .633C2.073 12.383 4.367 19 12 19zM12 5c-1.837 0-3.346.396-4.604.981L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.319-3.319c2.614-1.951 3.547-4.615 3.561-4.657.069-.205.069-.428 0-.633C21.927 11.617 19.633 5 12 5zM16.972 15.558l-2.28-2.28C14.882 12.888 15 12.459 15 12c0-1.641-1.359-3-3-3-.459 0-.888.118-1.277.309L8.915 7.501C9.796 7.193 10.814 7 12 7c5.351 0 7.424 3.846 7.926 5C19.624 12.692 18.76 14.342 16.972 15.558z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Info(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M11 11H13V17H11zM11 7H13V9H11z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Menu(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M4 6H20V8H4zM4 11H20V13H4zM4 16H20V18H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function MultiPage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M20.3,9.5 L20.3,20.3 C20.3,21.2 19.6,22 18.6,22 L11.1,22 L11.1,20.3 L18.6,20.3 L18.6,9.5 L20.3,9.5 Z M15.3,18.7 L5.3,18.7 C4.4,18.7 3.6,18 3.6,17 L3.6,3.7 C3.7,2.7 4.4,2 5.3,2 L12,2 L17,7 L17,17 C17,17.9 16.3,18.7 15.3,18.7 Z M12,7.8 L15.3,7.8 L11.1,3.6 L11.1,7.8 C11.2,7.8 11.5,7.8 12,7.8 Z\" })));\n}\n","// <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path fill='white' d=\"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\"/></svg>\nimport { __assign } from \"tslib\";\nimport React from 'react';\nexport function RotateRight(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Search(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Show(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,9c-1.642,0-3,1.359-3,3c0,1.642,1.358,3,3,3c1.641,0,3-1.358,3-3C15,10.359,13.641,9,12,9z\" }),\n        React.createElement(\"path\", { d: \"M12,5c-7.633,0-9.927,6.617-9.948,6.684L1.946,12l0.105,0.316C2.073,12.383,4.367,19,12,19s9.927-6.617,9.948-6.684 L22.054,12l-0.105-0.316C21.927,11.617,19.633,5,12,5z M12,17c-5.351,0-7.424-3.846-7.926-5C4.578,10.842,6.652,7,12,7 c5.351,0,7.424,3.846,7.926,5C19.422,13.158,17.348,17,12,17z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function SinglePage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M14,2 L6,2 C4.9,2 4,2.9 4,4 L4,20 C4,21.1 4.9,22 6,22 L18,22 C19.1,22 20,21.1 20,20 L20,8 L14,2 Z M14,9 C13.4,9 13,9 13,9 L13,4 L18,9 L14,9 Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Success(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M9.999 13.587L7.7 11.292 6.288 12.708 10.001 16.413 16.707 9.707 15.293 8.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Warning(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M11.001 10H13.001V15H11.001zM11 16H13V18H11z\" }),\n        React.createElement(\"path\", { d: \"M13.768,4.2C13.42,3.545,12.742,3.138,12,3.138s-1.42,0.407-1.768,1.063L2.894,18.064 c-0.331,0.626-0.311,1.361,0.054,1.968C3.313,20.638,3.953,21,4.661,21h14.678c0.708,0,1.349-0.362,1.714-0.968 c0.364-0.606,0.385-1.342,0.054-1.968L13.768,4.2z M4.661,19L12,5.137L19.344,19H4.661z\" })));\n}\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport * as icons from './../../icons';\nexport var Icon = forwardRef(function (_a, ref) {\n    var icon = _a.icon, svgProps = _a.svgProps, className = _a.className, children = _a.children, props = __rest(_a, [\"icon\", \"svgProps\", \"className\", \"children\"]);\n    var iconClass = classnames('ui__base ui__icon', className);\n    var child = useMemo(function () {\n        if (children !== undefined)\n            return children;\n        if (icons === undefined)\n            return undefined;\n        var IconChild = icons[icon];\n        return React.createElement(IconChild, __assign({}, svgProps));\n    }, [children, icon, svgProps]);\n    return (React.createElement(\"i\", __assign({}, props, { className: iconClass, ref: ref }), child));\n});\n","import { useEffect, useState } from 'react';\n/**\n * Will return true if the user is using keyboard navigation, or false if they\n * are using their mouse. The returned value will be true if the Tab key was\n * used more recently than mouse click, and false if not. You can also provide\n * custom behavior by passing your own observable.\n * @param observable Optional custom observable.\n */\nexport function useAccessibleFocus(observable) {\n    if (observable === void 0) { observable = tabObservable; }\n    var _a = useState(observable.value), isUserTabbing = _a[0], setIsUserTabbing = _a[1];\n    useEffect(function () {\n        return observable.subscribe(function () { return setIsUserTabbing(observable.value); });\n    }, [observable]);\n    return isUserTabbing;\n}\nvar AccessibleFocusObservable = /** @class */ (function () {\n    function AccessibleFocusObservable() {\n        var _this = this;\n        this._handleFirstTab = function (event) {\n            if (event.key === 'Tab') {\n                _this._setIsUserTabbing(true);\n                _this._tabToMouseListener();\n            }\n        };\n        this._handleFirstMouse = function () {\n            _this._setIsUserTabbing(false);\n            _this._mouseToTabListener();\n        };\n        this._subscribers = [];\n        this._isUserTabbing = false;\n    }\n    Object.defineProperty(AccessibleFocusObservable.prototype, \"value\", {\n        get: function () {\n            return this._isUserTabbing;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AccessibleFocusObservable.prototype.subscribe = function (subscriber) {\n        // If adding first subscriber, begin listening to document.\n        if (this._subscribers.length === 0) {\n            if (this._isUserTabbing) {\n                this._tabToMouseListener();\n            }\n            else {\n                this._mouseToTabListener();\n            }\n        }\n        var exists = this._subscribers.includes(subscriber);\n        if (!exists)\n            this._subscribers.push(subscriber);\n        return this._unsubscribe(subscriber);\n    };\n    AccessibleFocusObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s !== subscriber; });\n            // If no subscribers, stop listening to document.\n            if (_this._subscribers.length === 0)\n                _this._removeAllListeners();\n        };\n    };\n    AccessibleFocusObservable.prototype._setIsUserTabbing = function (isUserTabbing) {\n        this._isUserTabbing = isUserTabbing;\n        this._subscribers.forEach(function (subscriber) { return subscriber(); });\n    };\n    AccessibleFocusObservable.prototype._tabToMouseListener = function () {\n        window.removeEventListener('keydown', this._handleFirstTab);\n        window.addEventListener('mousedown', this._handleFirstMouse);\n    };\n    AccessibleFocusObservable.prototype._mouseToTabListener = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.addEventListener('keydown', this._handleFirstTab);\n    };\n    AccessibleFocusObservable.prototype._removeAllListeners = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.removeEventListener('keydown', this._handleFirstTab);\n    };\n    return AccessibleFocusObservable;\n}());\nvar tabObservable = new AccessibleFocusObservable();\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';\nimport { useAccessibleFocus, useFocus } from '../../hooks';\nimport { useID } from '../../hooks/useID';\nimport { Icon } from '../Icon';\nexport var Choice = forwardRef(function (_a, ref) {\n    var label = _a.label, leftLabel = _a.leftLabel, className = _a.className, children = _a.children, id = _a.id, radio = _a.radio, isSwitch = _a.isSwitch, center = _a.center, disabledLabelChange = _a.disabledLabelChange, onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur, props = __rest(_a, [\"label\", \"leftLabel\", \"className\", \"children\", \"id\", \"radio\", \"isSwitch\", \"center\", \"disabledLabelChange\", \"onChange\", \"onFocus\", \"onBlur\"]);\n    var inputRef = useRef(null);\n    useImperativeHandle(ref, function () { return inputRef.current; });\n    var isUserTabbing = useAccessibleFocus();\n    var _b = useFocus(onFocus, onBlur), focused = _b.focused, handleOnFocus = _b.handleOnFocus, handleOnBlur = _b.handleOnBlur;\n    var choiceID = useID(id);\n    var _c = useState(function () { var _a, _b, _c; return (_c = (_a = props.checked) !== null && _a !== void 0 ? _a : (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.checked) !== null && _c !== void 0 ? _c : false; }), checked = _c[0], setChecked = _c[1];\n    useEffect(function () {\n        if (props.checked !== undefined)\n            setChecked(props.checked);\n    }, [props.checked]);\n    var handleOnChange = function (event) {\n        if (props.checked === undefined)\n            setChecked(event.target.checked);\n        onChange === null || onChange === void 0 ? void 0 : onChange(event);\n    };\n    // HACK: since there is no way to detect that a radio button is being\n    // unchecked due to form activity, we subscribe all radio buttons to an\n    // observable. When checked changes and props.checked is undefined, this\n    // will trigger the observable which will ping all other subscribers to\n    // check if they have become unchecked, and if so change their internal\n    // state.\n    useEffect(function () {\n        if (props.name && radio) {\n            return observable.subscribe(props.name, function () {\n                if (inputRef.current && inputRef.current.checked !== checked) {\n                    setChecked(inputRef.current.checked);\n                }\n            });\n        }\n        return;\n    }, [checked, props.name, radio]);\n    var choiceClass = classnames('ui__base ui__choice', {\n        'ui__choice--radio': radio,\n        'ui__choice--leftLabel': leftLabel,\n        'ui__choice--checked': checked,\n        'ui__choice--center': center,\n        'ui__choice--disabled': props.disabled,\n    }, className);\n    var inputClass = classnames('ui__choice__input', {\n        'ui__choice__input--switch': isSwitch,\n    });\n    var checkClass = isSwitch\n        ? classnames('ui__choice__input__switch', {\n            'ui__choice__input__switch--checked': checked,\n            'ui__choice__input__switch--disabled': props.disabled,\n            'ui__choice__input__switch--focus': isUserTabbing && focused,\n        })\n        : classnames('ui__choice__input__check', {\n            'ui__choice__input__check--checked': checked,\n            'ui__choice__input__check--disabled': props.disabled,\n            'ui__choice__input__check--focus': isUserTabbing && focused,\n        });\n    var labelClass = classnames('ui__choice__label', {\n        'ui__choice__label--disabled': props.disabled && disabledLabelChange,\n    });\n    var labelElement = useMemo(function () {\n        if (!label)\n            return undefined;\n        return (React.createElement(\"label\", { className: labelClass, htmlFor: choiceID }, label));\n    }, [choiceID, label, labelClass]);\n    return (React.createElement(\"span\", { className: choiceClass },\n        leftLabel ? labelElement : undefined,\n        React.createElement(\"span\", { className: inputClass },\n            isSwitch ? (React.createElement(\"div\", { className: checkClass },\n                React.createElement(\"div\", { className: \"ui__choice__input__toggle\" }))) : (React.createElement(\"div\", { className: checkClass }, checked && !radio ? React.createElement(Icon, { icon: \"Check\", className: \"ui__choice__input__icon\" }) : undefined)),\n            React.createElement(\"input\", __assign({}, props, { id: choiceID, type: radio ? 'radio' : 'checkbox', onChange: handleOnChange, ref: inputRef, onFocus: handleOnFocus, onBlur: handleOnBlur }), children)),\n        !leftLabel ? labelElement : undefined));\n});\n/**\n * Observable helper to notify radio buttons that they have become unchecked.\n */\nvar RadioObservable = /** @class */ (function () {\n    function RadioObservable() {\n        this._subscribers = [];\n    }\n    RadioObservable.prototype.subscribe = function (name, subscriber) {\n        this._trigger(name);\n        this._subscribers.push({ name: name, subscriber: subscriber });\n        return this._unsubscribe(subscriber);\n    };\n    RadioObservable.prototype._trigger = function (name) {\n        this._subscribers.forEach(function (s) {\n            if (name === s.name)\n                s.subscriber();\n        });\n    };\n    RadioObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s.subscriber !== subscriber; });\n        };\n    };\n    return RadioObservable;\n}());\nvar observable = new RadioObservable();\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"forwardedRef\"];\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 React from 'react';\nimport { useTranslation } from './useTranslation';\nimport { getDisplayName } from './utils';\nexport function withTranslation(ns) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function Extend(WrappedComponent) {\n    function I18nextWithTranslation(_ref) {\n      var forwardedRef = _ref.forwardedRef,\n          rest = _objectWithoutProperties(_ref, _excluded);\n\n      var _useTranslation = useTranslation(ns, rest),\n          _useTranslation2 = _slicedToArray(_useTranslation, 3),\n          t = _useTranslation2[0],\n          i18n = _useTranslation2[1],\n          ready = _useTranslation2[2];\n\n      var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n        t: t,\n        i18n: i18n,\n        tReady: ready\n      });\n\n      if (options.withRef && forwardedRef) {\n        passDownProps.ref = forwardedRef;\n      } else if (!options.withRef && forwardedRef) {\n        passDownProps.forwardedRef = forwardedRef;\n      }\n\n      return React.createElement(WrappedComponent, passDownProps);\n    }\n\n    I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat(getDisplayName(WrappedComponent), \")\");\n    I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n    var forwardRef = function forwardRef(props, ref) {\n      return React.createElement(I18nextWithTranslation, Object.assign({}, props, {\n        forwardedRef: ref\n      }));\n    };\n\n    return options.withRef ? React.forwardRef(forwardRef) : I18nextWithTranslation;\n  };\n}","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport { useFocus } from '../../hooks';\nimport { Icon } from '../Icon';\nexport var Input = forwardRef(function (_a, ref) {\n    var _b = _a.message, message = _b === void 0 ? 'default' : _b, messageText = _a.messageText, fillWidth = _a.fillWidth, wrapperClassName = _a.wrapperClassName, padMessageText = _a.padMessageText, className = _a.className, onFocus = _a.onFocus, onBlur = _a.onBlur, rightElement = _a.rightElement, leftElement = _a.leftElement, _c = _a.type, type = _c === void 0 ? 'text' : _c, props = __rest(_a, [\"message\", \"messageText\", \"fillWidth\", \"wrapperClassName\", \"padMessageText\", \"className\", \"onFocus\", \"onBlur\", \"rightElement\", \"leftElement\", \"type\"]);\n    var _d = useFocus(onFocus, onBlur), focused = _d.focused, handleOnFocus = _d.handleOnFocus, handleOnBlur = _d.handleOnBlur;\n    var rightIcon = useMemo(function () {\n        if (rightElement)\n            return rightElement;\n        var icon = undefined;\n        switch (message) {\n            case 'warning':\n                icon = 'Warning';\n                break;\n            case 'error':\n                icon = 'Error';\n                break;\n        }\n        return icon ? React.createElement(Icon, { className: \"ui__input__icon\", icon: icon }) : undefined;\n    }, [message, rightElement]);\n    var wrapperClass = classnames('ui__base ui__input__wrapper', {\n        'ui__input__wrapper--fill': fillWidth,\n        'ui__input__wrapper--pad': padMessageText && !messageText,\n    }, wrapperClassName);\n    var mainClass = classnames('ui__input', \"ui__input--message-\" + message, { 'ui__input--focused': focused });\n    var inputClass = classnames('ui__input__input', { 'ui__input__input--disabled': props.disabled }, className);\n    return (React.createElement(\"div\", { className: wrapperClass },\n        React.createElement(\"div\", { className: mainClass },\n            leftElement,\n            React.createElement(\"input\", __assign({}, props, { type: type, onFocus: handleOnFocus, onBlur: handleOnBlur, className: inputClass, ref: ref })),\n            rightIcon),\n        messageText ? React.createElement(\"div\", { className: \"ui__input__messageText\" }, messageText) : undefined));\n});\n","export function registerTarget(type, target, manager) {\n  var registry = manager.getRegistry();\n  var targetId = registry.addTarget(type, target);\n  return [targetId, function () {\n    return registry.removeTarget(targetId);\n  }];\n}\nexport function registerSource(type, source, manager) {\n  var registry = manager.getRegistry();\n  var sourceId = registry.addSource(type, source);\n  return [sourceId, function () {\n    return registry.removeSource(sourceId);\n  }];\n}","function _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 _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 '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n  function DropTargetMonitorImpl(manager) {\n    _classCallCheck(this, DropTargetMonitorImpl);\n\n    _defineProperty(this, \"internalMonitor\", void 0);\n\n    _defineProperty(this, \"targetId\", null);\n\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DropTargetMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(targetId) {\n      this.targetId = targetId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.targetId;\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      // Cut out early if the target id has not been set. This should prevent errors\n      // where the user has an older version of dnd-core like in\n      // https://github.com/react-dnd/react-dnd/issues/1310\n      if (!this.targetId) {\n        return false;\n      }\n\n      invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n      try {\n        isCallingCanDrop = true;\n        return this.internalMonitor.canDropOnTarget(this.targetId);\n      } finally {\n        isCallingCanDrop = false;\n      }\n    }\n  }, {\n    key: \"isOver\",\n    value: function isOver(options) {\n      if (!this.targetId) {\n        return false;\n      }\n\n      return this.internalMonitor.isOverTarget(this.targetId, options);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DropTargetMonitorImpl;\n}();","function _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 _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 { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n  // The drop target may either be attached via ref or connect function\n  function TargetConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, TargetConnector);\n\n    _defineProperty(this, \"hooks\", wrapConnectorHooks({\n      dropTarget: function dropTarget(node, options) {\n        _this.clearDropTarget();\n\n        _this.dropTargetOptions = options;\n\n        if (isRef(node)) {\n          _this.dropTargetRef = node;\n        } else {\n          _this.dropTargetNode = node;\n        }\n\n        _this.reconnect();\n      }\n    }));\n\n    _defineProperty(this, \"handlerId\", null);\n\n    _defineProperty(this, \"dropTargetRef\", null);\n\n    _defineProperty(this, \"dropTargetNode\", void 0);\n\n    _defineProperty(this, \"dropTargetOptionsInternal\", null);\n\n    _defineProperty(this, \"unsubscribeDropTarget\", void 0);\n\n    _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n    _defineProperty(this, \"lastConnectedDropTarget\", null);\n\n    _defineProperty(this, \"lastConnectedDropTargetOptions\", null);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    this.backend = backend;\n  }\n\n  _createClass(TargetConnector, [{\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dropTarget;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      // if nothing has changed then don't resubscribe\n      var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n      if (didChange) {\n        this.disconnectDropTarget();\n      }\n\n      var dropTarget = this.dropTarget;\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dropTarget) {\n        this.lastConnectedDropTarget = dropTarget;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDropTarget = dropTarget;\n        this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n        this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n      }\n    }\n  }, {\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (newHandlerId === this.handlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"dropTargetOptions\",\n    get: function get() {\n      return this.dropTargetOptionsInternal;\n    },\n    set: function set(options) {\n      this.dropTargetOptionsInternal = options;\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didDropTargetChange\",\n    value: function didDropTargetChange() {\n      return this.lastConnectedDropTarget !== this.dropTarget;\n    }\n  }, {\n    key: \"didOptionsChange\",\n    value: function didOptionsChange() {\n      return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n    }\n  }, {\n    key: \"disconnectDropTarget\",\n    value: function disconnectDropTarget() {\n      if (this.unsubscribeDropTarget) {\n        this.unsubscribeDropTarget();\n        this.unsubscribeDropTarget = undefined;\n      }\n    }\n  }, {\n    key: \"dropTarget\",\n    get: function get() {\n      return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n    }\n  }, {\n    key: \"clearDropTarget\",\n    value: function clearDropTarget() {\n      this.dropTargetRef = null;\n      this.dropTargetNode = null;\n    }\n  }]);\n\n  return TargetConnector;\n}();","function _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 _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 { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n  // The drop target may either be attached via ref or connect function\n  // The drag preview may either be attached via ref or connect function\n  function SourceConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, SourceConnector);\n\n    _defineProperty(this, \"hooks\", wrapConnectorHooks({\n      dragSource: function dragSource(node, options) {\n        _this.clearDragSource();\n\n        _this.dragSourceOptions = options || null;\n\n        if (isRef(node)) {\n          _this.dragSourceRef = node;\n        } else {\n          _this.dragSourceNode = node;\n        }\n\n        _this.reconnectDragSource();\n      },\n      dragPreview: function dragPreview(node, options) {\n        _this.clearDragPreview();\n\n        _this.dragPreviewOptions = options || null;\n\n        if (isRef(node)) {\n          _this.dragPreviewRef = node;\n        } else {\n          _this.dragPreviewNode = node;\n        }\n\n        _this.reconnectDragPreview();\n      }\n    }));\n\n    _defineProperty(this, \"handlerId\", null);\n\n    _defineProperty(this, \"dragSourceRef\", null);\n\n    _defineProperty(this, \"dragSourceNode\", void 0);\n\n    _defineProperty(this, \"dragSourceOptionsInternal\", null);\n\n    _defineProperty(this, \"dragSourceUnsubscribe\", void 0);\n\n    _defineProperty(this, \"dragPreviewRef\", null);\n\n    _defineProperty(this, \"dragPreviewNode\", void 0);\n\n    _defineProperty(this, \"dragPreviewOptionsInternal\", null);\n\n    _defineProperty(this, \"dragPreviewUnsubscribe\", void 0);\n\n    _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n    _defineProperty(this, \"lastConnectedDragSource\", null);\n\n    _defineProperty(this, \"lastConnectedDragSourceOptions\", null);\n\n    _defineProperty(this, \"lastConnectedDragPreview\", null);\n\n    _defineProperty(this, \"lastConnectedDragPreviewOptions\", null);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    this.backend = backend;\n  }\n\n  _createClass(SourceConnector, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (this.handlerId === newHandlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dragSource;\n    }\n  }, {\n    key: \"dragSourceOptions\",\n    get: function get() {\n      return this.dragSourceOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragSourceOptionsInternal = options;\n    }\n  }, {\n    key: \"dragPreviewOptions\",\n    get: function get() {\n      return this.dragPreviewOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragPreviewOptionsInternal = options;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      this.reconnectDragSource();\n      this.reconnectDragPreview();\n    }\n  }, {\n    key: \"reconnectDragSource\",\n    value: function reconnectDragSource() {\n      var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragSource();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragSource) {\n        this.lastConnectedDragSource = dragSource;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragSource = dragSource;\n        this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n        this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n      }\n    }\n  }, {\n    key: \"reconnectDragPreview\",\n    value: function reconnectDragPreview() {\n      var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragPreview();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragPreview) {\n        this.lastConnectedDragPreview = dragPreview;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragPreview = dragPreview;\n        this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n        this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n      }\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didConnectedDragSourceChange\",\n    value: function didConnectedDragSourceChange() {\n      return this.lastConnectedDragSource !== this.dragSource;\n    }\n  }, {\n    key: \"didConnectedDragPreviewChange\",\n    value: function didConnectedDragPreviewChange() {\n      return this.lastConnectedDragPreview !== this.dragPreview;\n    }\n  }, {\n    key: \"didDragSourceOptionsChange\",\n    value: function didDragSourceOptionsChange() {\n      return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n    }\n  }, {\n    key: \"didDragPreviewOptionsChange\",\n    value: function didDragPreviewOptionsChange() {\n      return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n    }\n  }, {\n    key: \"disconnectDragSource\",\n    value: function disconnectDragSource() {\n      if (this.dragSourceUnsubscribe) {\n        this.dragSourceUnsubscribe();\n        this.dragSourceUnsubscribe = undefined;\n      }\n    }\n  }, {\n    key: \"disconnectDragPreview\",\n    value: function disconnectDragPreview() {\n      if (this.dragPreviewUnsubscribe) {\n        this.dragPreviewUnsubscribe();\n        this.dragPreviewUnsubscribe = undefined;\n        this.dragPreviewNode = null;\n        this.dragPreviewRef = null;\n      }\n    }\n  }, {\n    key: \"dragSource\",\n    get: function get() {\n      return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n    }\n  }, {\n    key: \"dragPreview\",\n    get: function get() {\n      return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n    }\n  }, {\n    key: \"clearDragSource\",\n    value: function clearDragSource() {\n      this.dragSourceNode = null;\n      this.dragSourceRef = null;\n    }\n  }, {\n    key: \"clearDragPreview\",\n    value: function clearDragPreview() {\n      this.dragPreviewNode = null;\n      this.dragPreviewRef = null;\n    }\n  }]);\n\n  return SourceConnector;\n}();","function _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 _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 '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n  function DragSourceMonitorImpl(manager) {\n    _classCallCheck(this, DragSourceMonitorImpl);\n\n    _defineProperty(this, \"internalMonitor\", void 0);\n\n    _defineProperty(this, \"sourceId\", null);\n\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DragSourceMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(sourceId) {\n      this.sourceId = sourceId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.sourceId;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingCanDrag = true;\n        return this.internalMonitor.canDragSource(this.sourceId);\n      } finally {\n        isCallingCanDrag = false;\n      }\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      if (!this.sourceId) {\n        return false;\n      }\n\n      invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingIsDragging = true;\n        return this.internalMonitor.isDraggingSource(this.sourceId);\n      } finally {\n        isCallingIsDragging = false;\n      }\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      return this.internalMonitor.isDraggingSource(sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId, options) {\n      return this.internalMonitor.isOverTarget(targetId, options);\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.internalMonitor.getTargetIds();\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return this.internalMonitor.isSourcePublic();\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.internalMonitor.getSourceId();\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      return this.internalMonitor.subscribeToOffsetChange(listener);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      return this.internalMonitor.canDragSource(sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      return this.internalMonitor.canDropOnTarget(targetId);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DragSourceMonitorImpl;\n}();","function _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\nimport { useEffect } from 'react';\nimport { useDragDropManager } from './useDragDropManager';\nimport { useCollector } from './useCollector';\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\n\nexport function useDragLayer(collect) {\n  var dragDropManager = useDragDropManager();\n  var monitor = dragDropManager.getMonitor();\n\n  var _useCollector = useCollector(monitor, collect),\n      _useCollector2 = _slicedToArray(_useCollector, 2),\n      collected = _useCollector2[0],\n      updateCollected = _useCollector2[1];\n\n  useEffect(function () {\n    return monitor.subscribeToOffsetChange(updateCollected);\n  });\n  useEffect(function () {\n    return monitor.subscribeToStateChange(updateCollected);\n  });\n  return collected;\n}","var _excluded = [\"children\"];\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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, memo } from 'react';\nimport { createDragDropManager } from 'dnd-core';\nimport { DndContext } from './DndContext';\nvar refCount = 0;\nvar INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function DndProvider(_ref) {\n  var children = _ref.children,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var _getDndContextValue = getDndContextValue(props),\n      _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n      manager = _getDndContextValue2[0],\n      isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n  /**\n   * If the global context was used to store the DND context\n   * then where theres no more references to it we should\n   * clean it up to avoid memory leaks\n   */\n\n\n  useEffect(function () {\n    if (isGlobalInstance) {\n      var context = getGlobalContext();\n      ++refCount;\n      return function () {\n        if (--refCount === 0) {\n          context[INSTANCE_SYM] = null;\n        }\n      };\n    }\n  }, []);\n  return _jsx(DndContext.Provider, Object.assign({\n    value: manager\n  }, {\n    children: children\n  }), void 0);\n});\n\nfunction getDndContextValue(props) {\n  if ('manager' in props) {\n    var _manager = {\n      dragDropManager: props.manager\n    };\n    return [_manager, false];\n  }\n\n  var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n  var isGlobalInstance = !props.context;\n  return [manager, isGlobalInstance];\n}\n\nfunction createSingletonDndContext(backend) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n  var ctx = context;\n\n  if (!ctx[INSTANCE_SYM]) {\n    ctx[INSTANCE_SYM] = {\n      dragDropManager: createDragDropManager(backend, context, options, debugMode)\n    };\n  }\n\n  return ctx[INSTANCE_SYM];\n}\n\nfunction getGlobalContext() {\n  return typeof global !== 'undefined' ? global : window;\n}","import { useCallback, useEffect, useRef } from 'react';\nimport { focusableElementDomString } from '../utils';\nimport { useCurrentRef } from './useCurrentRef';\n/**\n * A hook for trapping focus within an element. Returns a ref which can be given\n * to any element to trap focus within that element when `locked` is true.\n * @param locked When true, focus will be locked within the element you passed\n * the returned ref to.\n * @param options Options to control the focus trap.\n */\nexport function useFocusTrap(locked, options) {\n    if (locked === void 0) { locked = false; }\n    if (options === void 0) { options = {}; }\n    var focusLastOnUnlock = options.focusLastOnUnlock;\n    var focusRef = useRef(null);\n    // Get the focusable elements. Assumes that focusRef exists. DON'T CALL if\n    // you haven't asserted existance of focusRef.current.\n    var getFocusableElements = useCallback(function () {\n        return focusRef.current.querySelectorAll(focusableElementDomString);\n    }, []);\n    // Cycles tabs within the lock zone when enabled, or prevents default\n    // if there are no elements within the lock (rare edge case).\n    var lockFocus = useCallback(function (event) {\n        // Return if not locked, other key pressed, or no ref.\n        if (!locked || (event && event.key !== 'Tab') || !focusRef.current)\n            return;\n        var focusableElements = getFocusableElements();\n        // If no focusable elements, simply prevent tab default.\n        if (!focusableElements.length)\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        var focusedItemIndex = findFocusableIndex(focusableElements, document.activeElement);\n        // If focused inside and initial call (no event), leave focused element.\n        if (focusedItemIndex !== -1 && !event)\n            return;\n        // If focused outside, or tabbing past last element, cycle to beginning.\n        if (focusedItemIndex === -1 || (!(event === null || event === void 0 ? void 0 : event.shiftKey) && focusedItemIndex === focusableElements.length - 1)) {\n            focusableElements[0].focus();\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        }\n        // If tabbing backwards and focusing first element, cycle to end.\n        if ((event === null || event === void 0 ? void 0 : event.shiftKey) && focusedItemIndex === 0) {\n            focusableElements[focusableElements.length - 1].focus();\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        }\n    }, [getFocusableElements, locked]);\n    // Ensure that user can not focus outside of lock. If an attempt is made\n    // and focusable elements exist inside, will focus first element inside.\n    var checkFocus = useCallback(function (event) {\n        var _a;\n        // Return if not locked or no focus ref.\n        if (!locked || !focusRef.current)\n            return;\n        // Blur focus target if no focusable elements.\n        var focusableElements = getFocusableElements();\n        if (!focusableElements.length)\n            return (_a = event.target) === null || _a === void 0 ? void 0 : _a.blur();\n        // Focus initial element if focused outside.\n        var focusedItemIndex = findFocusableIndex(focusableElements, event.target);\n        if (focusedItemIndex === -1)\n            return focusableElements[0].focus();\n    }, [getFocusableElements, locked]);\n    // Add document listeners for lock focus and check focus\n    useEffect(function () {\n        if (typeof window === 'undefined')\n            return;\n        document.addEventListener('keydown', lockFocus);\n        document.addEventListener('focusin', checkFocus);\n        return function () {\n            document.removeEventListener('keydown', lockFocus);\n            document.removeEventListener('focusin', checkFocus);\n        };\n    }, [checkFocus, lockFocus]);\n    // Keep the ref to focusLastOnUnlock fresh, prevents useEffect refresh.\n    var focusLastOnUnlockRef = useCurrentRef(focusLastOnUnlock);\n    // When locked is changed, will maybe store last element focused prior\n    // to lock being enabled, and will call lockFocus to focus first element\n    // if it exists. Returns when locked is disabled, and will focus prior\n    // element if stored (return focus to previous element).\n    useEffect(function () {\n        var _a;\n        if (typeof window === 'undefined')\n            return;\n        var lastFocusedElement;\n        if (locked) {\n            if (focusLastOnUnlockRef.current && !((_a = focusRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {\n                lastFocusedElement = document.activeElement;\n                lockFocus();\n                return function () { return lastFocusedElement.focus(); };\n            }\n            lockFocus();\n        }\n        return;\n    }, [focusLastOnUnlockRef, lockFocus, locked]);\n    return focusRef;\n}\nexport function findFocusableIndex(elements, toFind) {\n    var index = -1;\n    if (!toFind)\n        return index;\n    for (var i = 0; i < elements.length; i++) {\n        if (elements[i] === toFind) {\n            index = i;\n            break;\n        }\n    }\n    return index;\n}\n","import { useEffect, useRef } from 'react';\nexport function useCurrentRef(toRef) {\n    var toRefRef = useRef(toRef);\n    useEffect(function () {\n        toRefRef.current = toRef;\n    });\n    return toRefRef;\n}\n","import { cloneElement } from 'react';\nimport { useFocusTrap } from '../../hooks';\nexport var FocusTrap = function (_a) {\n    var locked = _a.locked, focusLastOnUnlock = _a.focusLastOnUnlock, children = _a.children;\n    var focusRef = useFocusTrap(locked, { focusLastOnUnlock: focusLastOnUnlock });\n    return cloneElement(children, { ref: focusRef });\n};\n"],"sourceRoot":""}